// Project: https://github.com/microsoftgraph/msgraph-beta-typescript-typings
// Definitions by: Microsoft Graph Team <https://github.com/microsoftgraph>
//                 Michael Mainer <https://github.com/MIchaelMainer>
//                 Peter Ombwa <https://github.com/peombwa>
//                 Mustafa Zengin <https://github.com/zengin>
//                 DeVere Dyett <https://github.com/ddyett>
//                 Nikitha Udaykumar Chettiar <https://github.com/nikithauc>
// TypeScript Version: 2.1

export as namespace microsoftgraphbeta;

export type NullableOption<T> = T | null;

export type AppliedConditionalAccessPolicyResult =
    | "success"
    | "failure"
    | "notApplied"
    | "notEnabled"
    | "unknown"
    | "unknownFutureValue"
    | "reportOnlySuccess"
    | "reportOnlyFailure"
    | "reportOnlyNotApplied"
    | "reportOnlyInterrupted";
export type AuthenticationMethodFeature =
    | "ssprRegistered"
    | "ssprEnabled"
    | "ssprCapable"
    | "passwordlessCapable"
    | "mfaCapable";
export type AuthMethodsType =
    | "email"
    | "mobileSMS"
    | "mobilePhone"
    | "officePhone"
    | "securityQuestion"
    | "appNotification"
    | "appNotificationCode"
    | "appNotificationAndCode"
    | "appPassword"
    | "fido"
    | "alternateMobilePhone"
    | "mobilePhoneAndSMS"
    | "unknownFutureValue";
export type AzureADLicenseType = "none" | "free" | "basic" | "premiumP1" | "premiumP2" | "unknownFutureValue";
export type ConditionalAccessConditions =
    | "none"
    | "application"
    | "users"
    | "devicePlatform"
    | "location"
    | "clientType"
    | "signInRisk"
    | "userRisk"
    | "time"
    | "deviceState"
    | "client"
    | "ipAddressSeenByAzureAD"
    | "ipAddressSeenByResourceProvider"
    | "unknownFutureValue";
export type ConditionalAccessRule =
    | "allApps"
    | "firstPartyApps"
    | "office365"
    | "appId"
    | "acr"
    | "appFilter"
    | "allUsers"
    | "guest"
    | "groupId"
    | "roleId"
    | "userId"
    | "allDevicePlatforms"
    | "devicePlatform"
    | "allLocations"
    | "insideCorpnet"
    | "allTrustedLocations"
    | "locationId"
    | "allDevices"
    | "deviceFilter"
    | "deviceState"
    | "unknownFutureValue"
    | "deviceFilterIncludeRuleNotMatched"
    | "allDeviceStates";
export type ConditionalAccessStatus = "success" | "failure" | "notApplied" | "unknownFutureValue";
export type ExpirationRequirement =
    | "rememberMultifactorAuthenticationOnTrustedDevices"
    | "tenantTokenLifetimePolicy"
    | "audienceTokenLifetimePolicy"
    | "signInFrequencyPeriodicReauthentication"
    | "ngcMfa"
    | "signInFrequencyEveryTime"
    | "unknownFutureValue";
export type FeatureType = "registration" | "reset" | "unknownFutureValue";
export type GroupType = "unifiedGroups" | "azureAD" | "unknownFutureValue";
export type IncludedUserRoles = "all" | "privilegedAdmin" | "admin" | "user" | "unknownFutureValue";
export type IncludedUserTypes = "all" | "member" | "guest" | "unknownFutureValue";
export type InitiatorType = "user" | "application" | "system" | "unknownFutureValue";
export type MigrationStatus = "ready" | "needsReview" | "additionalStepsRequired" | "unknownFutureValue";
export type NetworkType =
    | "intranet"
    | "extranet"
    | "namedNetwork"
    | "trusted"
    | "trustedNamedLocation"
    | "unknownFutureValue";
export type OperationResult = "success" | "failure" | "timeout" | "unknownFutureValue";
export type ProvisioningAction =
    | "other"
    | "create"
    | "delete"
    | "disable"
    | "update"
    | "stagedDelete"
    | "unknownFutureValue";
export type ProvisioningResult = "success" | "failure" | "skipped" | "warning" | "unknownFutureValue";
export type ProvisioningStatusErrorCategory = "failure" | "nonServiceFailure" | "success" | "unknownFutureValue";
export type ProvisioningStepType =
    | "import"
    | "scoping"
    | "matching"
    | "processing"
    | "referenceResolution"
    | "export"
    | "unknownFutureValue";
export type RegistrationAuthMethod =
    | "email"
    | "mobilePhone"
    | "officePhone"
    | "securityQuestion"
    | "appNotification"
    | "appCode"
    | "alternateMobilePhone"
    | "fido"
    | "appPassword"
    | "unknownFutureValue";
export type RegistrationStatusType = "registered" | "enabled" | "capable" | "mfaRegistered" | "unknownFutureValue";
export type RequirementProvider =
    | "user"
    | "request"
    | "servicePrincipal"
    | "v1ConditionalAccess"
    | "multiConditionalAccess"
    | "tenantSessionRiskPolicy"
    | "accountCompromisePolicies"
    | "v1ConditionalAccessDependency"
    | "v1ConditionalAccessPolicyIdRequested"
    | "mfaRegistrationRequiredByIdentityProtectionPolicy"
    | "baselineProtection"
    | "mfaRegistrationRequiredByBaselineProtection"
    | "mfaRegistrationRequiredByMultiConditionalAccess"
    | "enforcedForCspAdmins"
    | "securityDefaults"
    | "mfaRegistrationRequiredBySecurityDefaults"
    | "proofUpCodeRequest"
    | "crossTenantOutboundRule"
    | "gpsLocationCondition"
    | "riskBasedPolicy"
    | "unknownFutureValue";
export type RiskDetail =
    | "none"
    | "adminGeneratedTemporaryPassword"
    | "userPerformedSecuredPasswordChange"
    | "userPerformedSecuredPasswordReset"
    | "adminConfirmedSigninSafe"
    | "aiConfirmedSigninSafe"
    | "userPassedMFADrivenByRiskBasedPolicy"
    | "adminDismissedAllRiskForUser"
    | "adminConfirmedSigninCompromised"
    | "hidden"
    | "adminConfirmedUserCompromised"
    | "unknownFutureValue";
export type RiskEventType =
    | "unlikelyTravel"
    | "anonymizedIPAddress"
    | "maliciousIPAddress"
    | "unfamiliarFeatures"
    | "malwareInfectedIPAddress"
    | "suspiciousIPAddress"
    | "leakedCredentials"
    | "investigationsThreatIntelligence"
    | "generic"
    | "adminConfirmedUserCompromised"
    | "mcasImpossibleTravel"
    | "mcasSuspiciousInboxManipulationRules"
    | "investigationsThreatIntelligenceSigninLinked"
    | "maliciousIPAddressValidCredentialsBlockedIP"
    | "unknownFutureValue";
export type RiskLevel = "low" | "medium" | "high" | "hidden" | "none" | "unknownFutureValue";
export type RiskState =
    | "none"
    | "confirmedSafe"
    | "remediated"
    | "dismissed"
    | "atRisk"
    | "confirmedCompromised"
    | "unknownFutureValue";
export type SignInAccessType =
    | "none"
    | "b2bCollaboration"
    | "b2bDirectConnect"
    | "microsoftSupport"
    | "serviceProvider"
    | "unknownFutureValue";
export type SignInIdentifierType =
    | "userPrincipalName"
    | "phoneNumber"
    | "proxyAddress"
    | "qrCode"
    | "onPremisesUserPrincipalName"
    | "unknownFutureValue";
export type SignInUserType = "member" | "guest" | "unknownFutureValue";
export type TokenIssuerType = "AzureAD" | "ADFederationServices" | "UnknownFutureValue";
export type UsageAuthMethod =
    | "email"
    | "mobileSMS"
    | "mobileCall"
    | "officePhone"
    | "securityQuestion"
    | "appNotification"
    | "appCode"
    | "alternateMobileCall"
    | "fido"
    | "appPassword"
    | "unknownFutureValue";
export type AnalyticsActivityType = "Email" | "Meeting" | "Focus" | "Chat" | "Call";
export type AdvancedConfigState = "default" | "enabled" | "disabled" | "unknownFutureValue";
export type AuthenticationMethodState = "enabled" | "disabled";
export type AuthenticationMethodTargetType = "user" | "group" | "unknownFutureValue";
export type AuthenticatorAppContextType = "location" | "app" | "unknownFutureValue";
export type AuthenticatorAppFeatureSettings = "requireNumberMatching";
export type ExternalEmailOtpState = "default" | "enabled" | "disabled" | "unknownFutureValue";
export type Fido2RestrictionEnforcementType = "allow" | "block" | "unknownFutureValue";
export type MicrosoftAuthenticatorAuthenticationMode = "deviceBasedPush" | "push" | "any";
export type SecurityQuestionType = "predefined" | "custom";
export type VolumeType = "operatingSystemVolume" | "fixedDataVolume" | "removableDataVolume" | "unknownFutureValue";
export type BookingInvoiceStatus = "draft" | "reviewing" | "open" | "canceled" | "paid" | "corrective";
export type BookingPriceType =
    | "undefined"
    | "fixedPrice"
    | "startingAt"
    | "hourly"
    | "free"
    | "priceVaries"
    | "callUs"
    | "notSet";
export type BookingReminderRecipients = "allAttendees" | "staff" | "customer";
export type BookingStaffRole = "guest" | "administrator" | "viewer" | "externalGuest";
export type DayOfWeek = "sunday" | "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday";
export type LocationType =
    | "default"
    | "conferenceRoom"
    | "homeAddress"
    | "businessAddress"
    | "geoCoordinates"
    | "streetAddress"
    | "hotel"
    | "restaurant"
    | "localBusiness"
    | "postalAddress";
export type LocationUniqueIdType = "unknown" | "locationStore" | "directory" | "private" | "bing";
export type PhysicalAddressType = "unknown" | "home" | "business" | "other";
export type ActionState = "none" | "pending" | "canceled" | "active" | "done" | "failed" | "notSupported";
export type CloudPcAuditActivityOperationType = "create" | "delete" | "patch" | "other";
export type CloudPcAuditActivityResult = "success" | "clientError" | "failure" | "timeout" | "other";
export type CloudPcAuditActorType = "itPro" | "application" | "partner" | "unknown";
export type CloudPcAuditCategory = "cloudPC" | "other";
export type CloudPcDeviceImageStatus = "pending" | "ready" | "failed";
export type CloudPcDeviceImageStatusDetails =
    | "internalServerError"
    | "sourceImageNotFound"
    | "osVersionNotSupported"
    | "sourceImageInvalid";
export type CloudPcOnPremisesConnectionHealthCheckErrorType =
    | "dnsCheckFqdnNotFound"
    | "dnsCheckUnknownError"
    | "adJoinCheckFqdnNotFound"
    | "adJoinCheckIncorrectCredentials"
    | "adJoinCheckOrganizationalUnitNotFound"
    | "adJoinCheckOrganizationalUnitIncorrectFormat"
    | "adJoinCheckComputerObjectAlreadyExists"
    | "adJoinCheckAccessDenied"
    | "adJoinCheckUnknownError"
    | "endpointConnectivityCheckCloudPcUrlNotAllowListed"
    | "endpointConnectivityCheckWVDUrlNotAllowListed"
    | "endpointConnectivityCheckIntuneUrlNotAllowListed"
    | "endpointConnectivityCheckUnknownError"
    | "azureAdDeviceSyncCheckDeviceNotFound"
    | "azureAdDeviceSyncCheckLongSyncCircle"
    | "azureAdDeviceSyncCheckUnknownError"
    | "resourceAvailabilityCheckNoSubnetIP"
    | "resourceAvailabilityCheckSubscriptionDisabled"
    | "resourceAvailabilityCheckAzurePolicyViolation"
    | "resourceAvailabilityCheckSubscriptionNotFound"
    | "resourceAvailabilityCheckSubscriptionTransferred"
    | "resourceAvailabilityCheckGeneralSubscriptionError"
    | "resourceAvailabilityCheckUnsupportedVNetRegion"
    | "resourceAvailabilityCheckUnknownError"
    | "permissionCheckNoSubscriptionReaderRole"
    | "permissionCheckNoResourceGroupOwnerRole"
    | "permissionCheckNoVNetContributorRole"
    | "permissionCheckNoResourceGroupNetworkContributorRole"
    | "permissionCheckUnknownError"
    | "internalServerErrorDeploymentCanceled"
    | "internalServerErrorAllocateResourceFailed"
    | "internalServerErrorVMDeploymentTimeout"
    | "internalServerErrorUnableToRunDscScript"
    | "internalServerUnknownError";
export type CloudPcOnPremisesConnectionStatus =
    | "pending"
    | "running"
    | "passed"
    | "failed"
    | "warning"
    | "unknownFutureValue";
export type CloudPcProvisioningPolicyImageType = "gallery" | "custom";
export type CloudPcStatus =
    | "notProvisioned"
    | "provisioning"
    | "provisioned"
    | "inGracePeriod"
    | "deprovisioning"
    | "failed"
    | "provisionedWithWarnings"
    | "resizing"
    | "unknownFutureValue";
export type UsageRightState = "active" | "inactive" | "warning" | "suspended" | "unknownFutureValue";
export type BodyType = "text" | "html";
export type IdentityUserFlowAttributeDataType =
    | "string"
    | "boolean"
    | "int64"
    | "stringCollection"
    | "dateTime"
    | "unknownFutureValue";
export type IdentityUserFlowAttributeInputType =
    | "textBox"
    | "dateTimeDropdown"
    | "radioSingleSelect"
    | "dropdownSingleSelect"
    | "emailBox"
    | "checkboxMultiSelect";
export type IdentityUserFlowAttributeType = "builtIn" | "custom" | "required" | "unknownFutureValue";
export type OpenIdConnectResponseMode = "form_post" | "query" | "unknownFutureValue";
export type OpenIdConnectResponseTypes = "code" | "id_token" | "token";
export type UserFlowType =
    | "signUp"
    | "signIn"
    | "signUpOrSignIn"
    | "passwordReset"
    | "profileUpdate"
    | "resourceOwner"
    | "unknownFutureValue";
export type AccessScope = "inOrganization" | "notInOrganization";
export type Alignment = "left" | "right" | "center";
export type ApplicationMode = "manual" | "automatic" | "recommended";
export type ClassificationMethod = "patternMatch" | "exactDataMatch" | "fingerprint" | "machineLearning";
export type Component = "Label";
export type DlpAction = "notifyUser" | "blockAccess" | "deviceRestriction";
export type EncryptWith = "template" | "userDefinedRights";
export type GroupPrivacy = "unspecified" | "public" | "private" | "unknownFutureValue";
export type LobbyBypassScope =
    | "organizer"
    | "organization"
    | "organizationAndFederated"
    | "everyone"
    | "unknownFutureValue";
export type MlClassificationMatchTolerance = "exact" | "near";
export type OnlineMeetingForwarders = "everyone" | "organizer" | "unknownFutureValue";
export type OnlineMeetingPresenters =
    | "everyone"
    | "organization"
    | "roleIsPresenter"
    | "organizer"
    | "unknownFutureValue";
export type OverrideOption =
    | "notAllowed"
    | "allowFalsePositiveOverride"
    | "allowWithJustification"
    | "allowWithoutJustification";
export type PageOrientation = "horizontal" | "diagonal";
export type RestrictionAction = "warn" | "audit" | "block";
export type RestrictionTrigger =
    | "copyPaste"
    | "copyToNetworkShare"
    | "copyToRemovableMedia"
    | "screenCapture"
    | "print"
    | "cloudEgress"
    | "unallowedApps";
export type RuleMode = "audit" | "auditAndNotify" | "enforce" | "pendingDeletion" | "test";
export type SensitiveTypeScope = "fullDocument" | "partialDocument";
export type SensitiveTypeSource = "outOfBox" | "tenant";
export type SensitivityLabelTarget = "email" | "site" | "unifiedGroup" | "unknownFutureValue";
export type SiteAccessType = "block" | "full" | "limited";
export type PolicyScope = "none" | "all" | "selected" | "unknownFutureValue";
export type AllowInvitesFrom =
    | "none"
    | "adminsAndGuestInviters"
    | "adminsGuestInvitersAndAllMembers"
    | "everyone"
    | "unknownFutureValue";
export type AppCredentialRestrictionType = "passwordAddition" | "passwordLifetime" | "unknownFutureValue";
export type PermissionClassificationType = "low" | "medium" | "high" | "unknownFutureValue";
export type PermissionType = "application" | "delegated" | "delegatedUserConsentable";
export type PhoneType =
    | "home"
    | "business"
    | "mobile"
    | "other"
    | "assistant"
    | "homeFax"
    | "businessFax"
    | "otherFax"
    | "pager"
    | "radio";
export type EducationAddedStudentAction = "none" | "assignIfOpen" | "unknownFutureValue";
export type EducationAddToCalendarOptions =
    | "none"
    | "studentsAndPublisher"
    | "studentsAndTeamOwners"
    | "unknownFutureValue";
export type EducationAssignmentStatus = "draft" | "published" | "assigned" | "unknownFutureValue";
export type EducationSubmissionStatus = "working" | "submitted" | "released" | "returned" | "unknownFutureValue";
export type ContactRelationship =
    | "parent"
    | "relative"
    | "aide"
    | "doctor"
    | "guardian"
    | "child"
    | "other"
    | "unknownFutureValue";
export type EducationSynchronizationProfileState =
    | "deleting"
    | "deletionFailed"
    | "provisioningFailed"
    | "provisioned"
    | "provisioning"
    | "unknownFutureValue";
export type EducationSynchronizationStatus =
    | "paused"
    | "inProgress"
    | "success"
    | "error"
    | "validationError"
    | "quarantined"
    | "unknownFutureValue"
    | "extracting"
    | "validating";
export type EducationUserRole = "student" | "teacher" | "none" | "unknownFutureValue" | "faculty";
export type EducationExternalSource = "sis" | "manual" | "unknownFutureValue" | "lms";
export type EducationGender = "female" | "male" | "other" | "unknownFutureValue";
export type WorkbookOperationStatus = "notStarted" | "running" | "succeeded" | "failed";
export type ActivityDomain = "unknown" | "work" | "personal" | "unrestricted";
export type AttendeeType = "required" | "optional" | "resource";
export type FreeBusyStatus = "unknown" | "free" | "tentative" | "busy" | "oof" | "workingElsewhere";
export type BookingType = "unknown" | "standard" | "reserved";
export type AttachmentType = "file" | "item" | "reference";
export type AutomaticRepliesStatus = "disabled" | "alwaysEnabled" | "scheduled";
export type CalendarColor =
    | "auto"
    | "lightBlue"
    | "lightGreen"
    | "lightOrange"
    | "lightGray"
    | "lightYellow"
    | "lightTeal"
    | "lightPink"
    | "lightBrown"
    | "lightRed"
    | "maxColor";
export type CalendarRoleType =
    | "none"
    | "freeBusyRead"
    | "limitedRead"
    | "read"
    | "write"
    | "delegateWithoutPrivateEventAccess"
    | "delegateWithPrivateEventAccess"
    | "custom";
export type CalendarSharingAction = "accept" | "acceptAndViewCalendar" | "viewCalendar" | "addThisCalendar";
export type CalendarSharingActionImportance = "primary" | "secondary";
export type CalendarSharingActionType = "accept";
export type CategoryColor =
    | "none"
    | "preset0"
    | "preset1"
    | "preset2"
    | "preset3"
    | "preset4"
    | "preset5"
    | "preset6"
    | "preset7"
    | "preset8"
    | "preset9"
    | "preset10"
    | "preset11"
    | "preset12"
    | "preset13"
    | "preset14"
    | "preset15"
    | "preset16"
    | "preset17"
    | "preset18"
    | "preset19"
    | "preset20"
    | "preset21"
    | "preset22"
    | "preset23"
    | "preset24";
export type DelegateMeetingMessageDeliveryOptions =
    | "sendToDelegateAndInformationToPrincipal"
    | "sendToDelegateAndPrincipal"
    | "sendToDelegateOnly";
export type EmailType = "unknown" | "work" | "personal" | "main" | "other";
export type EventType = "singleInstance" | "occurrence" | "exception" | "seriesMaster";
export type ExchangeIdFormat = "entryId" | "ewsId" | "immutableEntryId" | "restId" | "restImmutableEntryId";
export type ExternalAudienceScope = "none" | "contactsOnly" | "all";
export type FollowupFlagStatus = "notFlagged" | "complete" | "flagged";
export type GroupAccessType = "none" | "private" | "secret" | "public";
export type Importance = "low" | "normal" | "high";
export type InferenceClassificationType = "focused" | "other";
export type MailboxRecipientType = "unknown" | "user" | "linked" | "shared" | "room" | "equipment" | "others";
export type MailTipsType =
    | "automaticReplies"
    | "mailboxFullStatus"
    | "customMailTip"
    | "externalMemberCount"
    | "totalMemberCount"
    | "maxMessageSize"
    | "deliveryRestriction"
    | "moderationStatus"
    | "recipientScope"
    | "recipientSuggestions";
export type MeetingMessageType =
    | "none"
    | "meetingRequest"
    | "meetingCancelled"
    | "meetingAccepted"
    | "meetingTentativelyAccepted"
    | "meetingDeclined";
export type MessageActionFlag =
    | "any"
    | "call"
    | "doNotForward"
    | "followUp"
    | "fyi"
    | "forward"
    | "noResponseNecessary"
    | "read"
    | "reply"
    | "replyToAll"
    | "review";
export type OnlineMeetingProviderType = "unknown" | "skypeForBusiness" | "skypeForConsumer" | "teamsForBusiness";
export type RecipientScopeType = "none" | "internal" | "external" | "externalPartner" | "externalNonPartner";
export type RecurrencePatternType =
    | "daily"
    | "weekly"
    | "absoluteMonthly"
    | "relativeMonthly"
    | "absoluteYearly"
    | "relativeYearly";
export type RecurrenceRangeType = "endDate" | "noEnd" | "numbered";
export type ReferenceAttachmentPermission =
    | "other"
    | "view"
    | "edit"
    | "anonymousView"
    | "anonymousEdit"
    | "organizationView"
    | "organizationEdit";
export type ReferenceAttachmentProvider = "other" | "oneDriveBusiness" | "oneDriveConsumer" | "dropbox";
export type ResponseType = "none" | "organizer" | "tentativelyAccepted" | "accepted" | "declined" | "notResponded";
export type Sensitivity = "normal" | "personal" | "private" | "confidential";
export type TaskStatus = "notStarted" | "inProgress" | "completed" | "waitingOnOthers" | "deferred";
export type TimeZoneStandard = "windows" | "iana";
export type WebsiteType = "other" | "home" | "work" | "blog" | "profile";
export type WeekIndex = "first" | "second" | "third" | "fourth" | "last";
export type ColumnTypes =
    | "note"
    | "text"
    | "choice"
    | "multichoice"
    | "number"
    | "currency"
    | "dateTime"
    | "lookup"
    | "boolean"
    | "user"
    | "url"
    | "calculated"
    | "location"
    | "geolocation"
    | "term"
    | "multiterm"
    | "thumbnail"
    | "approvalStatus"
    | "unknownFutureValue";
export type DriveItemSourceApplication =
    | "teams"
    | "yammer"
    | "sharePoint"
    | "oneDrive"
    | "stream"
    | "powerPoint"
    | "office"
    | "unknownFutureValue";
export type MediaSourceContentCategory =
    | "meeting"
    | "liveStream"
    | "presentation"
    | "screenRecording"
    | "unknownFutureValue";
export type AgentStatus = "active" | "inactive";
export type ConnectorGroupRegion = "nam" | "eur" | "aus" | "asia" | "ind" | "unknownFutureValue";
export type ConnectorGroupType = "applicationProxy";
export type ConnectorStatus = "active" | "inactive";
export type ExternalAuthenticationType = "passthru" | "aadPreAuthentication";
export type KerberosSignOnMappingAttributeType =
    | "userPrincipalName"
    | "onPremisesUserPrincipalName"
    | "userPrincipalUsername"
    | "onPremisesUserPrincipalUsername"
    | "onPremisesSAMAccountName";
export type OnPremisesPublishingType =
    | "applicationProxy"
    | "exchangeOnline"
    | "authentication"
    | "provisioning"
    | "intunePfx"
    | "oflineDomainJoin"
    | "unknownFutureValue";
export type SingleSignOnMode =
    | "none"
    | "onPremisesKerberos"
    | "saml"
    | "pingHeaderBased"
    | "aadHeaderBased"
    | "unknownFutureValue";
export type StagedFeatureName =
    | "passthroughAuthentication"
    | "seamlessSso"
    | "passwordHashSync"
    | "emailAsAlternateId"
    | "unknownFutureValue";
export type MembershipRuleProcessingStatusDetails =
    | "NotStarted"
    | "Running"
    | "Failed"
    | "Succeeded"
    | "UnsupportedFutureValue";
export type AttributeFlowBehavior = "FlowWhenChanged" | "FlowAlways";
export type AttributeFlowType = "Always" | "ObjectAddOnly" | "MultiValueAddOnly" | "ValueAddOnly" | "AttributeAddOnly";
export type AttributeMappingSourceType = "Attribute" | "Constant" | "Function";
export type AttributeType = "String" | "Integer" | "Reference" | "Binary" | "Boolean" | "DateTime";
export type DirectoryDefinitionDiscoverabilities =
    | "None"
    | "AttributeNames"
    | "AttributeDataTypes"
    | "AttributeReadOnly"
    | "ReferenceAttributes"
    | "UnknownFutureValue";
export type EntryExportStatus = "Noop" | "Success" | "RetryableError" | "PermanentError" | "Error";
export type EntrySyncOperation = "None" | "Add" | "Delete" | "Update";
export type Mutability = "ReadWrite" | "ReadOnly" | "Immutable" | "WriteOnly";
export type ObjectFlowTypes = "None" | "Add" | "Update" | "Delete";
export type QuarantineReason =
    | "EncounteredBaseEscrowThreshold"
    | "EncounteredTotalEscrowThreshold"
    | "EncounteredEscrowProportionThreshold"
    | "EncounteredQuarantineException"
    | "Unknown"
    | "QuarantinedOnDemand"
    | "TooManyDeletes"
    | "IngestionInterrupted";
export type ScopeOperatorMultiValuedComparisonType = "All" | "Any";
export type ScopeOperatorType = "Binary" | "Unary";
export type SynchronizationJobRestartScope =
    | "None"
    | "ConnectorDataStore"
    | "Escrows"
    | "Watermark"
    | "QuarantineState"
    | "Full"
    | "ForceDeletes";
export type SynchronizationScheduleState = "Active" | "Disabled" | "Paused";
export type SynchronizationSecret =
    | "None"
    | "UserName"
    | "Password"
    | "SecretToken"
    | "AppKey"
    | "BaseAddress"
    | "ClientIdentifier"
    | "ClientSecret"
    | "SingleSignOnType"
    | "Sandbox"
    | "Url"
    | "Domain"
    | "ConsumerKey"
    | "ConsumerSecret"
    | "TokenKey"
    | "TokenExpiration"
    | "Oauth2AccessToken"
    | "Oauth2AccessTokenCreationTime"
    | "Oauth2RefreshToken"
    | "SyncAll"
    | "InstanceName"
    | "Oauth2ClientId"
    | "Oauth2ClientSecret"
    | "CompanyId"
    | "UpdateKeyOnSoftDelete"
    | "SynchronizationSchedule"
    | "SystemOfRecord"
    | "SandboxName"
    | "EnforceDomain"
    | "SyncNotificationSettings"
    | "SkipOutOfScopeDeletions"
    | "Oauth2AuthorizationCode"
    | "Oauth2RedirectUri"
    | "ApplicationTemplateIdentifier"
    | "Oauth2TokenExchangeUri"
    | "Oauth2AuthorizationUri"
    | "AuthenticationType"
    | "Server"
    | "PerformInboundEntitlementGrants"
    | "HardDeletesEnabled"
    | "SyncAgentCompatibilityKey"
    | "SyncAgentADContainer"
    | "ValidateDomain"
    | "TestReferences"
    | "ConnectionString";
export type SynchronizationStatusCode = "NotConfigured" | "NotRun" | "Active" | "Paused" | "Quarantine";
export type SynchronizationTaskExecutionResult = "Succeeded" | "Failed" | "EntryLevelErrors";
export type AccessReviewHistoryDecisionFilter =
    | "approve"
    | "deny"
    | "notReviewed"
    | "dontKnow"
    | "notNotified"
    | "unknownFutureValue";
export type AccessReviewHistoryStatus = "done" | "inprogress" | "error" | "requested" | "unknownFutureValue";
export type AccessReviewInstanceDecisionItemFilterByCurrentUserOptions = "reviewer" | "unknownFutureValue";
export type AccessReviewInstanceFilterByCurrentUserOptions = "reviewer" | "unknownFutureValue";
export type AccessReviewScheduleDefinitionFilterByCurrentUserOptions = "reviewer" | "unknownFutureValue";
export type ApprovalFilterByCurrentUserOptions = "target" | "createdBy" | "approver" | "unknownFutureValue";
export type ConsentRequestFilterByCurrentUserOptions = "reviewer" | "unknownFutureValue";
export type AgreementAcceptanceState = "accepted" | "declined" | "unknownFutureValue";
export type ActivityType = "signin" | "user" | "unknownFutureValue";
export type CloudAppSecuritySessionControlType =
    | "mcasConfigured"
    | "monitorOnly"
    | "blockDownloads"
    | "unknownFutureValue";
export type ConditionalAccessClientApp =
    | "all"
    | "browser"
    | "mobileAppsAndDesktopClients"
    | "exchangeActiveSync"
    | "easSupported"
    | "other"
    | "unknownFutureValue";
export type ConditionalAccessDevicePlatform =
    | "android"
    | "iOS"
    | "windows"
    | "windowsPhone"
    | "macOS"
    | "all"
    | "unknownFutureValue";
export type ConditionalAccessGrantControl =
    | "block"
    | "mfa"
    | "compliantDevice"
    | "domainJoinedDevice"
    | "approvedApplication"
    | "compliantApplication"
    | "passwordChange"
    | "unknownFutureValue";
export type ConditionalAccessPolicyState = "enabled" | "disabled" | "enabledForReportingButNotEnforced";
export type CountryLookupMethodType = "clientIpAddress" | "authenticatorAppGps" | "unknownFutureValue";
export type FilterMode = "include" | "exclude";
export type PersistentBrowserSessionMode = "always" | "never";
export type RiskDetectionTimingType = "notDefined" | "realtime" | "nearRealtime" | "offline" | "unknownFutureValue";
export type SigninFrequencyType = "days" | "hours";
export type AccessPackageAssignmentFilterByCurrentUserOptions = "target" | "createdBy" | "unknownFutureValue";
export type AccessPackageAssignmentRequestFilterByCurrentUserOptions =
    | "target"
    | "createdBy"
    | "approver"
    | "unknownFutureValue";
export type AccessPackageFilterByCurrentUserOptions = "allowedRequestor" | "unknownFutureValue";
export type ExpirationPatternType = "notSpecified" | "noExpiration" | "afterDateTime" | "afterDuration";
export type ConnectedOrganizationState = "configured" | "proposed" | "unknownFutureValue";
export type ActionSource = "manual" | "automatic" | "recommended" | "default";
export type AssignmentMethod = "standard" | "privileged" | "auto";
export type ContentAlignment = "left" | "right" | "center";
export type ContentFormat = "default" | "email";
export type ContentState = "rest" | "motion" | "use";
export type WatermarkLayout = "horizontal" | "diagonal";
export type AndroidDeviceOwnerEnrollmentMode =
    | "corporateOwnedDedicatedDevice"
    | "corporateOwnedFullyManaged"
    | "corporateOwnedWorkProfile";
export type AndroidDeviceOwnerEnrollmentTokenType = "default" | "corporateOwnedDedicatedDeviceWithAzureADSharedMode";
export type AndroidForWorkAppConfigurationSchemaItemDataType =
    | "bool"
    | "integer"
    | "string"
    | "choice"
    | "multiselect"
    | "bundle"
    | "bundleArray"
    | "hidden";
export type AndroidForWorkBindStatus = "notBound" | "bound" | "boundAndValidated" | "unbinding";
export type AndroidForWorkEnrollmentTarget = "none" | "all" | "targeted" | "targetedAsEnrollmentRestrictions";
export type AndroidForWorkSyncStatus =
    | "success"
    | "credentialsNotValid"
    | "androidForWorkApiError"
    | "managementServiceError"
    | "unknownError"
    | "none";
export type AndroidManagedStoreAccountAppSyncStatus =
    | "success"
    | "credentialsNotValid"
    | "androidForWorkApiError"
    | "managementServiceError"
    | "unknownError"
    | "none";
export type AndroidManagedStoreAccountBindStatus = "notBound" | "bound" | "boundAndValidated" | "unbinding";
export type AndroidManagedStoreAccountEnrollmentTarget =
    | "none"
    | "all"
    | "targeted"
    | "targetedAsEnrollmentRestrictions";
export type AndroidManagedStoreAppConfigurationSchemaItemDataType =
    | "bool"
    | "integer"
    | "string"
    | "choice"
    | "multiselect"
    | "bundle"
    | "bundleArray"
    | "hidden";
export type AndroidPermissionActionType = "prompt" | "autoGrant" | "autoDeny";
export type AndroidProfileApplicability = "default" | "androidWorkProfile" | "androidDeviceOwner";
export type CertificateStatus = "notProvisioned" | "provisioned";
export type ComplianceStatus =
    | "unknown"
    | "notApplicable"
    | "compliant"
    | "remediated"
    | "nonCompliant"
    | "error"
    | "conflict"
    | "notAssigned";
export type DeviceAndAppManagementAssignmentFilterType = "none" | "include" | "exclude";
export type DeviceAndAppManagementAssignmentSource = "direct" | "policySets";
export type InstallIntent = "available" | "required" | "uninstall" | "availableWithoutEnrollment";
export type ManagedAppAvailability = "global" | "lineOfBusiness";
export type MdmAppConfigKeyType = "stringType" | "integerType" | "realType" | "booleanType" | "tokenType";
export type MicrosoftEdgeChannel = "dev" | "beta" | "stable";
export type MicrosoftStoreForBusinessLicenseType = "offline" | "online";
export type MobileAppContentFileUploadState =
    | "success"
    | "transientError"
    | "error"
    | "unknown"
    | "azureStorageUriRequestSuccess"
    | "azureStorageUriRequestPending"
    | "azureStorageUriRequestFailed"
    | "azureStorageUriRequestTimedOut"
    | "azureStorageUriRenewalSuccess"
    | "azureStorageUriRenewalPending"
    | "azureStorageUriRenewalFailed"
    | "azureStorageUriRenewalTimedOut"
    | "commitFileSuccess"
    | "commitFilePending"
    | "commitFileFailed"
    | "commitFileTimedOut";
export type MobileAppDependencyType = "detect" | "autoInstall";
export type MobileAppPublishingState = "notPublished" | "processing" | "published";
export type MobileAppRelationshipType = "child" | "parent";
export type MobileAppSupersedenceType = "update" | "replace";
export type OfficeProductId = "o365ProPlusRetail" | "o365BusinessRetail" | "visioProRetail" | "projectProRetail";
export type OfficeSuiteInstallProgressDisplayLevel = "none" | "full";
export type OfficeUpdateChannel =
    | "none"
    | "current"
    | "deferred"
    | "firstReleaseCurrent"
    | "firstReleaseDeferred"
    | "monthlyEnterprise";
export type ResultantAppState =
    | "notApplicable"
    | "installed"
    | "failed"
    | "notInstalled"
    | "uninstallFailed"
    | "pendingInstall"
    | "unknown";
export type ResultantAppStateDetail =
    | "processorArchitectureNotApplicable"
    | "minimumDiskSpaceNotMet"
    | "minimumOsVersionNotMet"
    | "minimumPhysicalMemoryNotMet"
    | "minimumLogicalProcessorCountNotMet"
    | "minimumCpuSpeedNotMet"
    | "platformNotApplicable"
    | "fileSystemRequirementNotMet"
    | "registryRequirementNotMet"
    | "powerShellScriptRequirementNotMet"
    | "noAdditionalDetails"
    | "dependencyFailedToInstall"
    | "dependencyWithRequirementsNotMet"
    | "dependencyPendingReboot"
    | "dependencyWithAutoInstallDisabled"
    | "iosAppStoreUpdateFailedToInstall"
    | "vppAppHasUpdateAvailable"
    | "userRejectedUpdate"
    | "seeInstallErrorCode"
    | "autoInstallDisabled"
    | "managedAppNoLongerPresent"
    | "userRejectedInstall"
    | "userIsNotLoggedIntoAppStore"
    | "seeUninstallErrorCode"
    | "pendingReboot"
    | "installingDependencies"
    | "contentDownloaded";
export type RunAsAccountType = "system" | "user";
export type VppTokenAccountType = "business" | "education";
export type VppTokenActionFailureReason =
    | "none"
    | "appleFailure"
    | "internalError"
    | "expiredVppToken"
    | "expiredApplePushNotificationCertificate";
export type Win32LobAppDeliveryOptimizationPriority = "notConfigured" | "foreground";
export type Win32LobAppDetectionOperator =
    | "notConfigured"
    | "equal"
    | "notEqual"
    | "greaterThan"
    | "greaterThanOrEqual"
    | "lessThan"
    | "lessThanOrEqual";
export type Win32LobAppFileSystemDetectionType =
    | "notConfigured"
    | "exists"
    | "modifiedDate"
    | "createdDate"
    | "version"
    | "sizeInMB"
    | "doesNotExist";
export type Win32LobAppFileSystemOperationType =
    | "notConfigured"
    | "exists"
    | "modifiedDate"
    | "createdDate"
    | "version"
    | "sizeInMB"
    | "doesNotExist";
export type Win32LobAppMsiPackageType = "perMachine" | "perUser" | "dualPurpose";
export type Win32LobAppNotification = "showAll" | "showReboot" | "hideAll";
export type Win32LobAppPowerShellScriptDetectionType =
    | "notConfigured"
    | "string"
    | "dateTime"
    | "integer"
    | "float"
    | "version"
    | "boolean";
export type Win32LobAppPowerShellScriptRuleOperationType =
    | "notConfigured"
    | "string"
    | "dateTime"
    | "integer"
    | "float"
    | "version"
    | "boolean";
export type Win32LobAppRegistryDetectionType =
    | "notConfigured"
    | "exists"
    | "doesNotExist"
    | "string"
    | "integer"
    | "version";
export type Win32LobAppRegistryRuleOperationType =
    | "notConfigured"
    | "exists"
    | "doesNotExist"
    | "string"
    | "integer"
    | "version";
export type Win32LobAppRestartBehavior = "basedOnReturnCode" | "allow" | "suppress" | "force";
export type Win32LobAppReturnCodeType = "failed" | "success" | "softReboot" | "hardReboot" | "retry";
export type Win32LobAppRuleOperator =
    | "notConfigured"
    | "equal"
    | "notEqual"
    | "greaterThan"
    | "greaterThanOrEqual"
    | "lessThan"
    | "lessThanOrEqual";
export type Win32LobAppRuleType = "detection" | "requirement";
export type WindowsArchitecture = "none" | "x86" | "x64" | "arm" | "neutral" | "arm64";
export type WindowsDeviceType = "none" | "desktop" | "mobile" | "holographic" | "team";
export type InstallState = "notApplicable" | "installed" | "failed" | "notInstalled" | "uninstallFailed" | "unknown";
export type AssignmentFilterEvaluationResult =
    | "unknown"
    | "match"
    | "notMatch"
    | "inconclusive"
    | "failure"
    | "notEvaluated";
export type AssignmentFilterOperator =
    | "notSet"
    | "equals"
    | "notEquals"
    | "startsWith"
    | "notStartsWith"
    | "contains"
    | "notContains"
    | "in"
    | "notIn"
    | "endsWith"
    | "notEndsWith";
export type AssignmentFilterPayloadType = "notSet" | "enrollmentRestrictions";
export type DevicePlatformType =
    | "android"
    | "androidForWork"
    | "iOS"
    | "macOS"
    | "windowsPhone81"
    | "windows81AndLater"
    | "windows10AndLater"
    | "androidWorkProfile"
    | "unknown"
    | "androidAOSP";
export type ErrorCode = "noError" | "unauthorized" | "notFound" | "deleted";
export type PolicySetStatus = "unknown" | "validating" | "partialSuccess" | "success" | "error" | "notAssigned";
export type ChromeOSOnboardingStatus = "unknown" | "inprogress" | "onboarded" | "failed";
export type OnboardingStatus = "unknown" | "inprogress" | "onboarded" | "failed";
export type AdministratorConfiguredDeviceComplianceState = "basedOnDeviceCompliancePolicy" | "nonCompliant";
export type AdvancedBitLockerState =
    | "success"
    | "noUserConsent"
    | "osVolumeUnprotected"
    | "osVolumeTpmRequired"
    | "osVolumeTpmOnlyRequired"
    | "osVolumeTpmPinRequired"
    | "osVolumeTpmStartupKeyRequired"
    | "osVolumeTpmPinStartupKeyRequired"
    | "osVolumeEncryptionMethodMismatch"
    | "recoveryKeyBackupFailed"
    | "fixedDriveNotEncrypted"
    | "fixedDriveEncryptionMethodMismatch"
    | "loggedOnUserNonAdmin"
    | "windowsRecoveryEnvironmentNotConfigured"
    | "tpmNotAvailable"
    | "tpmNotReady"
    | "networkError";
export type AndroidDeviceOwnerAppAutoUpdatePolicyType = "notConfigured" | "userChoice" | "never" | "wiFiOnly" | "always";
export type AndroidDeviceOwnerBatteryPluggedMode = "notConfigured" | "ac" | "usb" | "wireless";
export type AndroidDeviceOwnerDefaultAppPermissionPolicyType = "deviceDefault" | "prompt" | "autoGrant" | "autoDeny";
export type AndroidDeviceOwnerEnrollmentProfileType = "notConfigured" | "dedicatedDevice" | "fullyManaged";
export type AndroidDeviceOwnerKioskCustomizationStatusBar =
    | "notConfigured"
    | "notificationsAndSystemInfoEnabled"
    | "systemInfoOnly";
export type AndroidDeviceOwnerKioskCustomizationSystemNavigation =
    | "notConfigured"
    | "navigationEnabled"
    | "homeButtonOnly";
export type AndroidDeviceOwnerKioskModeFolderIcon =
    | "notConfigured"
    | "darkSquare"
    | "darkCircle"
    | "lightSquare"
    | "lightCircle";
export type AndroidDeviceOwnerKioskModeIconSize =
    | "notConfigured"
    | "smallest"
    | "small"
    | "regular"
    | "large"
    | "largest";
export type AndroidDeviceOwnerKioskModeScreenOrientation = "notConfigured" | "portrait" | "landscape" | "autoRotate";
export type AndroidDeviceOwnerPlayStoreMode = "notConfigured" | "allowList" | "blockList";
export type AndroidDeviceOwnerRequiredPasswordType =
    | "deviceDefault"
    | "required"
    | "numeric"
    | "numericComplex"
    | "alphabetic"
    | "alphanumeric"
    | "alphanumericWithSymbols"
    | "lowSecurityBiometric"
    | "customPassword";
export type AndroidDeviceOwnerSystemUpdateInstallType = "deviceDefault" | "postpone" | "windowed" | "automatic";
export type AndroidDeviceOwnerVirtualHomeButtonType = "notConfigured" | "swipeUp" | "floating";
export type AndroidDeviceOwnerWiFiSecurityType = "open" | "wep" | "wpaPersonal" | "wpaEnterprise";
export type AndroidEapType = "eapTls" | "eapTtls" | "peap";
export type AndroidForWorkCrossProfileDataSharingType =
    | "deviceDefault"
    | "preventAny"
    | "allowPersonalToWork"
    | "noRestrictions";
export type AndroidForWorkDefaultAppPermissionPolicyType = "deviceDefault" | "prompt" | "autoGrant" | "autoDeny";
export type AndroidForWorkRequiredPasswordType =
    | "deviceDefault"
    | "lowSecurityBiometric"
    | "required"
    | "atLeastNumeric"
    | "numericComplex"
    | "atLeastAlphabetic"
    | "atLeastAlphanumeric"
    | "alphanumericWithSymbols";
export type AndroidForWorkVpnConnectionType =
    | "ciscoAnyConnect"
    | "pulseSecure"
    | "f5EdgeClient"
    | "dellSonicWallMobileConnect"
    | "checkPointCapsuleVpn"
    | "citrix";
export type AndroidKeyguardFeature =
    | "notConfigured"
    | "camera"
    | "notifications"
    | "unredactedNotifications"
    | "trustAgents"
    | "fingerprint"
    | "remoteInput"
    | "allFeatures";
export type AndroidRequiredPasswordComplexity = "none" | "low" | "medium" | "high";
export type AndroidRequiredPasswordType =
    | "deviceDefault"
    | "alphabetic"
    | "alphanumeric"
    | "alphanumericWithSymbols"
    | "lowSecurityBiometric"
    | "numeric"
    | "numericComplex"
    | "any";
export type AndroidSafetyNetEvaluationType = "basic" | "hardwareBacked";
export type AndroidUsernameSource = "username" | "userPrincipalName" | "samAccountName" | "primarySmtpAddress";
export type AndroidVpnConnectionType =
    | "ciscoAnyConnect"
    | "pulseSecure"
    | "f5EdgeClient"
    | "dellSonicWallMobileConnect"
    | "checkPointCapsuleVpn"
    | "citrix"
    | "microsoftTunnel"
    | "netMotionMobility"
    | "microsoftProtect";
export type AndroidWiFiSecurityType = "open" | "wpaEnterprise" | "wpa2Enterprise";
export type AndroidWorkProfileCrossProfileDataSharingType =
    | "deviceDefault"
    | "preventAny"
    | "allowPersonalToWork"
    | "noRestrictions";
export type AndroidWorkProfileDefaultAppPermissionPolicyType = "deviceDefault" | "prompt" | "autoGrant" | "autoDeny";
export type AndroidWorkProfileRequiredPasswordType =
    | "deviceDefault"
    | "lowSecurityBiometric"
    | "required"
    | "atLeastNumeric"
    | "numericComplex"
    | "atLeastAlphabetic"
    | "atLeastAlphanumeric"
    | "alphanumericWithSymbols";
export type AndroidWorkProfileVpnConnectionType =
    | "ciscoAnyConnect"
    | "pulseSecure"
    | "f5EdgeClient"
    | "dellSonicWallMobileConnect"
    | "checkPointCapsuleVpn"
    | "citrix"
    | "paloAltoGlobalProtect"
    | "microsoftTunnel"
    | "netMotionMobility"
    | "microsoftProtect";
export type AppInstallControlType = "notConfigured" | "anywhere" | "storeOnly" | "recommendations" | "preferStore";
export type AppleDeploymentChannel = "deviceChannel" | "userChannel";
export type AppleSubjectNameFormat =
    | "commonName"
    | "commonNameAsEmail"
    | "custom"
    | "commonNameIncludingEmail"
    | "commonNameAsIMEI"
    | "commonNameAsSerialNumber";
export type AppleVpnConnectionType =
    | "ciscoAnyConnect"
    | "pulseSecure"
    | "f5EdgeClient"
    | "dellSonicWallMobileConnect"
    | "checkPointCapsuleVpn"
    | "customVpn"
    | "ciscoIPSec"
    | "citrix"
    | "ciscoAnyConnectV2"
    | "paloAltoGlobalProtect"
    | "zscalerPrivateAccess"
    | "f5Access2018"
    | "citrixSso"
    | "paloAltoGlobalProtectV2"
    | "ikEv2"
    | "alwaysOn"
    | "microsoftTunnel"
    | "netMotionMobility"
    | "microsoftProtect";
export type ApplicationGuardBlockClipboardSharingType =
    | "notConfigured"
    | "blockBoth"
    | "blockHostToContainer"
    | "blockContainerToHost"
    | "blockNone";
export type ApplicationGuardBlockFileTransferType =
    | "notConfigured"
    | "blockImageAndTextFile"
    | "blockImageFile"
    | "blockNone"
    | "blockTextFile";
export type ApplicationGuardEnabledOptions =
    | "notConfigured"
    | "enabledForEdge"
    | "enabledForOffice"
    | "enabledForEdgeAndOffice";
export type AppListType = "none" | "appsInListCompliant" | "appsNotInListCompliant";
export type AppLockerApplicationControlType =
    | "notConfigured"
    | "enforceComponentsAndStoreApps"
    | "auditComponentsAndStoreApps"
    | "enforceComponentsStoreAppsAndSmartlocker"
    | "auditComponentsStoreAppsAndSmartlocker";
export type AuthenticationTransformConstant =
    | "md5_96"
    | "sha1_96"
    | "sha_256_128"
    | "aes128Gcm"
    | "aes192Gcm"
    | "aes256Gcm";
export type AutomaticUpdateMode =
    | "userDefined"
    | "notifyDownload"
    | "autoInstallAtMaintenanceTime"
    | "autoInstallAndRebootAtMaintenanceTime"
    | "autoInstallAndRebootAtScheduledTime"
    | "autoInstallAndRebootWithoutEndUserControl"
    | "windowsDefault";
export type AutoRestartNotificationDismissalMethod = "notConfigured" | "automatic" | "user";
export type BitLockerEncryptionMethod = "aesCbc128" | "aesCbc256" | "xtsAes128" | "xtsAes256";
export type BitLockerRecoveryInformationType = "passwordAndKey" | "passwordOnly";
export type BitLockerRecoveryPasswordRotationType =
    | "notConfigured"
    | "disabled"
    | "enabledForAzureAd"
    | "enabledForAzureAdAndHybrid";
export type BrowserSyncSetting = "notConfigured" | "blockedWithUserOverride" | "blocked";
export type CertificateDestinationStore =
    | "computerCertStoreRoot"
    | "computerCertStoreIntermediate"
    | "userCertStoreIntermediate";
export type CertificateIssuanceStates =
    | "unknown"
    | "challengeIssued"
    | "challengeIssueFailed"
    | "requestCreationFailed"
    | "requestSubmitFailed"
    | "challengeValidationSucceeded"
    | "challengeValidationFailed"
    | "issueFailed"
    | "issuePending"
    | "issued"
    | "responseProcessingFailed"
    | "responsePending"
    | "enrollmentSucceeded"
    | "enrollmentNotNeeded"
    | "revoked"
    | "removedFromCollection"
    | "renewVerified"
    | "installFailed"
    | "installed"
    | "deleteFailed"
    | "deleted"
    | "renewalRequested"
    | "requested";
export type CertificateRevocationStatus = "none" | "pending" | "issued" | "failed" | "revoked";
export type CertificateStore = "user" | "machine";
export type CertificateValidityPeriodScale = "days" | "months" | "years";
export type ChangeUefiSettingsPermission = "notConfiguredOnly" | "none";
export type Code =
    | "none"
    | "jsonFileInvalid"
    | "jsonFileMissing"
    | "jsonFileTooLarge"
    | "rulesMissing"
    | "duplicateRules"
    | "tooManyRulesSpecified"
    | "operatorMissing"
    | "operatorNotSupported"
    | "datatypeMissing"
    | "datatypeNotSupported"
    | "operatorDataTypeCombinationNotSupported"
    | "moreInfoUriMissing"
    | "moreInfoUriInvalid"
    | "moreInfoUriTooLarge"
    | "descriptionMissing"
    | "descriptionInvalid"
    | "descriptionTooLarge"
    | "titleMissing"
    | "titleInvalid"
    | "titleTooLarge"
    | "operandMissing"
    | "operandInvalid"
    | "operandTooLarge"
    | "settingNameMissing"
    | "settingNameInvalid"
    | "settingNameTooLarge"
    | "englishLocaleMissing"
    | "duplicateLocales"
    | "unrecognizedLocale"
    | "unknown"
    | "remediationStringsMissing";
export type ConfigurationUsage = "blocked" | "required" | "allowed" | "notConfigured";
export type DataType =
    | "none"
    | "boolean"
    | "int64"
    | "double"
    | "string"
    | "dateTime"
    | "version"
    | "base64"
    | "xml"
    | "booleanArray"
    | "int64Array"
    | "doubleArray"
    | "stringArray"
    | "dateTimeArray"
    | "versionArray";
export type DefenderAttackSurfaceType = "userDefined" | "block" | "auditMode" | "warn" | "disable";
export type DefenderCloudBlockLevelType = "notConfigured" | "high" | "highPlus" | "zeroTolerance";
export type DefenderMonitorFileActivity =
    | "userDefined"
    | "disable"
    | "monitorAllFiles"
    | "monitorIncomingFilesOnly"
    | "monitorOutgoingFilesOnly";
export type DefenderPotentiallyUnwantedAppAction = "deviceDefault" | "block" | "audit";
export type DefenderPromptForSampleSubmission =
    | "userDefined"
    | "alwaysPrompt"
    | "promptBeforeSendingPersonalData"
    | "neverSendData"
    | "sendAllDataWithoutPrompting";
export type DefenderProtectionType = "userDefined" | "enable" | "auditMode" | "warn" | "notConfigured";
export type DefenderRealtimeScanDirection = "monitorAllFiles" | "monitorIncomingFilesOnly" | "monitorOutgoingFilesOnly";
export type DefenderScanType = "userDefined" | "disabled" | "quick" | "full";
export type DefenderSecurityCenterITContactDisplayType =
    | "notConfigured"
    | "displayInAppAndInNotifications"
    | "displayOnlyInApp"
    | "displayOnlyInNotifications";
export type DefenderSecurityCenterNotificationsFromAppType =
    | "notConfigured"
    | "blockNoncriticalNotifications"
    | "blockAllNotifications";
export type DefenderSubmitSamplesConsentType =
    | "sendSafeSamplesAutomatically"
    | "alwaysPrompt"
    | "neverSend"
    | "sendAllSamplesAutomatically";
export type DefenderThreatAction =
    | "deviceDefault"
    | "clean"
    | "quarantine"
    | "remove"
    | "allow"
    | "userDefined"
    | "block";
export type DeliveryOptimizationGroupIdOptionsType =
    | "notConfigured"
    | "adSite"
    | "authenticatedDomainSid"
    | "dhcpUserOption"
    | "dnsSuffix";
export type DeliveryOptimizationRestrictPeerSelectionByOptions = "notConfigured" | "subnetMask";
export type DerivedCredentialProviderType = "notConfigured" | "entrustDataCard" | "purebred" | "xTec" | "intercede";
export type DeviceComplianceActionType =
    | "noAction"
    | "notification"
    | "block"
    | "retire"
    | "wipe"
    | "removeResourceAccessProfiles"
    | "pushNotification"
    | "remoteLock";
export type DeviceComplianceScriptRuleDataType =
    | "none"
    | "boolean"
    | "int64"
    | "double"
    | "string"
    | "dateTime"
    | "version"
    | "base64"
    | "xml"
    | "booleanArray"
    | "int64Array"
    | "doubleArray"
    | "stringArray"
    | "dateTimeArray"
    | "versionArray";
export type DeviceComplianceScriptRulesValidationError =
    | "none"
    | "jsonFileInvalid"
    | "jsonFileMissing"
    | "jsonFileTooLarge"
    | "rulesMissing"
    | "duplicateRules"
    | "tooManyRulesSpecified"
    | "operatorMissing"
    | "operatorNotSupported"
    | "datatypeMissing"
    | "datatypeNotSupported"
    | "operatorDataTypeCombinationNotSupported"
    | "moreInfoUriMissing"
    | "moreInfoUriInvalid"
    | "moreInfoUriTooLarge"
    | "descriptionMissing"
    | "descriptionInvalid"
    | "descriptionTooLarge"
    | "titleMissing"
    | "titleInvalid"
    | "titleTooLarge"
    | "operandMissing"
    | "operandInvalid"
    | "operandTooLarge"
    | "settingNameMissing"
    | "settingNameInvalid"
    | "settingNameTooLarge"
    | "englishLocaleMissing"
    | "duplicateLocales"
    | "unrecognizedLocale"
    | "unknown"
    | "remediationStringsMissing";
export type DeviceComplianceScriptRulOperator =
    | "none"
    | "and"
    | "or"
    | "isEquals"
    | "notEquals"
    | "greaterThan"
    | "lessThan"
    | "between"
    | "notBetween"
    | "greaterEquals"
    | "lessEquals"
    | "dayTimeBetween"
    | "beginsWith"
    | "notBeginsWith"
    | "endsWith"
    | "notEndsWith"
    | "contains"
    | "notContains"
    | "allOf"
    | "oneOf"
    | "noneOf"
    | "setEquals"
    | "orderedSetEquals"
    | "subsetOf"
    | "excludesAll";
export type DeviceGuardLocalSystemAuthorityCredentialGuardType =
    | "notConfigured"
    | "enableWithUEFILock"
    | "enableWithoutUEFILock"
    | "disable";
export type DeviceManagementApplicabilityRuleType = "include" | "exclude";
export type DeviceManagementCertificationAuthority = "notConfigured" | "microsoft" | "digiCert";
export type DeviceThreatProtectionLevel = "unavailable" | "secured" | "low" | "medium" | "high" | "notSet";
export type DeviceType =
    | "desktop"
    | "windowsRT"
    | "winMO6"
    | "nokia"
    | "windowsPhone"
    | "mac"
    | "winCE"
    | "winEmbedded"
    | "iPhone"
    | "iPad"
    | "iPod"
    | "android"
    | "iSocConsumer"
    | "unix"
    | "macMDM"
    | "holoLens"
    | "surfaceHub"
    | "androidForWork"
    | "androidEnterprise"
    | "windows10x"
    | "androidnGMS"
    | "chromeOS"
    | "linux"
    | "blackberry"
    | "palm"
    | "unknown"
    | "cloudPC";
export type DeviceTypes =
    | "desktop"
    | "windowsRT"
    | "winMO6"
    | "nokia"
    | "windowsPhone"
    | "mac"
    | "winCE"
    | "winEmbedded"
    | "iPhone"
    | "iPad"
    | "iPod"
    | "android"
    | "iSocConsumer"
    | "unix"
    | "macMDM"
    | "holoLens"
    | "surfaceHub"
    | "androidForWork"
    | "androidEnterprise"
    | "blackberry"
    | "palm"
    | "unknown";
export type DiagnosticDataSubmissionMode = "userDefined" | "none" | "basic" | "enhanced" | "full";
export type DiffieHellmanGroup = "group1" | "group2" | "group14" | "ecp256" | "ecp384" | "group24";
export type DmaGuardDeviceEnumerationPolicyType = "deviceDefault" | "blockAll" | "allowAll";
export type DomainNameSource = "fullDomainName" | "netBiosDomainName";
export type EapFastConfiguration =
    | "noProtectedAccessCredential"
    | "useProtectedAccessCredential"
    | "useProtectedAccessCredentialAndProvision"
    | "useProtectedAccessCredentialAndProvisionAnonymously";
export type EapType = "eapTls" | "leap" | "eapSim" | "eapTtls" | "peap" | "eapFast";
export type EasAuthenticationMethod = "usernameAndPassword" | "certificate" | "derivedCredential";
export type EasServices = "none" | "calendars" | "contacts" | "email" | "notes" | "reminders";
export type EdgeCookiePolicy = "userDefined" | "allow" | "blockThirdParty" | "blockAll";
export type EdgeKioskModeRestrictionType =
    | "notConfigured"
    | "digitalSignage"
    | "normalMode"
    | "publicBrowsingSingleApp"
    | "publicBrowsingMultiApp";
export type EdgeOpenOptions = "notConfigured" | "startPage" | "newTabPage" | "previousPages" | "specificPages";
export type EdgeSearchEngineType = "default" | "bing";
export type EdgeTelemetryMode = "notConfigured" | "intranet" | "internet" | "intranetAndInternet";
export type EditionUpgradeLicenseType = "productKey" | "licenseFile" | "notConfigured";
export type EmailCertificateType = "none" | "certificate" | "derivedCredential";
export type EmailSyncDuration =
    | "userDefined"
    | "oneDay"
    | "threeDays"
    | "oneWeek"
    | "twoWeeks"
    | "oneMonth"
    | "unlimited";
export type EmailSyncSchedule =
    | "userDefined"
    | "asMessagesArrive"
    | "manual"
    | "fifteenMinutes"
    | "thirtyMinutes"
    | "sixtyMinutes"
    | "basedOnMyUsage";
export type Enablement = "notConfigured" | "enabled" | "disabled";
export type EncryptionReadinessState = "notReady" | "ready";
export type EncryptionState = "notEncrypted" | "encrypted";
export type FileVaultState = "success" | "driveEncryptedByUser" | "userDeferredEncryption" | "escrowNotEnabled";
export type FirewallCertificateRevocationListCheckMethodType = "deviceDefault" | "none" | "attempt" | "require";
export type FirewallPacketQueueingMethodType =
    | "deviceDefault"
    | "disabled"
    | "queueInbound"
    | "queueOutbound"
    | "queueBoth";
export type FirewallPreSharedKeyEncodingMethodType = "deviceDefault" | "none" | "utF8";
export type FolderProtectionType =
    | "userDefined"
    | "enable"
    | "auditMode"
    | "blockDiskModification"
    | "auditDiskModification";
export type HashAlgorithms = "sha1" | "sha2";
export type InkAccessSetting = "notConfigured" | "enabled" | "disabled";
export type IntendedPurpose = "unassigned" | "smimeEncryption" | "smimeSigning" | "vpn" | "wifi";
export type InternetExplorerMessageSetting = "notConfigured" | "disabled" | "enabled" | "keepGoing";
export type InternetSiteSecurityLevel = "userDefined" | "medium" | "mediumHigh" | "high";
export type IosKioskModeAppType = "notConfigured" | "appStoreApp" | "managedApp" | "builtInApp";
export type IosNotificationAlertType = "deviceDefault" | "banner" | "modal" | "none";
export type IosNotificationPreviewVisibility = "notConfigured" | "alwaysShow" | "hideWhenLocked" | "neverShow";
export type IosSoftwareUpdateScheduleType =
    | "updateOutsideOfActiveHours"
    | "alwaysUpdate"
    | "updateDuringTimeWindows"
    | "updateOutsideOfTimeWindows";
export type IosUpdatesInstallStatus =
    | "updateScanFailed"
    | "deviceOsHigherThanDesiredOsVersion"
    | "updateError"
    | "sharedDeviceUserLoggedInError"
    | "notSupportedOperation"
    | "installFailed"
    | "installPhoneCallInProgress"
    | "installInsufficientPower"
    | "installInsufficientSpace"
    | "installing"
    | "downloadInsufficientNetwork"
    | "downloadInsufficientPower"
    | "downloadInsufficientSpace"
    | "downloadRequiresComputer"
    | "downloadFailed"
    | "downloading"
    | "timeout"
    | "mdmClientCrashed"
    | "success"
    | "available"
    | "idle"
    | "unknown";
export type IosWallpaperDisplayLocation = "notConfigured" | "lockScreen" | "homeScreen" | "lockAndHomeScreens";
export type KeySize = "size1024" | "size2048" | "size4096";
export type KeyStorageProviderOption =
    | "useTpmKspOtherwiseUseSoftwareKsp"
    | "useTpmKspOtherwiseFail"
    | "usePassportForWorkKspOtherwiseFail"
    | "useSoftwareKsp";
export type KeyUsages = "keyEncipherment" | "digitalSignature";
export type LanManagerAuthenticationLevel =
    | "lmAndNltm"
    | "lmNtlmAndNtlmV2"
    | "lmAndNtlmOnly"
    | "lmAndNtlmV2"
    | "lmNtlmV2AndNotLm"
    | "lmNtlmV2AndNotLmOrNtm";
export type LocalSecurityOptionsAdministratorElevationPromptBehaviorType =
    | "notConfigured"
    | "elevateWithoutPrompting"
    | "promptForCredentialsOnTheSecureDesktop"
    | "promptForConsentOnTheSecureDesktop"
    | "promptForCredentials"
    | "promptForConsent"
    | "promptForConsentForNonWindowsBinaries";
export type LocalSecurityOptionsFormatAndEjectOfRemovableMediaAllowedUserType =
    | "notConfigured"
    | "administrators"
    | "administratorsAndPowerUsers"
    | "administratorsAndInteractiveUsers";
export type LocalSecurityOptionsInformationDisplayedOnLockScreenType =
    | "notConfigured"
    | "administrators"
    | "administratorsAndPowerUsers"
    | "administratorsAndInteractiveUsers";
export type LocalSecurityOptionsInformationShownOnLockScreenType =
    | "notConfigured"
    | "userDisplayNameDomainUser"
    | "userDisplayNameOnly"
    | "doNotDisplayUser";
export type LocalSecurityOptionsMinimumSessionSecurity =
    | "none"
    | "requireNtmlV2SessionSecurity"
    | "require128BitEncryption"
    | "ntlmV2And128BitEncryption";
export type LocalSecurityOptionsSmartCardRemovalBehaviorType =
    | "lockWorkstation"
    | "noAction"
    | "forceLogoff"
    | "disconnectRemoteDesktopSession";
export type LocalSecurityOptionsStandardUserElevationPromptBehaviorType =
    | "notConfigured"
    | "automaticallyDenyElevationRequests"
    | "promptForCredentialsOnTheSecureDesktop"
    | "promptForCredentials";
export type MacOSContentCachingClientPolicy =
    | "notConfigured"
    | "clientsInLocalNetwork"
    | "clientsWithSamePublicIpAddress"
    | "clientsInCustomLocalNetworks"
    | "clientsInCustomLocalNetworksWithFallback";
export type MacOSContentCachingParentSelectionPolicy =
    | "notConfigured"
    | "roundRobin"
    | "firstAvailable"
    | "urlPathHash"
    | "random"
    | "stickyAvailable";
export type MacOSContentCachingPeerPolicy =
    | "notConfigured"
    | "peersInLocalNetwork"
    | "peersWithSamePublicIpAddress"
    | "peersInCustomLocalNetworks";
export type MacOSContentCachingType = "notConfigured" | "userContentOnly" | "sharedContentOnly";
export type MacOSFileVaultRecoveryKeyTypes = "notConfigured" | "institutionalRecoveryKey" | "personalRecoveryKey";
export type MacOSGatekeeperAppSources =
    | "notConfigured"
    | "macAppStore"
    | "macAppStoreAndIdentifiedDevelopers"
    | "anywhere";
export type MacOSProcessIdentifierType = "bundleID" | "path";
export type MacOSSoftwareUpdateBehavior = "notConfigured" | "default";
export type MacOSSoftwareUpdateCategory = "critical" | "configurationDataFile" | "firmware" | "other";
export type MacOSSoftwareUpdateDelayPolicy = "none" | "delayOSUpdateVisibility" | "delayAppUpdateVisibility";
export type MacOSSoftwareUpdateScheduleType = "alwaysUpdate" | "updateDuringTimeWindows" | "updateOutsideOfTimeWindows";
export type MacOSSoftwareUpdateState =
    | "success"
    | "downloading"
    | "downloaded"
    | "installing"
    | "idle"
    | "available"
    | "scheduled"
    | "downloadFailed"
    | "downloadInsufficientSpace"
    | "downloadInsufficientPower"
    | "downloadInsufficientNetwork"
    | "installInsufficientSpace"
    | "installInsufficientPower"
    | "installFailed"
    | "commandFailed";
export type MacOSSystemExtensionType =
    | "driverExtensionsAllowed"
    | "networkExtensionsAllowed"
    | "endpointSecurityExtensionsAllowed";
export type ManagedDeviceOwnerType = "unknown" | "company" | "personal";
export type ManagementAgentType =
    | "eas"
    | "mdm"
    | "easMdm"
    | "intuneClient"
    | "easIntuneClient"
    | "configurationManagerClient"
    | "configurationManagerClientMdm"
    | "configurationManagerClientMdmEas"
    | "unknown"
    | "jamf"
    | "googleCloudDevicePolicyController"
    | "microsoft365ManagedMdm"
    | "windowsManagementCloudApi"
    | "intuneAosp";
export type MeteredConnectionLimitType = "unrestricted" | "fixed" | "variable";
export type MicrosoftLauncherDockPresence = "notConfigured" | "show" | "hide" | "disabled";
export type MicrosoftLauncherSearchBarPlacement = "notConfigured" | "top" | "bottom" | "hide";
export type MiracastChannel =
    | "userDefined"
    | "one"
    | "two"
    | "three"
    | "four"
    | "five"
    | "six"
    | "seven"
    | "eight"
    | "nine"
    | "ten"
    | "eleven"
    | "thirtySix"
    | "forty"
    | "fortyFour"
    | "fortyEight"
    | "oneHundredFortyNine"
    | "oneHundredFiftyThree"
    | "oneHundredFiftySeven"
    | "oneHundredSixtyOne"
    | "oneHundredSixtyFive";
export type NdesConnectorState = "none" | "active" | "inactive";
export type NetworkSingleSignOnType = "disabled" | "prelogon" | "postlogon";
export type NonEapAuthenticationMethodForEapTtlsType =
    | "unencryptedPassword"
    | "challengeHandshakeAuthenticationProtocol"
    | "microsoftChap"
    | "microsoftChapVersionTwo";
export type NonEapAuthenticationMethodForPeap = "none" | "microsoftChapVersionTwo";
export type Operator =
    | "none"
    | "and"
    | "or"
    | "isEquals"
    | "notEquals"
    | "greaterThan"
    | "lessThan"
    | "between"
    | "notBetween"
    | "greaterEquals"
    | "lessEquals"
    | "dayTimeBetween"
    | "beginsWith"
    | "notBeginsWith"
    | "endsWith"
    | "notEndsWith"
    | "contains"
    | "notContains"
    | "allOf"
    | "oneOf"
    | "noneOf"
    | "setEquals"
    | "orderedSetEquals"
    | "subsetOf"
    | "excludesAll";
export type PerfectForwardSecrecyGroup = "pfs1" | "pfs2" | "pfs2048" | "ecp256" | "ecp384" | "pfsMM" | "pfs24";
export type PolicyPlatformType =
    | "android"
    | "androidForWork"
    | "iOS"
    | "macOS"
    | "windowsPhone81"
    | "windows81AndLater"
    | "windows10AndLater"
    | "androidWorkProfile"
    | "windows10XProfile"
    | "androidAOSP"
    | "all";
export type PowerActionType = "notConfigured" | "noAction" | "sleep" | "hibernate" | "shutdown";
export type PrereleaseFeatures = "userDefined" | "settingsOnly" | "settingsAndExperimentations" | "notAllowed";
export type RatingAppsType = "allAllowed" | "allBlocked" | "agesAbove4" | "agesAbove9" | "agesAbove12" | "agesAbove17";
export type RatingAustraliaMoviesType =
    | "allAllowed"
    | "allBlocked"
    | "general"
    | "parentalGuidance"
    | "mature"
    | "agesAbove15"
    | "agesAbove18";
export type RatingAustraliaTelevisionType =
    | "allAllowed"
    | "allBlocked"
    | "preschoolers"
    | "children"
    | "general"
    | "parentalGuidance"
    | "mature"
    | "agesAbove15"
    | "agesAbove15AdultViolence";
export type RatingCanadaMoviesType =
    | "allAllowed"
    | "allBlocked"
    | "general"
    | "parentalGuidance"
    | "agesAbove14"
    | "agesAbove18"
    | "restricted";
export type RatingCanadaTelevisionType =
    | "allAllowed"
    | "allBlocked"
    | "children"
    | "childrenAbove8"
    | "general"
    | "parentalGuidance"
    | "agesAbove14"
    | "agesAbove18";
export type RatingFranceMoviesType =
    | "allAllowed"
    | "allBlocked"
    | "agesAbove10"
    | "agesAbove12"
    | "agesAbove16"
    | "agesAbove18";
export type RatingFranceTelevisionType =
    | "allAllowed"
    | "allBlocked"
    | "agesAbove10"
    | "agesAbove12"
    | "agesAbove16"
    | "agesAbove18";
export type RatingGermanyMoviesType =
    | "allAllowed"
    | "allBlocked"
    | "general"
    | "agesAbove6"
    | "agesAbove12"
    | "agesAbove16"
    | "adults";
export type RatingGermanyTelevisionType =
    | "allAllowed"
    | "allBlocked"
    | "general"
    | "agesAbove6"
    | "agesAbove12"
    | "agesAbove16"
    | "adults";
export type RatingIrelandMoviesType =
    | "allAllowed"
    | "allBlocked"
    | "general"
    | "parentalGuidance"
    | "agesAbove12"
    | "agesAbove15"
    | "agesAbove16"
    | "adults";
export type RatingIrelandTelevisionType =
    | "allAllowed"
    | "allBlocked"
    | "general"
    | "children"
    | "youngAdults"
    | "parentalSupervision"
    | "mature";
export type RatingJapanMoviesType =
    | "allAllowed"
    | "allBlocked"
    | "general"
    | "parentalGuidance"
    | "agesAbove15"
    | "agesAbove18";
export type RatingJapanTelevisionType = "allAllowed" | "allBlocked" | "explicitAllowed";
export type RatingNewZealandMoviesType =
    | "allAllowed"
    | "allBlocked"
    | "general"
    | "parentalGuidance"
    | "mature"
    | "agesAbove13"
    | "agesAbove15"
    | "agesAbove16"
    | "agesAbove18"
    | "restricted"
    | "agesAbove16Restricted";
export type RatingNewZealandTelevisionType = "allAllowed" | "allBlocked" | "general" | "parentalGuidance" | "adults";
export type RatingUnitedKingdomMoviesType =
    | "allAllowed"
    | "allBlocked"
    | "general"
    | "universalChildren"
    | "parentalGuidance"
    | "agesAbove12Video"
    | "agesAbove12Cinema"
    | "agesAbove15"
    | "adults";
export type RatingUnitedKingdomTelevisionType = "allAllowed" | "allBlocked" | "caution";
export type RatingUnitedStatesMoviesType =
    | "allAllowed"
    | "allBlocked"
    | "general"
    | "parentalGuidance"
    | "parentalGuidance13"
    | "restricted"
    | "adults";
export type RatingUnitedStatesTelevisionType =
    | "allAllowed"
    | "allBlocked"
    | "childrenAll"
    | "childrenAbove7"
    | "general"
    | "parentalGuidance"
    | "childrenAbove14"
    | "adults";
export type RequiredPasswordType = "deviceDefault" | "alphanumeric" | "numeric";
export type RestrictedAppsState = "prohibitedApps" | "notApprovedApps";
export type SafeSearchFilterType = "userDefined" | "strict" | "moderate";
export type ScheduledRetireState = "cancelRetire" | "comfirmRetire";
export type SecureAssessmentAccountType = "azureADAccount" | "domainAccount" | "localAccount" | "localGuestAccount";
export type SecureBootWithDMAType = "notConfigured" | "withoutDMA" | "withDMA";
export type ServiceStartType = "manual" | "automatic" | "disabled";
export type SettingSourceType = "deviceConfiguration" | "deviceIntent";
export type SharedPCAccountDeletionPolicyType =
    | "immediate"
    | "diskSpaceThreshold"
    | "diskSpaceThresholdOrInactiveThreshold";
export type SharedPCAllowedAccountType = "notConfigured" | "guest" | "domain";
export type SignInAssistantOptions = "notConfigured" | "disabled";
export type SiteSecurityLevel = "userDefined" | "low" | "mediumLow" | "medium" | "mediumHigh" | "high";
export type StateManagementSetting = "notConfigured" | "blocked" | "allowed";
export type SubjectAlternativeNameType =
    | "none"
    | "emailAddress"
    | "userPrincipalName"
    | "customAzureADAttribute"
    | "domainNameService"
    | "universalResourceIdentifier";
export type SubjectNameFormat =
    | "commonName"
    | "commonNameIncludingEmail"
    | "commonNameAsEmail"
    | "custom"
    | "commonNameAsIMEI"
    | "commonNameAsSerialNumber"
    | "commonNameAsAadDeviceId"
    | "commonNameAsIntuneDeviceId"
    | "commonNameAsDurableDeviceId";
export type UpdateClassification = "userDefined" | "recommendedAndImportant" | "important" | "none";
export type UserEmailSource = "userPrincipalName" | "primarySmtpAddress";
export type UsernameSource = "userPrincipalName" | "primarySmtpAddress" | "samAccountName";
export type VisibilitySetting = "notConfigured" | "hide" | "show";
export type VpnAuthenticationMethod =
    | "certificate"
    | "usernameAndPassword"
    | "sharedSecret"
    | "derivedCredential"
    | "azureAD";
export type VpnClientAuthenticationType = "userAuthentication" | "deviceAuthentication";
export type VpnDeadPeerDetectionRate = "medium" | "none" | "low" | "high";
export type VpnEncryptionAlgorithmType =
    | "aes256"
    | "des"
    | "tripleDes"
    | "aes128"
    | "aes128Gcm"
    | "aes256Gcm"
    | "aes192"
    | "aes192Gcm"
    | "chaCha20Poly1305";
export type VpnIntegrityAlgorithmType = "sha2_256" | "sha1_96" | "sha1_160" | "sha2_384" | "sha2_512" | "md5";
export type VpnLocalIdentifier = "deviceFQDN" | "empty" | "clientCertificateSubjectName";
export type VpnOnDemandRuleConnectionAction = "connect" | "evaluateConnection" | "ignore" | "disconnect";
export type VpnOnDemandRuleConnectionDomainAction = "connectIfNeeded" | "neverConnect";
export type VpnProviderType = "notConfigured" | "appProxy" | "packetTunnel";
export type VpnServerCertificateType = "rsa" | "ecdsa256" | "ecdsa384" | "ecdsa521";
export type VpnServiceExceptionAction = "forceTrafficViaVPN" | "allowTrafficOutside" | "dropTraffic";
export type VpnTrafficRuleAppType = "none" | "desktop" | "universal";
export type VpnTrafficRuleRoutingPolicyType = "none" | "splitTunnel" | "forceTunnel";
export type VpnTunnelConfigurationType = "wifiAndCellular" | "cellular" | "wifi";
export type WebBrowserCookieSettings =
    | "browserDefault"
    | "blockAlways"
    | "allowCurrentWebSite"
    | "allowFromWebsitesVisited"
    | "allowAlways";
export type WeeklySchedule =
    | "userDefined"
    | "everyday"
    | "sunday"
    | "monday"
    | "tuesday"
    | "wednesday"
    | "thursday"
    | "friday"
    | "saturday"
    | "noScheduledScan";
export type WelcomeScreenMeetingInformation =
    | "userDefined"
    | "showOrganizerAndTimeOnly"
    | "showOrganizerAndTimeAndSubject";
export type WiFiAuthenticationMethod = "certificate" | "usernameAndPassword" | "derivedCredential";
export type WifiAuthenticationType = "none" | "user" | "machine" | "machineOrUser" | "guest";
export type WiFiProxySetting = "none" | "manual" | "automatic";
export type WiFiSecurityType = "open" | "wpaPersonal" | "wpaEnterprise" | "wep" | "wpa2Personal" | "wpa2Enterprise";
export type Windows10AppsUpdateRecurrence = "none" | "daily" | "weekly" | "monthly";
export type Windows10AppType = "desktop" | "universal";
export type Windows10DeviceModeType = "standardConfiguration" | "sModeConfiguration";
export type Windows10EditionType =
    | "windows10Enterprise"
    | "windows10EnterpriseN"
    | "windows10Education"
    | "windows10EducationN"
    | "windows10MobileEnterprise"
    | "windows10HolographicEnterprise"
    | "windows10Professional"
    | "windows10ProfessionalN"
    | "windows10ProfessionalEducation"
    | "windows10ProfessionalEducationN"
    | "windows10ProfessionalWorkstation"
    | "windows10ProfessionalWorkstationN"
    | "notConfigured"
    | "windows10Home"
    | "windows10HomeChina"
    | "windows10HomeN"
    | "windows10HomeSingleLanguage"
    | "windows10Mobile"
    | "windows10IoTCore"
    | "windows10IoTCoreCommercial";
export type Windows10VpnAuthenticationMethod =
    | "certificate"
    | "usernameAndPassword"
    | "customEapXml"
    | "derivedCredential";
export type Windows10VpnConnectionType =
    | "pulseSecure"
    | "f5EdgeClient"
    | "dellSonicWallMobileConnect"
    | "checkPointCapsuleVpn"
    | "automatic"
    | "ikEv2"
    | "l2tp"
    | "pptp"
    | "citrix"
    | "paloAltoGlobalProtect"
    | "ciscoAnyConnect";
export type Windows10VpnProfileTarget = "user" | "device" | "autoPilotDevice";
export type WindowsAppStartLayoutTileSize = "hidden" | "small" | "medium" | "wide" | "large";
export type WindowsDefenderTamperProtectionOptions = "notConfigured" | "enable" | "disable";
export type WindowsDeliveryOptimizationMode =
    | "userDefined"
    | "httpOnly"
    | "httpWithPeeringNat"
    | "httpWithPeeringPrivateGroup"
    | "httpWithInternetPeering"
    | "simpleDownload"
    | "bypassMode";
export type WindowsEdgeKioskType = "publicBrowsing" | "fullScreen";
export type WindowsFirewallRuleInterfaceTypes = "notConfigured" | "remoteAccess" | "wireless" | "lan";
export type WindowsFirewallRuleNetworkProfileTypes = "notConfigured" | "domain" | "private" | "public";
export type WindowsFirewallRuleTrafficDirectionType = "notConfigured" | "out" | "in";
export type WindowsHealthMonitoringScope = "undefined" | "healthMonitoring" | "bootPerformance" | "windowsUpdates";
export type WindowsKioskAppType = "unknown" | "store" | "desktop" | "aumId";
export type WindowsPrivacyDataAccessLevel = "notConfigured" | "forceAllow" | "forceDeny" | "userInControl";
export type WindowsPrivacyDataCategory =
    | "notConfigured"
    | "accountInfo"
    | "appsRunInBackground"
    | "calendar"
    | "callHistory"
    | "camera"
    | "contacts"
    | "diagnosticsInfo"
    | "email"
    | "location"
    | "messaging"
    | "microphone"
    | "motion"
    | "notifications"
    | "phone"
    | "radios"
    | "tasks"
    | "syncWithDevices"
    | "trustedDevices";
export type WindowsSModeConfiguration = "noRestriction" | "block" | "unlock";
export type WindowsSpotlightEnablementSettings = "notConfigured" | "disabled" | "enabled";
export type WindowsStartMenuAppListVisibilityType = "userDefined" | "collapse" | "remove" | "disableSettingsApp";
export type WindowsStartMenuModeType = "userDefined" | "fullScreen" | "nonFullScreen";
export type WindowsUpdateForBusinessUpdateWeeks =
    | "userDefined"
    | "firstWeek"
    | "secondWeek"
    | "thirdWeek"
    | "fourthWeek"
    | "everyWeek";
export type WindowsUpdateNotificationDisplayOption =
    | "notConfigured"
    | "defaultNotifications"
    | "restartWarningsOnly"
    | "disableAllNotifications";
export type WindowsUpdateStatus = "upToDate" | "pendingInstallation" | "pendingReboot" | "failed";
export type WindowsUpdateType =
    | "userDefined"
    | "all"
    | "businessReadyOnly"
    | "windowsInsiderBuildFast"
    | "windowsInsiderBuildSlow"
    | "windowsInsiderBuildRelease";
export type WindowsUserAccountControlSettings =
    | "userDefined"
    | "alwaysNotify"
    | "notifyOnAppChanges"
    | "notifyOnAppChangesWithoutDimming"
    | "neverNotify";
export type WindowsVpnConnectionType =
    | "pulseSecure"
    | "f5EdgeClient"
    | "dellSonicWallMobileConnect"
    | "checkPointCapsuleVpn";
export type WiredNetworkInterface =
    | "anyEthernet"
    | "firstActiveEthernet"
    | "secondActiveEthernet"
    | "thirdActiveEthernet"
    | "firstEthernet"
    | "secondEthernet"
    | "thirdEthernet";
export type DeviceManagementConfigurationAzureAdTrustType = "none" | "azureAdJoined" | "addWorkAccount" | "mdmOnly";
export type DeviceManagementConfigurationControlType =
    | "default"
    | "dropdown"
    | "smallTextBox"
    | "largeTextBox"
    | "toggle"
    | "multiheaderGrid"
    | "contextPane";
export type DeviceManagementConfigurationDeviceMode = "none" | "kiosk";
export type DeviceManagementConfigurationPlatforms = "none" | "macOS" | "windows10X" | "windows10";
export type DeviceManagementConfigurationSettingAccessTypes =
    | "none"
    | "add"
    | "copy"
    | "delete"
    | "get"
    | "replace"
    | "execute";
export type DeviceManagementConfigurationSettingUsage = "none" | "configuration";
export type DeviceManagementConfigurationSettingVisibility = "none" | "settingsCatalog" | "template";
export type DeviceManagementConfigurationStringFormat =
    | "none"
    | "email"
    | "guid"
    | "ip"
    | "base64"
    | "url"
    | "version"
    | "xml"
    | "date"
    | "time"
    | "binary"
    | "regEx"
    | "json"
    | "dateTime"
    | "surfaceHub";
export type DeviceManagementConfigurationTechnologies =
    | "none"
    | "mdm"
    | "windows10XManagement"
    | "configManager"
    | "microsoftSense";
export type DeviceManagementConfigurationTemplateFamily =
    | "none"
    | "endpointSecurityAntivirus"
    | "endpointSecurityDiskEncryption"
    | "endpointSecurityFirewall"
    | "endpointSecurityEndpointDetectionAndResponse"
    | "endpointSecurityAttackSurfaceReduction"
    | "endpointSecurityAccountProtection"
    | "endpointSecurityApplicationControl";
export type DeviceManagementConfigurationWindowsSkus =
    | "unknown"
    | "windowsHome"
    | "windowsProfessional"
    | "windowsEnterprise"
    | "windowsEducation"
    | "windowsMobile"
    | "windowsMobileEnterprise"
    | "windowsTeamSurface"
    | "iot"
    | "iotEnterprise"
    | "holoLens"
    | "holoLensEnterprise"
    | "holographicForBusiness"
    | "windowsMultiSession"
    | "surfaceHub";
export type DeviceManagementTemplateLifecycleState =
    | "invalid"
    | "draft"
    | "active"
    | "superseded"
    | "deprecated"
    | "retired";
export type CompanyPortalAction = "unknown" | "remove" | "reset";
export type DeviceManagementExchangeAccessLevel = "none" | "allow" | "block" | "quarantine";
export type DeviceManagementExchangeAccessRuleType = "family" | "model";
export type DeviceManagementExchangeConnectorStatus = "none" | "connectionPending" | "connected" | "disconnected";
export type DeviceManagementExchangeConnectorSyncType = "fullSync" | "deltaSync";
export type DeviceManagementExchangeConnectorType = "onPremises" | "hosted" | "serviceToService" | "dedicated";
export type DeviceManagementPartnerAppType = "unknown" | "singleTenantApp" | "multiTenantApp";
export type DeviceManagementPartnerTenantState =
    | "unknown"
    | "unavailable"
    | "enabled"
    | "terminated"
    | "rejected"
    | "unresponsive";
export type EnrollmentAvailabilityOptions = "availableWithPrompts" | "availableWithoutPrompts" | "unavailable";
export type EnrollmentRestrictionPlatformType =
    | "allPlatforms"
    | "ios"
    | "windows"
    | "windowsPhone"
    | "android"
    | "androidForWork"
    | "androidAosp"
    | "mac";
export type MdmAuthority = "unknown" | "intune" | "sccm" | "office365";
export type MicrosoftStoreForBusinessPortalSelectionOptions = "none" | "companyPortal" | "privateStore";
export type MobileThreatPartnerTenantState = "unavailable" | "available" | "enabled" | "unresponsive";
export type OwnerType = "unknown" | "company" | "personal";
export type VppTokenState =
    | "unknown"
    | "valid"
    | "expired"
    | "invalid"
    | "assignedToExternalMDM"
    | "duplicateLocationId";
export type VppTokenSyncStatus = "none" | "inProgress" | "completed" | "failed";
export type WindowsHelloForBusinessPinUsage = "allowed" | "required" | "disallowed";
export type DeviceManagementComparisonResult = "unknown" | "equal" | "notEqual" | "added" | "removed";
export type DeviceManagementTemplateSubtype =
    | "none"
    | "firewall"
    | "diskEncryption"
    | "attackSurfaceReduction"
    | "endpointDetectionReponse"
    | "accountProtection"
    | "antivirus"
    | "firewallSharedAppList"
    | "firewallSharedIpList"
    | "firewallSharedPortlist";
export type DeviceManagementTemplateType =
    | "securityBaseline"
    | "specializedDevices"
    | "advancedThreatProtectionSecurityBaseline"
    | "deviceConfiguration"
    | "custom"
    | "securityTemplate"
    | "microsoftEdgeSecurityBaseline"
    | "microsoftOffice365ProPlusSecurityBaseline"
    | "deviceCompliance"
    | "deviceConfigurationForOffice365"
    | "cloudPC"
    | "firewallSharedSettings";
export type DeviceManangementIntentValueType =
    | "integer"
    | "boolean"
    | "string"
    | "complex"
    | "collection"
    | "abstractComplex";
export type SecurityBaselineComplianceState =
    | "unknown"
    | "secure"
    | "notApplicable"
    | "notSecure"
    | "error"
    | "conflict";
export type SecurityBaselinePolicySourceType = "deviceConfiguration" | "deviceIntent";
export type AdminConsentState = "notConfigured" | "granted" | "notGranted";
export type AppLogDecryptionAlgorithm = "aes256";
export type AppLogUploadState = "pending" | "completed" | "failed";
export type ChassisType =
    | "unknown"
    | "desktop"
    | "laptop"
    | "worksWorkstation"
    | "enterpriseServer"
    | "phone"
    | "tablet"
    | "mobileOther"
    | "mobileUnknown";
export type ComanagementEligibleType =
    | "comanaged"
    | "eligible"
    | "eligibleButNotAzureAdJoined"
    | "needsOsUpdate"
    | "ineligible";
export type ComplianceState =
    | "unknown"
    | "compliant"
    | "noncompliant"
    | "conflict"
    | "error"
    | "inGracePeriod"
    | "configManager";
export type ConfigurationManagerActionDeliveryStatus =
    | "unknown"
    | "pendingDelivery"
    | "deliveredToConnectorService"
    | "failedToDeliverToConnectorService"
    | "deliveredToOnPremisesServer";
export type ConfigurationManagerActionType =
    | "refreshMachinePolicy"
    | "refreshUserPolicy"
    | "wakeUpClient"
    | "appEvaluation";
export type ConfigurationManagerClientState =
    | "unknown"
    | "installed"
    | "healthy"
    | "installFailed"
    | "updateFailed"
    | "communicationError";
export type DeviceCustomAttributeValueType = "integer" | "string" | "dateTime";
export type DeviceEnrollmentType =
    | "unknown"
    | "userEnrollment"
    | "deviceEnrollmentManager"
    | "appleBulkWithUser"
    | "appleBulkWithoutUser"
    | "windowsAzureADJoin"
    | "windowsBulkUserless"
    | "windowsAutoEnrollment"
    | "windowsBulkAzureDomainJoin"
    | "windowsCoManagement"
    | "windowsAzureADJoinUsingDeviceAuth"
    | "appleUserEnrollment"
    | "appleUserEnrollmentWithServiceAccount"
    | "azureAdJoinUsingAzureVmExtension"
    | "androidEnterpriseDedicatedDevice"
    | "androidEnterpriseFullyManaged"
    | "androidEnterpriseCorporateWorkProfile";
export type DeviceGuardLocalSystemAuthorityCredentialGuardState =
    | "running"
    | "rebootRequired"
    | "notLicensed"
    | "notConfigured"
    | "virtualizationBasedSecurityNotRunning";
export type DeviceGuardVirtualizationBasedSecurityHardwareRequirementState =
    | "meetHardwareRequirements"
    | "secureBootRequired"
    | "dmaProtectionRequired"
    | "hyperVNotSupportedForGuestVM"
    | "hyperVNotAvailable";
export type DeviceGuardVirtualizationBasedSecurityState =
    | "running"
    | "rebootRequired"
    | "require64BitArchitecture"
    | "notLicensed"
    | "notConfigured"
    | "doesNotMeetHardwareRequirements"
    | "other";
export type DeviceLogCollectionTemplateType = "predefined";
export type DeviceManagementExchangeAccessState = "none" | "unknown" | "allowed" | "blocked" | "quarantined";
export type DeviceManagementExchangeAccessStateReason =
    | "none"
    | "unknown"
    | "exchangeGlobalRule"
    | "exchangeIndividualRule"
    | "exchangeDeviceRule"
    | "exchangeUpgrade"
    | "exchangeMailboxPolicy"
    | "other"
    | "compliant"
    | "notCompliant"
    | "notEnrolled"
    | "unknownLocation"
    | "mfaRequired"
    | "azureADBlockDueToAccessPolicy"
    | "compromisedPassword"
    | "deviceNotKnownWithManagedApp";
export type DeviceManagementSubscriptions =
    | "none"
    | "intune"
    | "office365"
    | "intunePremium"
    | "intune_EDU"
    | "intune_SMB";
export type DeviceManagementSubscriptionState =
    | "pending"
    | "active"
    | "warning"
    | "disabled"
    | "deleted"
    | "blocked"
    | "lockedOut";
export type DeviceRegistrationState =
    | "notRegistered"
    | "registered"
    | "revoked"
    | "keyConflict"
    | "approvalPending"
    | "certificateReset"
    | "notRegisteredPendingEnrollment"
    | "unknown";
export type DiskType = "unkown" | "hdd" | "ssd";
export type GlobalDeviceHealthScriptState = "notConfigured" | "pending" | "enabled";
export type HealthState = "unknown" | "healthy" | "unhealthy";
export type JoinType = "unknown" | "azureADJoined" | "azureADRegistered" | "hybridAzureADJoined";
export type LostModeState = "disabled" | "enabled";
export type ManagedDeviceArchitecture = "unknown" | "x86" | "x64" | "arm" | "arM64";
export type ManagedDeviceManagementFeatures = "none" | "microsoftManagedDesktop";
export type ManagedDevicePartnerReportedHealthState =
    | "unknown"
    | "activated"
    | "deactivated"
    | "secured"
    | "lowSeverity"
    | "mediumSeverity"
    | "highSeverity"
    | "unresponsive"
    | "compromised"
    | "misconfigured";
export type ManagedDeviceRemoteAction =
    | "retire"
    | "delete"
    | "fullScan"
    | "quickScan"
    | "signatureUpdate"
    | "wipe"
    | "customTextNotification"
    | "rebootNow"
    | "setDeviceName"
    | "syncDevice"
    | "deprovision"
    | "disable"
    | "reenable"
    | "moveDeviceToOrganizationalUnit";
export type ManagedInstallerStatus = "disabled" | "enabled";
export type ManagementState =
    | "managed"
    | "retirePending"
    | "retireFailed"
    | "wipePending"
    | "wipeFailed"
    | "unhealthy"
    | "deletePending"
    | "retireIssued"
    | "wipeIssued"
    | "wipeCanceled"
    | "retireCanceled"
    | "discovered";
export type OperatingSystemUpgradeEligibility = "upgraded" | "unknown" | "notCapable" | "capable";
export type RemediationState = "unknown" | "skipped" | "success" | "remediationFailed" | "scriptError";
export type RemoteAction =
    | "unknown"
    | "factoryReset"
    | "removeCompanyData"
    | "resetPasscode"
    | "remoteLock"
    | "enableLostMode"
    | "disableLostMode"
    | "locateDevice"
    | "rebootNow"
    | "recoverPasscode"
    | "cleanWindowsDevice"
    | "logoutSharedAppleDeviceActiveUser"
    | "quickScan"
    | "fullScan"
    | "windowsDefenderUpdateSignatures"
    | "factoryResetKeepEnrollmentData"
    | "updateDeviceAccount"
    | "automaticRedeployment"
    | "shutDown"
    | "rotateBitLockerKeys"
    | "rotateFileVaultKey"
    | "getFileVaultKey"
    | "setDeviceName"
    | "activateDeviceEsim";
export type RunState = "unknown" | "success" | "fail" | "scriptError" | "pending" | "notApplicable";
export type UserExperienceAnalyticsHealthState = "unknown" | "insufficientData" | "needsAttention" | "meetingGoals";
export type UserExperienceAnalyticsInsightSeverity = "none" | "informational" | "warning" | "error";
export type UserExperienceAnalyticsOperatingSystemRestartCategory =
    | "unknown"
    | "restartWithUpdate"
    | "restartWithoutUpdate"
    | "blueScreen"
    | "shutdownWithUpdate"
    | "shutdownWithoutUpdate"
    | "longPowerButtonPress"
    | "bootError"
    | "update";
export type UserExperienceAnalyticsSummarizedBy =
    | "none"
    | "model"
    | "allRegressions"
    | "modelRegression"
    | "manufacturerRegression"
    | "operatingSystemVersionRegression";
export type WindowsDefenderProductStatus =
    | "noStatus"
    | "serviceNotRunning"
    | "serviceStartedWithoutMalwareProtection"
    | "pendingFullScanDueToThreatAction"
    | "pendingRebootDueToThreatAction"
    | "pendingManualStepsDueToThreatAction"
    | "avSignaturesOutOfDate"
    | "asSignaturesOutOfDate"
    | "noQuickScanHappenedForSpecifiedPeriod"
    | "noFullScanHappenedForSpecifiedPeriod"
    | "systemInitiatedScanInProgress"
    | "systemInitiatedCleanInProgress"
    | "samplesPendingSubmission"
    | "productRunningInEvaluationMode"
    | "productRunningInNonGenuineMode"
    | "productExpired"
    | "offlineScanRequired"
    | "serviceShutdownAsPartOfSystemShutdown"
    | "threatRemediationFailedCritically"
    | "threatRemediationFailedNonCritically"
    | "noStatusFlagsSet"
    | "platformOutOfDate"
    | "platformUpdateInProgress"
    | "platformAboutToBeOutdated"
    | "signatureOrPlatformEndOfLifeIsPastOrIsImpending"
    | "windowsSModeSignaturesInUseOnNonWin10SInstall";
export type WindowsDeviceHealthState =
    | "clean"
    | "fullScanPending"
    | "rebootPending"
    | "manualStepsPending"
    | "offlineScanPending"
    | "critical";
export type WindowsMalwareCategory =
    | "invalid"
    | "adware"
    | "spyware"
    | "passwordStealer"
    | "trojanDownloader"
    | "worm"
    | "backdoor"
    | "remoteAccessTrojan"
    | "trojan"
    | "emailFlooder"
    | "keylogger"
    | "dialer"
    | "monitoringSoftware"
    | "browserModifier"
    | "cookie"
    | "browserPlugin"
    | "aolExploit"
    | "nuker"
    | "securityDisabler"
    | "jokeProgram"
    | "hostileActiveXControl"
    | "softwareBundler"
    | "stealthNotifier"
    | "settingsModifier"
    | "toolBar"
    | "remoteControlSoftware"
    | "trojanFtp"
    | "potentialUnwantedSoftware"
    | "icqExploit"
    | "trojanTelnet"
    | "exploit"
    | "filesharingProgram"
    | "malwareCreationTool"
    | "remote_Control_Software"
    | "tool"
    | "trojanDenialOfService"
    | "trojanDropper"
    | "trojanMassMailer"
    | "trojanMonitoringSoftware"
    | "trojanProxyServer"
    | "virus"
    | "known"
    | "unknown"
    | "spp"
    | "behavior"
    | "vulnerability"
    | "policy"
    | "enterpriseUnwantedSoftware"
    | "ransom"
    | "hipsRule";
export type WindowsMalwareExecutionState = "unknown" | "blocked" | "allowed" | "running" | "notRunning";
export type WindowsMalwareSeverity = "unknown" | "low" | "moderate" | "high" | "severe";
export type WindowsMalwareState =
    | "unknown"
    | "detected"
    | "cleaned"
    | "quarantined"
    | "removed"
    | "allowed"
    | "blocked"
    | "cleanFailed"
    | "quarantineFailed"
    | "removeFailed"
    | "allowFailed"
    | "abandoned"
    | "blockFailed";
export type WindowsMalwareThreatState =
    | "active"
    | "actionFailed"
    | "manualStepsRequired"
    | "fullScanRequired"
    | "rebootRequired"
    | "remediatedWithNonCriticalFailures"
    | "quarantined"
    | "removed"
    | "cleaned"
    | "allowed"
    | "noStatusCleared";
export type DeviceManagementDerivedCredentialIssuer = "intercede" | "entrustDatacard" | "purebred" | "xTec";
export type DeviceManagementDerivedCredentialNotificationType = "none" | "companyPortal" | "email";
export type DeviceManagementResourceAccessProfileIntent = "apply" | "remove";
export type AppleUserInitiatedEnrollmentType = "unknown" | "device" | "user";
export type DepTokenType = "none" | "dep" | "appleSchoolManager";
export type DiscoverySource = "unknown" | "adminImport" | "deviceEnrollmentProgram";
export type EnrollmentState = "unknown" | "enrolled" | "pendingReset" | "failed" | "notContacted" | "blocked";
export type ImportedDeviceIdentityType = "unknown" | "imei" | "serialNumber";
export type ImportedWindowsAutopilotDeviceIdentityImportStatus =
    | "unknown"
    | "pending"
    | "partial"
    | "complete"
    | "error";
export type ImportedWindowsAutopilotDeviceIdentityUploadStatus = "noUpload" | "pending" | "complete" | "error";
export type ITunesPairingMode = "disallow" | "allow" | "requiresCertificate";
export type Platform = "unknown" | "ios" | "android" | "windows" | "windowsMobile" | "macOS";
export type WindowsAutopilotDeviceType = "windowsPc" | "surfaceHub2" | "holoLens";
export type WindowsAutopilotProfileAssignmentDetailedStatus =
    | "none"
    | "hardwareRequirementsNotMet"
    | "surfaceHubProfileNotSupported"
    | "holoLensProfileNotSupported"
    | "windowsPcProfileNotSupported";
export type WindowsAutopilotProfileAssignmentStatus =
    | "unknown"
    | "assignedInSync"
    | "assignedOutOfSync"
    | "assignedUnkownSyncState"
    | "notAssigned"
    | "pending"
    | "failed";
export type WindowsAutopilotSyncStatus = "unknown" | "inProgress" | "completed" | "failed";
export type WindowsDeviceUsageType = "singleUser" | "shared";
export type WindowsUserType = "administrator" | "standard";
export type BinaryManagementConditionExpressionOperatorType = "or" | "and";
export type UnaryManagementConditionExpressionOperatorType = "not";
export type GroupPolicyMigrationReadiness = "none" | "partial" | "complete" | "error" | "notApplicable";
export type GroupPolicySettingScope = "unknown" | "device" | "user";
export type GroupPolicySettingType =
    | "unknown"
    | "policy"
    | "account"
    | "securityOptions"
    | "userRightsAssignment"
    | "auditSetting"
    | "windowsFirewallSettings";
export type MdmSupportedState = "unknown" | "supported" | "unsupported" | "deprecated";
export type GroupPolicyConfigurationType = "policy" | "preference";
export type GroupPolicyDefinitionClassType = "user" | "machine";
export type GroupPolicyOperationStatus = "unknown" | "inProgress" | "success" | "failed";
export type GroupPolicyOperationType =
    | "none"
    | "upload"
    | "uploadNewVersion"
    | "addLanguageFiles"
    | "removeLanguageFiles"
    | "updateLanguageFiles"
    | "remove";
export type GroupPolicyType = "admxBacked" | "admxIngested";
export type GroupPolicyUploadedDefinitionFileStatus =
    | "none"
    | "uploadInProgress"
    | "available"
    | "assigned"
    | "removalInProgress"
    | "uploadFailed"
    | "removalFailed";
export type AndroidManagedAppSafetyNetAppsVerificationType = "none" | "enabled";
export type AndroidManagedAppSafetyNetDeviceAttestationType =
    | "none"
    | "basicIntegrity"
    | "basicIntegrityAndDeviceCertification";
export type AndroidManagedAppSafetyNetEvaluationType = "basic" | "hardwareBacked";
export type AppManagementLevel = "unspecified" | "unmanaged" | "mdm" | "androidEnterprise";
export type ManagedAppClipboardSharingLevel = "allApps" | "managedAppsWithPasteIn" | "managedApps" | "blocked";
export type ManagedAppDataEncryptionType =
    | "useDeviceSettings"
    | "afterDeviceRestart"
    | "whenDeviceLockedExceptOpenFiles"
    | "whenDeviceLocked";
export type ManagedAppDataIngestionLocation = "oneDriveForBusiness" | "sharePoint" | "camera";
export type ManagedAppDataStorageLocation = "oneDriveForBusiness" | "sharePoint" | "box" | "localStorage";
export type ManagedAppDataTransferLevel = "allApps" | "managedApps" | "none";
export type ManagedAppDeviceThreatLevel = "notConfigured" | "secured" | "low" | "medium" | "high";
export type ManagedAppFlaggedReason =
    | "none"
    | "rootedDevice"
    | "androidBootloaderUnlocked"
    | "androidFactoryRomModified";
export type ManagedAppNotificationRestriction = "allow" | "blockOrganizationalData" | "block";
export type ManagedAppPhoneNumberRedirectLevel = "allApps" | "managedApps" | "customApp" | "blocked";
export type ManagedAppPinCharacterSet = "numeric" | "alphanumericAndSymbol";
export type ManagedAppRemediationAction = "block" | "wipe" | "warn";
export type ManagedBrowserType = "notConfigured" | "microsoftEdge";
export type TargetedManagedAppGroupType = "selectedPublicApps" | "allCoreMicrosoftApps" | "allMicrosoftApps" | "allApps";
export type WindowsInformationProtectionEnforcementLevel =
    | "noProtection"
    | "encryptAndAuditOnly"
    | "encryptAuditAndPrompt"
    | "encryptAuditAndBlock";
export type WindowsInformationProtectionPinCharacterRequirements = "notAllow" | "requireAtLeastOne" | "allow";
export type MicrosoftTunnelLogCollectionStatus = "pending" | "completed" | "failed";
export type MicrosoftTunnelServerHealthStatus =
    | "unknown"
    | "healthy"
    | "unhealthy"
    | "warning"
    | "offline"
    | "upgradeInProgress"
    | "upgradeFailed";
export type NotificationTemplateBrandingOptions =
    | "none"
    | "includeCompanyLogo"
    | "includeCompanyName"
    | "includeContactInformation"
    | "includeCompanyPortalLink";
export type DeviceManagementDomainJoinConnectorState = "active" | "error" | "inactive";
export type AppVulnerabilityTaskMitigationType = "unknown" | "update" | "uninstall" | "securityConfiguration";
export type DeviceAppManagementTaskCategory = "unknown" | "advancedThreatProtection";
export type DeviceAppManagementTaskPriority = "none" | "high" | "low";
export type DeviceAppManagementTaskStatus = "unknown" | "pending" | "active" | "completed" | "rejected";
export type EndpointSecurityConfigurationApplicablePlatform =
    | "unknown"
    | "macOS"
    | "windows10AndLater"
    | "windows10AndWindowsServer";
export type EndpointSecurityConfigurationProfileType =
    | "unknown"
    | "antivirus"
    | "windowsSecurity"
    | "bitLocker"
    | "fileVault"
    | "firewall"
    | "firewallRules"
    | "endpointDetectionAndResponse"
    | "deviceControl"
    | "appAndBrowserIsolation"
    | "exploitProtection"
    | "webProtection"
    | "applicationControl"
    | "attackSurfaceReductionRules"
    | "accountProtection";
export type EndpointSecurityConfigurationType =
    | "unknown"
    | "antivirus"
    | "diskEncryption"
    | "firewall"
    | "endpointDetectionAndResponse"
    | "attackSurfaceReduction"
    | "accountProtection";
export type RoleAssignmentScopeType = "resourceScope" | "allDevices" | "allLicensedUsers" | "allDevicesAndLicensedUsers";
export type RemoteAssistanceOnboardingStatus = "notOnboarded" | "onboarding" | "onboarded";
export type RemoteAssistanceState = "notConfigured" | "disabled" | "enabled";
export type DeviceManagementExportJobLocalizationType = "localizedValuesAsAdditionalColumn" | "replaceLocalizableValues";
export type DeviceManagementReportFileFormat = "csv" | "pdf";
export type DeviceManagementReportStatus = "unknown" | "notStarted" | "inProgress" | "completed" | "failed";
export type DeviceManagementScheduledReportRecurrence = "none" | "daily" | "weekly" | "monthly";
export type EmbeddedSIMDeviceStateValue =
    | "notEvaluated"
    | "failed"
    | "installing"
    | "installed"
    | "deleting"
    | "error"
    | "deleted"
    | "removedByUser";
export type DeviceEnrollmentFailureReason =
    | "unknown"
    | "authentication"
    | "authorization"
    | "accountValidation"
    | "userValidation"
    | "deviceNotSupported"
    | "inMaintenance"
    | "badRequest"
    | "featureNotSupported"
    | "enrollmentRestrictionsEnforced"
    | "clientDisconnected"
    | "userAbandonment";
export type DeviceManagementAutopilotPolicyComplianceStatus =
    | "unknown"
    | "compliant"
    | "installed"
    | "notCompliant"
    | "notInstalled"
    | "error";
export type DeviceManagementAutopilotPolicyType = "unknown" | "application" | "appModel" | "configurationPolicy";
export type MobileAppActionType =
    | "unknown"
    | "installCommandSent"
    | "installed"
    | "uninstalled"
    | "userRequestedInstall";
export type MobileAppIntent =
    | "available"
    | "notAvailable"
    | "requiredInstall"
    | "requiredUninstall"
    | "requiredAndAvailableInstall"
    | "availableInstallWithoutEnrollment"
    | "exclude";
export type WindowsAutopilotDeploymentState =
    | "unknown"
    | "success"
    | "inProgress"
    | "failure"
    | "successWithTimeout"
    | "notAttempted"
    | "disabled";
export type WindowsAutopilotEnrollmentType =
    | "unknown"
    | "azureADJoinedWithAutopilotProfile"
    | "offlineDomainJoined"
    | "azureADJoinedUsingDeviceAuthWithAutopilotProfile"
    | "azureADJoinedUsingDeviceAuthWithoutAutopilotProfile"
    | "azureADJoinedWithOfflineAutopilotProfile"
    | "azureADJoinedWithWhiteGlove"
    | "offlineDomainJoinedWithWhiteGlove"
    | "offlineDomainJoinedWithOfflineAutopilotProfile";
export type WindowsDefenderApplicationControlSupplementalPolicyStatuses =
    | "unknown"
    | "success"
    | "tokenError"
    | "notAuthorizedByToken"
    | "policyNotFound";
export type WindowsQualityUpdateClassification = "all" | "security" | "nonSecurity";
export type ApplicationType = "universal" | "desktop";
export type UserPfxIntendedPurpose = "unassigned" | "smimeEncryption" | "smimeSigning" | "vpn" | "wifi";
export type UserPfxPaddingScheme = "none" | "pkcs1" | "oaepSha1" | "oaepSha256" | "oaepSha384" | "oaepSha512";
export type PostType = "regular" | "quick" | "strategic" | "unknownFutureValue";
export type ServiceHealthClassificationType = "advisory" | "incident" | "unknownFutureValue";
export type ServiceHealthOrigin = "microsoft" | "thirdParty" | "customer" | "unknownFutureValue";
export type ServiceHealthStatus =
    | "serviceOperational"
    | "investigating"
    | "restoringService"
    | "verifyingService"
    | "serviceRestored"
    | "postIncidentReviewPublished"
    | "serviceDegradation"
    | "serviceInterruption"
    | "extendedRecovery"
    | "falsePositive"
    | "investigationSuspended"
    | "resolved"
    | "mitigatedExternal"
    | "mitigated"
    | "resolvedExternal"
    | "confirmed"
    | "reported"
    | "unknownFutureValue";
export type ServiceUpdateCategory = "preventOrFixIssue" | "planForChange" | "stayInformed" | "unknownFutureValue";
export type ServiceUpdateSeverity = "normal" | "high" | "critical" | "unknownFutureValue";
export type BucketAggregationSortProperty = "count" | "keyAsString" | "keyAsNumber";
export type EntityType =
    | "event"
    | "message"
    | "driveItem"
    | "externalItem"
    | "site"
    | "list"
    | "listItem"
    | "drive"
    | "unknownFutureValue";
export type SearchAlterationType = "suggestion" | "modification";
export type Priority = "None" | "High" | "Low";
export type PlannerContainerType = "group" | "unknownFutureValue" | "roster";
export type PlannerPlanContextType = "teamsTab" | "sharePointPage" | "meetingNotes" | "other" | "unknownFutureValue";
export type PlannerPreviewType = "automatic" | "noPreview" | "checklist" | "description" | "reference";
export type OnenotePatchActionType = "Replace" | "Append" | "Delete" | "Insert" | "Prepend";
export type OnenotePatchInsertPosition = "After" | "Before";
export type OnenoteSourceService = "Unknown" | "OneDrive" | "OneDriveForBusiness" | "OnPremOneDriveForBusiness";
export type OnenoteUserRole = "None" | "Owner" | "Contributor" | "Reader";
export type OperationStatus = "NotStarted" | "Running" | "Completed" | "Failed";
export type AllowedAudiences =
    | "me"
    | "family"
    | "contacts"
    | "groupMembers"
    | "organization"
    | "federatedOrganizations"
    | "everyone"
    | "unknownFutureValue";
export type LanguageProficiencyLevel =
    | "elementary"
    | "conversational"
    | "limitedWorking"
    | "professionalWorking"
    | "fullProfessional"
    | "nativeOrBilingual"
    | "unknownFutureValue";
export type PersonAnnualEventType = "birthday" | "wedding" | "work" | "other" | "unknownFutureValue";
export type PersonRelationship =
    | "manager"
    | "colleague"
    | "directReport"
    | "dotLineReport"
    | "assistant"
    | "dotLineManager"
    | "alternateContact"
    | "friend"
    | "spouse"
    | "sibling"
    | "child"
    | "parent"
    | "sponsor"
    | "emergencyContact"
    | "other"
    | "unknownFutureValue";
export type SkillProficiencyLevel =
    | "elementary"
    | "limitedWorking"
    | "generalProfessional"
    | "advancedProfessional"
    | "expert"
    | "unknownFutureValue";
export type TranslationBehavior = "Ask" | "Yes" | "No";
export type RoleAssignmentScheduleFilterByCurrentUserOptions = "principal" | "unknownFutureValue";
export type RoleAssignmentScheduleInstanceFilterByCurrentUserOptions = "principal" | "unknownFutureValue";
export type RoleAssignmentScheduleRequestFilterByCurrentUserOptions =
    | "principal"
    | "createdBy"
    | "approver"
    | "unknownFutureValue";
export type RoleEligibilityScheduleFilterByCurrentUserOptions = "principal" | "unknownFutureValue";
export type RoleEligibilityScheduleInstanceFilterByCurrentUserOptions = "principal" | "unknownFutureValue";
export type RoleEligibilityScheduleRequestFilterByCurrentUserOptions =
    | "principal"
    | "createdBy"
    | "approver"
    | "unknownFutureValue";
export type ApprovalState = "pending" | "approved" | "denied" | "aborted" | "canceled";
export type RoleSummaryStatus = "ok" | "bad";
export type SetupStatus =
    | "unknown"
    | "notRegisteredYet"
    | "registeredSetupNotStarted"
    | "registeredSetupInProgress"
    | "registrationAndSetupCompleted"
    | "registrationFailed"
    | "registrationTimedOut"
    | "disabled";
export type JobHistorySummaryType = "Printer" | "User" | "Group";
export type PrintColorConfiguration = "blackAndWhite" | "grayscale" | "color" | "auto";
export type PrintColorMode = "blackAndWhite" | "grayscale" | "color" | "auto";
export type PrintDuplexConfiguration = "twoSidedLongEdge" | "twoSidedShortEdge" | "oneSided";
export type PrintDuplexMode = "flipOnLongEdge" | "flipOnShortEdge" | "oneSided";
export type PrinterFeedDirection = "longEdgeFirst" | "shortEdgeFirst";
export type PrinterFeedOrientation = "longEdgeFirst" | "shortEdgeFirst";
export type PrinterProcessingState = "unknown" | "idle" | "processing" | "stopped" | "unknownFutureValue";
export type PrinterProcessingStateDetail =
    | "paused"
    | "mediaJam"
    | "mediaNeeded"
    | "mediaLow"
    | "mediaEmpty"
    | "coverOpen"
    | "interlockOpen"
    | "outputTrayMissing"
    | "outputAreaFull"
    | "markerSupplyLow"
    | "markerSupplyEmpty"
    | "inputTrayMissing"
    | "outputAreaAlmostFull"
    | "markerWasteAlmostFull"
    | "markerWasteFull"
    | "fuserOverTemp"
    | "fuserUnderTemp"
    | "other"
    | "none"
    | "movingToPaused"
    | "shutdown"
    | "connectingToDevice"
    | "timedOut"
    | "stopping"
    | "stoppedPartially"
    | "tonerLow"
    | "tonerEmpty"
    | "spoolAreaFull"
    | "doorOpen"
    | "opticalPhotoConductorNearEndOfLife"
    | "opticalPhotoConductorLifeOver"
    | "developerLow"
    | "developerEmpty"
    | "interpreterResourceUnavailable"
    | "unknownFutureValue"
    | "alertRemovalOfBinaryChangeEntry"
    | "banderAdded"
    | "banderAlmostEmpty"
    | "banderAlmostFull"
    | "banderAtLimit"
    | "banderClosed"
    | "banderConfigurationChange"
    | "banderCoverClosed"
    | "banderCoverOpen"
    | "banderEmpty"
    | "banderFull"
    | "banderInterlockClosed"
    | "banderInterlockOpen"
    | "banderJam"
    | "banderLifeAlmostOver"
    | "banderLifeOver"
    | "banderMemoryExhausted"
    | "banderMissing"
    | "banderMotorFailure"
    | "banderNearLimit"
    | "banderOffline"
    | "banderOpened"
    | "banderOverTemperature"
    | "banderPowerSaver"
    | "banderRecoverableFailure"
    | "banderRecoverableStorage"
    | "banderRemoved"
    | "banderResourceAdded"
    | "banderResourceRemoved"
    | "banderThermistorFailure"
    | "banderTimingFailure"
    | "banderTurnedOff"
    | "banderTurnedOn"
    | "banderUnderTemperature"
    | "banderUnrecoverableFailure"
    | "banderUnrecoverableStorageError"
    | "banderWarmingUp"
    | "binderAdded"
    | "binderAlmostEmpty"
    | "binderAlmostFull"
    | "binderAtLimit"
    | "binderClosed"
    | "binderConfigurationChange"
    | "binderCoverClosed"
    | "binderCoverOpen"
    | "binderEmpty"
    | "binderFull"
    | "binderInterlockClosed"
    | "binderInterlockOpen"
    | "binderJam"
    | "binderLifeAlmostOver"
    | "binderLifeOver"
    | "binderMemoryExhausted"
    | "binderMissing"
    | "binderMotorFailure"
    | "binderNearLimit"
    | "binderOffline"
    | "binderOpened"
    | "binderOverTemperature"
    | "binderPowerSaver"
    | "binderRecoverableFailure"
    | "binderRecoverableStorage"
    | "binderRemoved"
    | "binderResourceAdded"
    | "binderResourceRemoved"
    | "binderThermistorFailure"
    | "binderTimingFailure"
    | "binderTurnedOff"
    | "binderTurnedOn"
    | "binderUnderTemperature"
    | "binderUnrecoverableFailure"
    | "binderUnrecoverableStorageError"
    | "binderWarmingUp"
    | "cameraFailure"
    | "chamberCooling"
    | "chamberFailure"
    | "chamberHeating"
    | "chamberTemperatureHigh"
    | "chamberTemperatureLow"
    | "cleanerLifeAlmostOver"
    | "cleanerLifeOver"
    | "configurationChange"
    | "deactivated"
    | "deleted"
    | "dieCutterAdded"
    | "dieCutterAlmostEmpty"
    | "dieCutterAlmostFull"
    | "dieCutterAtLimit"
    | "dieCutterClosed"
    | "dieCutterConfigurationChange"
    | "dieCutterCoverClosed"
    | "dieCutterCoverOpen"
    | "dieCutterEmpty"
    | "dieCutterFull"
    | "dieCutterInterlockClosed"
    | "dieCutterInterlockOpen"
    | "dieCutterJam"
    | "dieCutterLifeAlmostOver"
    | "dieCutterLifeOver"
    | "dieCutterMemoryExhausted"
    | "dieCutterMissing"
    | "dieCutterMotorFailure"
    | "dieCutterNearLimit"
    | "dieCutterOffline"
    | "dieCutterOpened"
    | "dieCutterOverTemperature"
    | "dieCutterPowerSaver"
    | "dieCutterRecoverableFailure"
    | "dieCutterRecoverableStorage"
    | "dieCutterRemoved"
    | "dieCutterResourceAdded"
    | "dieCutterResourceRemoved"
    | "dieCutterThermistorFailure"
    | "dieCutterTimingFailure"
    | "dieCutterTurnedOff"
    | "dieCutterTurnedOn"
    | "dieCutterUnderTemperature"
    | "dieCutterUnrecoverableFailure"
    | "dieCutterUnrecoverableStorageError"
    | "dieCutterWarmingUp"
    | "extruderCooling"
    | "extruderFailure"
    | "extruderHeating"
    | "extruderJam"
    | "extruderTemperatureHigh"
    | "extruderTemperatureLow"
    | "fanFailure"
    | "faxModemLifeAlmostOver"
    | "faxModemLifeOver"
    | "faxModemMissing"
    | "faxModemTurnedOff"
    | "faxModemTurnedOn"
    | "folderAdded"
    | "folderAlmostEmpty"
    | "folderAlmostFull"
    | "folderAtLimit"
    | "folderClosed"
    | "folderConfigurationChange"
    | "folderCoverClosed"
    | "folderCoverOpen"
    | "folderEmpty"
    | "folderFull"
    | "folderInterlockClosed"
    | "folderInterlockOpen"
    | "folderJam"
    | "folderLifeAlmostOver"
    | "folderLifeOver"
    | "folderMemoryExhausted"
    | "folderMissing"
    | "folderMotorFailure"
    | "folderNearLimit"
    | "folderOffline"
    | "folderOpened"
    | "folderOverTemperature"
    | "folderPowerSaver"
    | "folderRecoverableFailure"
    | "folderRecoverableStorage"
    | "folderRemoved"
    | "folderResourceAdded"
    | "folderResourceRemoved"
    | "folderThermistorFailure"
    | "folderTimingFailure"
    | "folderTurnedOff"
    | "folderTurnedOn"
    | "folderUnderTemperature"
    | "folderUnrecoverableFailure"
    | "folderUnrecoverableStorageError"
    | "folderWarmingUp"
    | "hibernate"
    | "holdNewJobs"
    | "identifyPrinterRequested"
    | "imprinterAdded"
    | "imprinterAlmostEmpty"
    | "imprinterAlmostFull"
    | "imprinterAtLimit"
    | "imprinterClosed"
    | "imprinterConfigurationChange"
    | "imprinterCoverClosed"
    | "imprinterCoverOpen"
    | "imprinterEmpty"
    | "imprinterFull"
    | "imprinterInterlockClosed"
    | "imprinterInterlockOpen"
    | "imprinterJam"
    | "imprinterLifeAlmostOver"
    | "imprinterLifeOver"
    | "imprinterMemoryExhausted"
    | "imprinterMissing"
    | "imprinterMotorFailure"
    | "imprinterNearLimit"
    | "imprinterOffline"
    | "imprinterOpened"
    | "imprinterOverTemperature"
    | "imprinterPowerSaver"
    | "imprinterRecoverableFailure"
    | "imprinterRecoverableStorage"
    | "imprinterRemoved"
    | "imprinterResourceAdded"
    | "imprinterResourceRemoved"
    | "imprinterThermistorFailure"
    | "imprinterTimingFailure"
    | "imprinterTurnedOff"
    | "imprinterTurnedOn"
    | "imprinterUnderTemperature"
    | "imprinterUnrecoverableFailure"
    | "imprinterUnrecoverableStorageError"
    | "imprinterWarmingUp"
    | "inputCannotFeedSizeSelected"
    | "inputManualInputRequest"
    | "inputMediaColorChange"
    | "inputMediaFormPartsChange"
    | "inputMediaSizeChange"
    | "inputMediaTrayFailure"
    | "inputMediaTrayFeedError"
    | "inputMediaTrayJam"
    | "inputMediaTypeChange"
    | "inputMediaWeightChange"
    | "inputPickRollerFailure"
    | "inputPickRollerLifeOver"
    | "inputPickRollerLifeWarn"
    | "inputPickRollerMissing"
    | "inputTrayElevationFailure"
    | "inputTrayPositionFailure"
    | "inserterAdded"
    | "inserterAlmostEmpty"
    | "inserterAlmostFull"
    | "inserterAtLimit"
    | "inserterClosed"
    | "inserterConfigurationChange"
    | "inserterCoverClosed"
    | "inserterCoverOpen"
    | "inserterEmpty"
    | "inserterFull"
    | "inserterInterlockClosed"
    | "inserterInterlockOpen"
    | "inserterJam"
    | "inserterLifeAlmostOver"
    | "inserterLifeOver"
    | "inserterMemoryExhausted"
    | "inserterMissing"
    | "inserterMotorFailure"
    | "inserterNearLimit"
    | "inserterOffline"
    | "inserterOpened"
    | "inserterOverTemperature"
    | "inserterPowerSaver"
    | "inserterRecoverableFailure"
    | "inserterRecoverableStorage"
    | "inserterRemoved"
    | "inserterResourceAdded"
    | "inserterResourceRemoved"
    | "inserterThermistorFailure"
    | "inserterTimingFailure"
    | "inserterTurnedOff"
    | "inserterTurnedOn"
    | "inserterUnderTemperature"
    | "inserterUnrecoverableFailure"
    | "inserterUnrecoverableStorageError"
    | "inserterWarmingUp"
    | "interlockClosed"
    | "interpreterCartridgeAdded"
    | "interpreterCartridgeDeleted"
    | "interpreterComplexPageEncountered"
    | "interpreterMemoryDecrease"
    | "interpreterMemoryIncrease"
    | "interpreterResourceAdded"
    | "interpreterResourceDeleted"
    | "lampAtEol"
    | "lampFailure"
    | "lampNearEol"
    | "laserAtEol"
    | "laserFailure"
    | "laserNearEol"
    | "makeEnvelopeAdded"
    | "makeEnvelopeAlmostEmpty"
    | "makeEnvelopeAlmostFull"
    | "makeEnvelopeAtLimit"
    | "makeEnvelopeClosed"
    | "makeEnvelopeConfigurationChange"
    | "makeEnvelopeCoverClosed"
    | "makeEnvelopeCoverOpen"
    | "makeEnvelopeEmpty"
    | "makeEnvelopeFull"
    | "makeEnvelopeInterlockClosed"
    | "makeEnvelopeInterlockOpen"
    | "makeEnvelopeJam"
    | "makeEnvelopeLifeAlmostOver"
    | "makeEnvelopeLifeOver"
    | "makeEnvelopeMemoryExhausted"
    | "makeEnvelopeMissing"
    | "makeEnvelopeMotorFailure"
    | "makeEnvelopeNearLimit"
    | "makeEnvelopeOffline"
    | "makeEnvelopeOpened"
    | "makeEnvelopeOverTemperature"
    | "makeEnvelopePowerSaver"
    | "makeEnvelopeRecoverableFailure"
    | "makeEnvelopeRecoverableStorage"
    | "makeEnvelopeRemoved"
    | "makeEnvelopeResourceAdded"
    | "makeEnvelopeResourceRemoved"
    | "makeEnvelopeThermistorFailure"
    | "makeEnvelopeTimingFailure"
    | "makeEnvelopeTurnedOff"
    | "makeEnvelopeTurnedOn"
    | "makeEnvelopeUnderTemperature"
    | "makeEnvelopeUnrecoverableFailure"
    | "makeEnvelopeUnrecoverableStorageError"
    | "makeEnvelopeWarmingUp"
    | "markerAdjustingPrintQuality"
    | "markerCleanerMissing"
    | "markerDeveloperAlmostEmpty"
    | "markerDeveloperEmpty"
    | "markerDeveloperMissing"
    | "markerFuserMissing"
    | "markerFuserThermistorFailure"
    | "markerFuserTimingFailure"
    | "markerInkAlmostEmpty"
    | "markerInkEmpty"
    | "markerInkMissing"
    | "markerOpcMissing"
    | "markerPrintRibbonAlmostEmpty"
    | "markerPrintRibbonEmpty"
    | "markerPrintRibbonMissing"
    | "markerSupplyAlmostEmpty"
    | "markerSupplyMissing"
    | "markerTonerCartridgeMissing"
    | "markerTonerMissing"
    | "markerWasteInkReceptacleAlmostFull"
    | "markerWasteInkReceptacleFull"
    | "markerWasteInkReceptacleMissing"
    | "markerWasteMissing"
    | "markerWasteTonerReceptacleAlmostFull"
    | "markerWasteTonerReceptacleFull"
    | "markerWasteTonerReceptacleMissing"
    | "materialEmpty"
    | "materialLow"
    | "materialNeeded"
    | "mediaDrying"
    | "mediaPathCannotDuplexMediaSelected"
    | "mediaPathFailure"
    | "mediaPathInputEmpty"
    | "mediaPathInputFeedError"
    | "mediaPathInputJam"
    | "mediaPathInputRequest"
    | "mediaPathJam"
    | "mediaPathMediaTrayAlmostFull"
    | "mediaPathMediaTrayFull"
    | "mediaPathMediaTrayMissing"
    | "mediaPathOutputFeedError"
    | "mediaPathOutputFull"
    | "mediaPathOutputJam"
    | "mediaPathPickRollerFailure"
    | "mediaPathPickRollerLifeOver"
    | "mediaPathPickRollerLifeWarn"
    | "mediaPathPickRollerMissing"
    | "motorFailure"
    | "outputMailboxSelectFailure"
    | "outputMediaTrayFailure"
    | "outputMediaTrayFeedError"
    | "outputMediaTrayJam"
    | "perforaterAdded"
    | "perforaterAlmostEmpty"
    | "perforaterAlmostFull"
    | "perforaterAtLimit"
    | "perforaterClosed"
    | "perforaterConfigurationChange"
    | "perforaterCoverClosed"
    | "perforaterCoverOpen"
    | "perforaterEmpty"
    | "perforaterFull"
    | "perforaterInterlockClosed"
    | "perforaterInterlockOpen"
    | "perforaterJam"
    | "perforaterLifeAlmostOver"
    | "perforaterLifeOver"
    | "perforaterMemoryExhausted"
    | "perforaterMissing"
    | "perforaterMotorFailure"
    | "perforaterNearLimit"
    | "perforaterOffline"
    | "perforaterOpened"
    | "perforaterOverTemperature"
    | "perforaterPowerSaver"
    | "perforaterRecoverableFailure"
    | "perforaterRecoverableStorage"
    | "perforaterRemoved"
    | "perforaterResourceAdded"
    | "perforaterResourceRemoved"
    | "perforaterThermistorFailure"
    | "perforaterTimingFailure"
    | "perforaterTurnedOff"
    | "perforaterTurnedOn"
    | "perforaterUnderTemperature"
    | "perforaterUnrecoverableFailure"
    | "perforaterUnrecoverableStorageError"
    | "perforaterWarmingUp"
    | "platformCooling"
    | "platformFailure"
    | "platformHeating"
    | "platformTemperatureHigh"
    | "platformTemperatureLow"
    | "powerDown"
    | "powerUp"
    | "printerManualReset"
    | "printerNmsReset"
    | "printerReadyToPrint"
    | "puncherAdded"
    | "puncherAlmostEmpty"
    | "puncherAlmostFull"
    | "puncherAtLimit"
    | "puncherClosed"
    | "puncherConfigurationChange"
    | "puncherCoverClosed"
    | "puncherCoverOpen"
    | "puncherEmpty"
    | "puncherFull"
    | "puncherInterlockClosed"
    | "puncherInterlockOpen"
    | "puncherJam"
    | "puncherLifeAlmostOver"
    | "puncherLifeOver"
    | "puncherMemoryExhausted"
    | "puncherMissing"
    | "puncherMotorFailure"
    | "puncherNearLimit"
    | "puncherOffline"
    | "puncherOpened"
    | "puncherOverTemperature"
    | "puncherPowerSaver"
    | "puncherRecoverableFailure"
    | "puncherRecoverableStorage"
    | "puncherRemoved"
    | "puncherResourceAdded"
    | "puncherResourceRemoved"
    | "puncherThermistorFailure"
    | "puncherTimingFailure"
    | "puncherTurnedOff"
    | "puncherTurnedOn"
    | "puncherUnderTemperature"
    | "puncherUnrecoverableFailure"
    | "puncherUnrecoverableStorageError"
    | "puncherWarmingUp"
    | "resuming"
    | "scanMediaPathFailure"
    | "scanMediaPathInputEmpty"
    | "scanMediaPathInputFeedError"
    | "scanMediaPathInputJam"
    | "scanMediaPathInputRequest"
    | "scanMediaPathJam"
    | "scanMediaPathOutputFeedError"
    | "scanMediaPathOutputFull"
    | "scanMediaPathOutputJam"
    | "scanMediaPathPickRollerFailure"
    | "scanMediaPathPickRollerLifeOver"
    | "scanMediaPathPickRollerLifeWarn"
    | "scanMediaPathPickRollerMissing"
    | "scanMediaPathTrayAlmostFull"
    | "scanMediaPathTrayFull"
    | "scanMediaPathTrayMissing"
    | "scannerLightFailure"
    | "scannerLightLifeAlmostOver"
    | "scannerLightLifeOver"
    | "scannerLightMissing"
    | "scannerSensorFailure"
    | "scannerSensorLifeAlmostOver"
    | "scannerSensorLifeOver"
    | "scannerSensorMissing"
    | "separationCutterAdded"
    | "separationCutterAlmostEmpty"
    | "separationCutterAlmostFull"
    | "separationCutterAtLimit"
    | "separationCutterClosed"
    | "separationCutterConfigurationChange"
    | "separationCutterCoverClosed"
    | "separationCutterCoverOpen"
    | "separationCutterEmpty"
    | "separationCutterFull"
    | "separationCutterInterlockClosed"
    | "separationCutterInterlockOpen"
    | "separationCutterJam"
    | "separationCutterLifeAlmostOver"
    | "separationCutterLifeOver"
    | "separationCutterMemoryExhausted"
    | "separationCutterMissing"
    | "separationCutterMotorFailure"
    | "separationCutterNearLimit"
    | "separationCutterOffline"
    | "separationCutterOpened"
    | "separationCutterOverTemperature"
    | "separationCutterPowerSaver"
    | "separationCutterRecoverableFailure"
    | "separationCutterRecoverableStorage"
    | "separationCutterRemoved"
    | "separationCutterResourceAdded"
    | "separationCutterResourceRemoved"
    | "separationCutterThermistorFailure"
    | "separationCutterTimingFailure"
    | "separationCutterTurnedOff"
    | "separationCutterTurnedOn"
    | "separationCutterUnderTemperature"
    | "separationCutterUnrecoverableFailure"
    | "separationCutterUnrecoverableStorageError"
    | "separationCutterWarmingUp"
    | "sheetRotatorAdded"
    | "sheetRotatorAlmostEmpty"
    | "sheetRotatorAlmostFull"
    | "sheetRotatorAtLimit"
    | "sheetRotatorClosed"
    | "sheetRotatorConfigurationChange"
    | "sheetRotatorCoverClosed"
    | "sheetRotatorCoverOpen"
    | "sheetRotatorEmpty"
    | "sheetRotatorFull"
    | "sheetRotatorInterlockClosed"
    | "sheetRotatorInterlockOpen"
    | "sheetRotatorJam"
    | "sheetRotatorLifeAlmostOver"
    | "sheetRotatorLifeOver"
    | "sheetRotatorMemoryExhausted"
    | "sheetRotatorMissing"
    | "sheetRotatorMotorFailure"
    | "sheetRotatorNearLimit"
    | "sheetRotatorOffline"
    | "sheetRotatorOpened"
    | "sheetRotatorOverTemperature"
    | "sheetRotatorPowerSaver"
    | "sheetRotatorRecoverableFailure"
    | "sheetRotatorRecoverableStorage"
    | "sheetRotatorRemoved"
    | "sheetRotatorResourceAdded"
    | "sheetRotatorResourceRemoved"
    | "sheetRotatorThermistorFailure"
    | "sheetRotatorTimingFailure"
    | "sheetRotatorTurnedOff"
    | "sheetRotatorTurnedOn"
    | "sheetRotatorUnderTemperature"
    | "sheetRotatorUnrecoverableFailure"
    | "sheetRotatorUnrecoverableStorageError"
    | "sheetRotatorWarmingUp"
    | "slitterAdded"
    | "slitterAlmostEmpty"
    | "slitterAlmostFull"
    | "slitterAtLimit"
    | "slitterClosed"
    | "slitterConfigurationChange"
    | "slitterCoverClosed"
    | "slitterCoverOpen"
    | "slitterEmpty"
    | "slitterFull"
    | "slitterInterlockClosed"
    | "slitterInterlockOpen"
    | "slitterJam"
    | "slitterLifeAlmostOver"
    | "slitterLifeOver"
    | "slitterMemoryExhausted"
    | "slitterMissing"
    | "slitterMotorFailure"
    | "slitterNearLimit"
    | "slitterOffline"
    | "slitterOpened"
    | "slitterOverTemperature"
    | "slitterPowerSaver"
    | "slitterRecoverableFailure"
    | "slitterRecoverableStorage"
    | "slitterRemoved"
    | "slitterResourceAdded"
    | "slitterResourceRemoved"
    | "slitterThermistorFailure"
    | "slitterTimingFailure"
    | "slitterTurnedOff"
    | "slitterTurnedOn"
    | "slitterUnderTemperature"
    | "slitterUnrecoverableFailure"
    | "slitterUnrecoverableStorageError"
    | "slitterWarmingUp"
    | "stackerAdded"
    | "stackerAlmostEmpty"
    | "stackerAlmostFull"
    | "stackerAtLimit"
    | "stackerClosed"
    | "stackerConfigurationChange"
    | "stackerCoverClosed"
    | "stackerCoverOpen"
    | "stackerEmpty"
    | "stackerFull"
    | "stackerInterlockClosed"
    | "stackerInterlockOpen"
    | "stackerJam"
    | "stackerLifeAlmostOver"
    | "stackerLifeOver"
    | "stackerMemoryExhausted"
    | "stackerMissing"
    | "stackerMotorFailure"
    | "stackerNearLimit"
    | "stackerOffline"
    | "stackerOpened"
    | "stackerOverTemperature"
    | "stackerPowerSaver"
    | "stackerRecoverableFailure"
    | "stackerRecoverableStorage"
    | "stackerRemoved"
    | "stackerResourceAdded"
    | "stackerResourceRemoved"
    | "stackerThermistorFailure"
    | "stackerTimingFailure"
    | "stackerTurnedOff"
    | "stackerTurnedOn"
    | "stackerUnderTemperature"
    | "stackerUnrecoverableFailure"
    | "stackerUnrecoverableStorageError"
    | "stackerWarmingUp"
    | "standby"
    | "staplerAdded"
    | "staplerAlmostEmpty"
    | "staplerAlmostFull"
    | "staplerAtLimit"
    | "staplerClosed"
    | "staplerConfigurationChange"
    | "staplerCoverClosed"
    | "staplerCoverOpen"
    | "staplerEmpty"
    | "staplerFull"
    | "staplerInterlockClosed"
    | "staplerInterlockOpen"
    | "staplerJam"
    | "staplerLifeAlmostOver"
    | "staplerLifeOver"
    | "staplerMemoryExhausted"
    | "staplerMissing"
    | "staplerMotorFailure"
    | "staplerNearLimit"
    | "staplerOffline"
    | "staplerOpened"
    | "staplerOverTemperature"
    | "staplerPowerSaver"
    | "staplerRecoverableFailure"
    | "staplerRecoverableStorage"
    | "staplerRemoved"
    | "staplerResourceAdded"
    | "staplerResourceRemoved"
    | "staplerThermistorFailure"
    | "staplerTimingFailure"
    | "staplerTurnedOff"
    | "staplerTurnedOn"
    | "staplerUnderTemperature"
    | "staplerUnrecoverableFailure"
    | "staplerUnrecoverableStorageError"
    | "staplerWarmingUp"
    | "stitcherAdded"
    | "stitcherAlmostEmpty"
    | "stitcherAlmostFull"
    | "stitcherAtLimit"
    | "stitcherClosed"
    | "stitcherConfigurationChange"
    | "stitcherCoverClosed"
    | "stitcherCoverOpen"
    | "stitcherEmpty"
    | "stitcherFull"
    | "stitcherInterlockClosed"
    | "stitcherInterlockOpen"
    | "stitcherJam"
    | "stitcherLifeAlmostOver"
    | "stitcherLifeOver"
    | "stitcherMemoryExhausted"
    | "stitcherMissing"
    | "stitcherMotorFailure"
    | "stitcherNearLimit"
    | "stitcherOffline"
    | "stitcherOpened"
    | "stitcherOverTemperature"
    | "stitcherPowerSaver"
    | "stitcherRecoverableFailure"
    | "stitcherRecoverableStorage"
    | "stitcherRemoved"
    | "stitcherResourceAdded"
    | "stitcherResourceRemoved"
    | "stitcherThermistorFailure"
    | "stitcherTimingFailure"
    | "stitcherTurnedOff"
    | "stitcherTurnedOn"
    | "stitcherUnderTemperature"
    | "stitcherUnrecoverableFailure"
    | "stitcherUnrecoverableStorageError"
    | "stitcherWarmingUp"
    | "subunitAdded"
    | "subunitAlmostEmpty"
    | "subunitAlmostFull"
    | "subunitAtLimit"
    | "subunitClosed"
    | "subunitCoolingDown"
    | "subunitEmpty"
    | "subunitFull"
    | "subunitLifeAlmostOver"
    | "subunitLifeOver"
    | "subunitMemoryExhausted"
    | "subunitMissing"
    | "subunitMotorFailure"
    | "subunitNearLimit"
    | "subunitOffline"
    | "subunitOpened"
    | "subunitOverTemperature"
    | "subunitPowerSaver"
    | "subunitRecoverableFailure"
    | "subunitRecoverableStorage"
    | "subunitRemoved"
    | "subunitResourceAdded"
    | "subunitResourceRemoved"
    | "subunitThermistorFailure"
    | "subunitTimingFailure"
    | "subunitTurnedOff"
    | "subunitTurnedOn"
    | "subunitUnderTemperature"
    | "subunitUnrecoverableFailure"
    | "subunitUnrecoverableStorage"
    | "subunitWarmingUp"
    | "suspend"
    | "testing"
    | "trimmerAdded"
    | "trimmerAlmostEmpty"
    | "trimmerAlmostFull"
    | "trimmerAtLimit"
    | "trimmerClosed"
    | "trimmerConfigurationChange"
    | "trimmerCoverClosed"
    | "trimmerCoverOpen"
    | "trimmerEmpty"
    | "trimmerFull"
    | "trimmerInterlockClosed"
    | "trimmerInterlockOpen"
    | "trimmerJam"
    | "trimmerLifeAlmostOver"
    | "trimmerLifeOver"
    | "trimmerMemoryExhausted"
    | "trimmerMissing"
    | "trimmerMotorFailure"
    | "trimmerNearLimit"
    | "trimmerOffline"
    | "trimmerOpened"
    | "trimmerOverTemperature"
    | "trimmerPowerSaver"
    | "trimmerRecoverableFailure"
    | "trimmerRecoverableStorage"
    | "trimmerRemoved"
    | "trimmerResourceAdded"
    | "trimmerResourceRemoved"
    | "trimmerThermistorFailure"
    | "trimmerTimingFailure"
    | "trimmerTurnedOff"
    | "trimmerTurnedOn"
    | "trimmerUnderTemperature"
    | "trimmerUnrecoverableFailure"
    | "trimmerUnrecoverableStorageError"
    | "trimmerWarmingUp"
    | "unknown"
    | "wrapperAdded"
    | "wrapperAlmostEmpty"
    | "wrapperAlmostFull"
    | "wrapperAtLimit"
    | "wrapperClosed"
    | "wrapperConfigurationChange"
    | "wrapperCoverClosed"
    | "wrapperCoverOpen"
    | "wrapperEmpty"
    | "wrapperFull"
    | "wrapperInterlockClosed"
    | "wrapperInterlockOpen"
    | "wrapperJam"
    | "wrapperLifeAlmostOver"
    | "wrapperLifeOver"
    | "wrapperMemoryExhausted"
    | "wrapperMissing"
    | "wrapperMotorFailure"
    | "wrapperNearLimit"
    | "wrapperOffline"
    | "wrapperOpened"
    | "wrapperOverTemperature"
    | "wrapperPowerSaver"
    | "wrapperRecoverableFailure"
    | "wrapperRecoverableStorage"
    | "wrapperRemoved"
    | "wrapperResourceAdded"
    | "wrapperResourceRemoved"
    | "wrapperThermistorFailure"
    | "wrapperTimingFailure"
    | "wrapperTurnedOff"
    | "wrapperTurnedOn"
    | "wrapperUnderTemperature"
    | "wrapperUnrecoverableFailure"
    | "wrapperUnrecoverableStorageError"
    | "wrapperWarmingUp";
export type PrinterProcessingStateReason =
    | "paused"
    | "mediaJam"
    | "mediaNeeded"
    | "mediaLow"
    | "mediaEmpty"
    | "coverOpen"
    | "interlockOpen"
    | "outputTrayMissing"
    | "outputAreaFull"
    | "markerSupplyLow"
    | "markerSupplyEmpty"
    | "inputTrayMissing"
    | "outputAreaAlmostFull"
    | "markerWasteAlmostFull"
    | "markerWasteFull"
    | "fuserOverTemp"
    | "fuserUnderTemp"
    | "other"
    | "none"
    | "movingToPaused"
    | "shutdown"
    | "connectingToDevice"
    | "timedOut"
    | "stopping"
    | "stoppedPartially"
    | "tonerLow"
    | "tonerEmpty"
    | "spoolAreaFull"
    | "doorOpen"
    | "opticalPhotoConductorNearEndOfLife"
    | "opticalPhotoConductorLifeOver"
    | "developerLow"
    | "developerEmpty"
    | "interpreterResourceUnavailable"
    | "unknownFutureValue";
export type PrintEvent = "jobStarted" | "unknownFutureValue";
export type PrintFinishing =
    | "none"
    | "staple"
    | "punch"
    | "cover"
    | "bind"
    | "saddleStitch"
    | "stitchEdge"
    | "stapleTopLeft"
    | "stapleBottomLeft"
    | "stapleTopRight"
    | "stapleBottomRight"
    | "stitchLeftEdge"
    | "stitchTopEdge"
    | "stitchRightEdge"
    | "stitchBottomEdge"
    | "stapleDualLeft"
    | "stapleDualTop"
    | "stapleDualRight"
    | "stapleDualBottom"
    | "unknownFutureValue";
export type PrintJobProcessingState =
    | "unknown"
    | "pending"
    | "processing"
    | "paused"
    | "stopped"
    | "completed"
    | "canceled"
    | "aborted";
export type PrintJobStateDetail =
    | "uploadPending"
    | "transforming"
    | "completedSuccessfully"
    | "completedWithWarnings"
    | "completedWithErrors"
    | "releaseWait"
    | "interpreting"
    | "unknownFutureValue";
export type PrintMediaType =
    | "stationery"
    | "transparency"
    | "envelope"
    | "envelopePlain"
    | "continuous"
    | "screen"
    | "screenPaged"
    | "continuousLong"
    | "continuousShort"
    | "envelopeWindow"
    | "multiPartForm"
    | "multiLayer"
    | "labels";
export type PrintMultipageLayout =
    | "clockwiseFromTopLeft"
    | "counterclockwiseFromTopLeft"
    | "counterclockwiseFromTopRight"
    | "clockwiseFromTopRight"
    | "counterclockwiseFromBottomLeft"
    | "clockwiseFromBottomLeft"
    | "counterclockwiseFromBottomRight"
    | "clockwiseFromBottomRight";
export type PrintOperationProcessingState = "notStarted" | "running" | "succeeded" | "failed" | "unknownFutureValue";
export type PrintOrientation = "portrait" | "landscape" | "reverseLandscape" | "reversePortrait";
export type PrintPresentationDirection =
    | "clockwiseFromTopLeft"
    | "counterClockwiseFromTopLeft"
    | "counterClockwiseFromTopRight"
    | "clockwiseFromTopRight"
    | "counterClockwiseFromBottomLeft"
    | "clockwiseFromBottomLeft"
    | "counterClockwiseFromBottomRight"
    | "clockwiseFromBottomRight";
export type PrintQuality = "low" | "medium" | "high" | "unknownFutureValue";
export type PrintScaling = "auto" | "shrinkToFit" | "fill" | "fit" | "none" | "unknownFutureValue";
export type PrintTaskProcessingState = "pending" | "processing" | "completed" | "aborted" | "unknownFutureValue";
export type Status = "active" | "updated" | "deleted" | "ignored" | "unknownFutureValue";
export type DataPolicyOperationStatus = "notStarted" | "running" | "complete" | "failed" | "unknownFutureValue";
export type AnswerState = "published" | "draft" | "excluded" | "unknownFutureValue";
export type AccountStatus = "unknown" | "staged" | "active" | "suspended" | "deleted" | "unknownFutureValue";
export type AlertFeedback = "unknown" | "truePositive" | "falsePositive" | "benignPositive" | "unknownFutureValue";
export type AlertSeverity = "unknown" | "informational" | "low" | "medium" | "high" | "unknownFutureValue";
export type AlertStatus = "unknown" | "newAlert" | "inProgress" | "resolved" | "dismissed" | "unknownFutureValue";
export type ApplicationPermissionsRequired =
    | "unknown"
    | "anonymous"
    | "guest"
    | "user"
    | "administrator"
    | "system"
    | "unknownFutureValue";
export type ConnectionDirection = "unknown" | "inbound" | "outbound" | "unknownFutureValue";
export type ConnectionStatus = "unknown" | "attempted" | "succeeded" | "blocked" | "failed" | "unknownFutureValue";
export type DiamondModel = "unknown" | "adversary" | "capability" | "infrastructure" | "victim" | "unknownFutureValue";
export type EmailRole = "unknown" | "sender" | "recipient" | "unknownFutureValue";
export type FileHashType =
    | "unknown"
    | "sha1"
    | "sha256"
    | "md5"
    | "authenticodeHash256"
    | "lsHash"
    | "ctph"
    | "unknownFutureValue";
export type LogonType =
    | "unknown"
    | "interactive"
    | "remoteInteractive"
    | "network"
    | "batch"
    | "service"
    | "unknownFutureValue";
export type ProcessIntegrityLevel =
    | "unknown"
    | "untrusted"
    | "low"
    | "medium"
    | "high"
    | "system"
    | "unknownFutureValue";
export type RegistryHive =
    | "unknown"
    | "currentConfig"
    | "currentUser"
    | "localMachineSam"
    | "localMachineSecurity"
    | "localMachineSoftware"
    | "localMachineSystem"
    | "usersDefault"
    | "unknownFutureValue";
export type RegistryOperation = "unknown" | "create" | "modify" | "delete" | "unknownFutureValue";
export type RegistryValueType =
    | "unknown"
    | "binary"
    | "dword"
    | "dwordLittleEndian"
    | "dwordBigEndian"
    | "expandSz"
    | "link"
    | "multiSz"
    | "none"
    | "qword"
    | "qwordlittleEndian"
    | "sz"
    | "unknownFutureValue";
export type SecurityNetworkProtocol =
    | "unknown"
    | "ip"
    | "icmp"
    | "igmp"
    | "ggp"
    | "ipv4"
    | "tcp"
    | "pup"
    | "udp"
    | "idp"
    | "ipv6"
    | "ipv6RoutingHeader"
    | "ipv6FragmentHeader"
    | "ipSecEncapsulatingSecurityPayload"
    | "ipSecAuthenticationHeader"
    | "icmpV6"
    | "ipv6NoNextHeader"
    | "ipv6DestinationOptions"
    | "nd"
    | "raw"
    | "ipx"
    | "spx"
    | "spxII"
    | "unknownFutureValue";
export type SecurityResourceType = "unknown" | "attacked" | "related" | "unknownFutureValue";
export type TiAction = "unknown" | "allow" | "block" | "alert" | "unknownFutureValue";
export type TlpLevel = "unknown" | "white" | "green" | "amber" | "red" | "unknownFutureValue";
export type UserAccountSecurityType = "unknown" | "standard" | "power" | "administrator" | "unknownFutureValue";
export type AccessLevel = "everyone" | "invited" | "locked" | "sameEnterprise" | "sameEnterpriseAndFederated";
export type AutoAdmittedUsersType = "everyoneInCompany" | "everyone";
export type BroadcastMeetingAudience = "roleIsAttendee" | "organization" | "everyone" | "unknownFutureValue";
export type CallDirection = "incoming" | "outgoing";
export type CallDisposition = "default" | "simultaneousRing" | "forward";
export type CallState =
    | "incoming"
    | "establishing"
    | "ringing"
    | "established"
    | "hold"
    | "transferring"
    | "transferAccepted"
    | "redirecting"
    | "terminating"
    | "terminated"
    | "unknownFutureValue";
export type CallTranscriptionState = "notStarted" | "active" | "inactive" | "unknownFutureValue";
export type ChangeType = "created" | "updated" | "deleted";
export type EndpointType =
    | "default"
    | "voicemail"
    | "skypeForBusiness"
    | "skypeForBusinessVoipPhone"
    | "unknownFutureValue";
export type MediaDirection = "inactive" | "sendOnly" | "receiveOnly" | "sendReceive";
export type MediaState = "active" | "inactive" | "unknownFutureValue";
export type MeetingCapabilities = "questionAndAnswer" | "unknownFutureValue";
export type MeetingChatMode = "enabled" | "disabled" | "limited" | "unknownFutureValue";
export type Modality = "unknown" | "audio" | "video" | "videoBasedScreenSharing" | "data" | "unknownFutureValue";
export type OnlineMeetingRole = "attendee" | "presenter" | "unknownFutureValue" | "producer";
export type PlayPromptCompletionReason =
    | "unknown"
    | "completedSuccessfully"
    | "mediaOperationCanceled"
    | "unknownFutureValue";
export type RecordCompletionReason =
    | "operationCanceled"
    | "stopToneDetected"
    | "maxRecordDurationReached"
    | "initialSilenceTimeout"
    | "maxSilenceTimeout"
    | "playPromptFailed"
    | "playBeepFailed"
    | "mediaReceiveTimeout"
    | "unspecifiedError";
export type RecordingStatus = "unknown" | "notRecording" | "recording" | "failed" | "unknownFutureValue";
export type RejectReason = "none" | "busy" | "forbidden" | "unknownFutureValue";
export type RoutingMode = "oneToOne" | "multicast";
export type RoutingPolicy =
    | "none"
    | "noMissedCall"
    | "disableForwardingExceptPhone"
    | "disableForwarding"
    | "preferSkypeForBusiness"
    | "unknownFutureValue";
export type RoutingType = "forwarded" | "lookup" | "selfFork" | "unknownFutureValue";
export type ScreenSharingRole = "viewer" | "sharer";
export type Tone =
    | "tone0"
    | "tone1"
    | "tone2"
    | "tone3"
    | "tone4"
    | "tone5"
    | "tone6"
    | "tone7"
    | "tone8"
    | "tone9"
    | "star"
    | "pound"
    | "a"
    | "b"
    | "c"
    | "d"
    | "flash";
export type AttestationLevel = "attested" | "notAttested" | "unknownFutureValue";
export type AuthenticationMethodKeyStrength = "normal" | "weak" | "unknown";
export type AuthenticationMethodSignInState =
    | "notSupported"
    | "notAllowedByPolicy"
    | "notEnabled"
    | "phoneNumberNotUnique"
    | "ready"
    | "notConfigured"
    | "unknownFutureValue";
export type AuthenticationPhoneType = "mobile" | "alternateMobile" | "office" | "unknownFutureValue";
export type LongRunningOperationStatus = "notstarted" | "running" | "succeeded" | "failed";
export type LifecycleEventType = "missed" | "subscriptionRemoved" | "reauthorizationRequired";
export type AccessType = "grant" | "deny";
export type AclType = "user" | "group" | "everyone" | "everyoneExceptGuests" | "externalGroup" | "unknownFutureValue";
export type ConnectionOperationStatus = "unspecified" | "inprogress" | "completed" | "failed";
export type ConnectionState = "draft" | "ready" | "obsolete" | "limitExceeded" | "unknownFutureValue";
export type ExternalGroupMemberType = "user" | "group";
export type ExternalItemContentType = "text" | "html" | "unknownFutureValue";
export type IdentitySourceType = "azureActiveDirectory" | "external";
export type Label =
    | "title"
    | "url"
    | "createdBy"
    | "lastModifiedBy"
    | "authors"
    | "createdDateTime"
    | "lastModifiedDateTime"
    | "fileName"
    | "fileExtension";
export type PropertyType =
    | "string"
    | "int64"
    | "double"
    | "dateTime"
    | "boolean"
    | "stringCollection"
    | "int64Collection"
    | "doubleCollection"
    | "dateTimeCollection";
export type CallRecordingStatus = "success" | "failure" | "initial" | "chunkFinished" | "unknownFutureValue";
export type ChannelMembershipType = "standard" | "private" | "unknownFutureValue" | "shared";
export type ChatMessageImportance = "normal" | "high" | "urgent";
export type ChatMessagePolicyViolationDlpActionTypes = "none" | "notifySender" | "blockAccess" | "blockAccessExternal";
export type ChatMessagePolicyViolationUserActionTypes = "none" | "override" | "reportFalsePositive";
export type ChatMessagePolicyViolationVerdictDetailsTypes =
    | "none"
    | "allowFalsePositiveOverride"
    | "allowOverrideWithoutJustification"
    | "allowOverrideWithJustification";
export type ChatMessageType = "message" | "chatEvent" | "typing" | "unknownFutureValue" | "systemEventMessage";
export type ChatType = "oneOnOne" | "group" | "meeting" | "unknownFutureValue";
export type ClonableTeamParts = "apps" | "tabs" | "settings" | "channels" | "members";
export type GiphyRatingType = "strict" | "moderate" | "unknownFutureValue";
export type ReplyRestriction = "everyone" | "authorAndModerators" | "unknownFutureValue";
export type TeamsAppDistributionMethod = "store" | "organization" | "sideloaded" | "unknownFutureValue";
export type TeamsAppInstallationScopes = "team" | "groupChat" | "personal" | "unknownFutureValue";
export type TeamsAppPublishingState = "submitted" | "rejected" | "published" | "unknownFutureValue";
export type TeamsAsyncOperationStatus =
    | "invalid"
    | "notStarted"
    | "inProgress"
    | "succeeded"
    | "failed"
    | "unknownFutureValue";
export type TeamsAsyncOperationType =
    | "invalid"
    | "cloneTeam"
    | "archiveTeam"
    | "unarchiveTeam"
    | "createTeam"
    | "unknownFutureValue"
    | "teamifyGroup"
    | "createChannel"
    | "createChat";
export type TeamSpecialization =
    | "none"
    | "educationStandard"
    | "educationClass"
    | "educationProfessionalLearningCommunity"
    | "educationStaff"
    | "healthcareStandard"
    | "healthcareCareCoordination"
    | "unknownFutureValue";
export type TeamVisibilityType = "private" | "public" | "hiddenMembership" | "unknownFutureValue";
export type TeamworkActivityTopicSource = "entityUrl" | "text";
export type TeamworkApplicationIdentityType =
    | "aadApplication"
    | "bot"
    | "tenantBot"
    | "office365Connector"
    | "outgoingWebhook"
    | "unknownFutureValue";
export type TeamworkCallEventType = "call" | "meeting" | "screenShare" | "unknownFutureValue";
export type TeamworkConversationIdentityType = "team" | "channel" | "chat" | "unknownFutureValue";
export type TeamworkTagType = "standard";
export type TeamworkUserIdentityType =
    | "aadUser"
    | "onPremiseAadUser"
    | "anonymousGuest"
    | "federatedUser"
    | "personalMicrosoftAccountUser"
    | "skypeUser"
    | "phoneUser"
    | "unknownFutureValue";
export type UserNewMessageRestriction = "everyone" | "everyoneExceptGuests" | "moderators" | "unknownFutureValue";
export type ConfirmedBy = "none" | "user" | "manager" | "unknownFutureValue";
export type EligibilityFilteringEnabledEntities = "none" | "swapRequest" | "offerShiftRequest" | "unknownFutureValue";
export type ScheduleChangeRequestActor = "sender" | "recipient" | "manager" | "system" | "unknownFutureValue";
export type ScheduleChangeState = "pending" | "approved" | "declined" | "unknownFutureValue";
export type ScheduleEntityTheme =
    | "white"
    | "blue"
    | "green"
    | "purple"
    | "pink"
    | "yellow"
    | "gray"
    | "darkBlue"
    | "darkGreen"
    | "darkPurple"
    | "darkPink"
    | "darkYellow"
    | "unknownFutureValue";
export type TimeCardState = "clockedIn" | "onBreak" | "clockedOut" | "unknownFutureValue";
export type TimeOffReasonIconType =
    | "none"
    | "car"
    | "calendar"
    | "running"
    | "plane"
    | "firstAid"
    | "doctor"
    | "notWorking"
    | "clock"
    | "juryDuty"
    | "globe"
    | "cup"
    | "phone"
    | "weather"
    | "umbrella"
    | "piggyBank"
    | "dog"
    | "cake"
    | "trafficCone"
    | "pin"
    | "sunny"
    | "unknownFutureValue";
export type WorkforceIntegrationEncryptionProtocol = "sharedSecret" | "unknownFutureValue";
export type WorkforceIntegrationSupportedEntities =
    | "none"
    | "shift"
    | "swapRequest"
    | "userShiftPreferences"
    | "openShift"
    | "openShiftRequest"
    | "offerShiftRequest"
    | "unknownFutureValue"
    | "timeCard"
    | "timeOffReason"
    | "timeOff"
    | "timeOffRequest";
export type MailDestinationRoutingReason =
    | "none"
    | "mailFlowRule"
    | "safeSender"
    | "blockedSender"
    | "advancedSpamFiltering"
    | "domainAllowList"
    | "domainBlockList"
    | "notInAddressBook"
    | "firstTimeSender"
    | "autoPurgeToInbox"
    | "autoPurgeToJunk"
    | "autoPurgeToDeleted"
    | "outbound"
    | "notJunk"
    | "junk"
    | "unknownFutureValue";
export type ThreatAssessmentContentType = "mail" | "url" | "file";
export type ThreatAssessmentRequestPivotProperty = "threatCategory" | "mailDestinationRoutingReason";
export type ThreatAssessmentRequestSource = "undefined" | "user" | "administrator";
export type ThreatAssessmentResultType = "checkPolicy" | "rescan" | "unknownFutureValue";
export type ThreatAssessmentStatus = "pending" | "completed";
export type ThreatCategory = "undefined" | "spam" | "phishing" | "malware" | "unknownFutureValue";
export type ThreatExpectedAssessment = "block" | "unblock";
export type WellknownListName = "none" | "defaultList" | "flaggedEmails" | "unknownFutureValue";
export interface Entity {
    // Read-only.
    id?: string;
}
export interface ApplicationSignInDetailedSummary extends Entity {
    /**
     * 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 is 2014-01-01T00:00:00Z.
     */
    aggregatedEventDateTime?: NullableOption<string>;
    // Name of the application that the user signed in to.
    appDisplayName?: string;
    // ID of the application that the user signed in to.
    appId?: string;
    // Count of sign-ins made by the application.
    signInCount?: NullableOption<number>;
    // Details of the sign-in status.
    status?: NullableOption<SignInStatus>;
}
export interface ApplicationSignInSummary extends Entity {
    // Name of the application that the user signed in to.
    appDisplayName?: string;
    // Count of failed sign-ins made by the application.
    failedSignInCount?: NullableOption<number>;
    // Count of successful sign-ins made by the application.
    successfulSignInCount?: NullableOption<number>;
    // Percentage of successful sign-ins made by the application.
    successPercentage?: NullableOption<number>;
}
export interface AuditLogRoot extends Entity {
    // Read-only. Nullable.
    directoryAudits?: NullableOption<DirectoryAudit[]>;
    directoryProvisioning?: NullableOption<ProvisioningObjectSummary[]>;
    provisioning?: NullableOption<ProvisioningObjectSummary[]>;
    restrictedSignIns?: NullableOption<RestrictedSignIn[]>;
    // Read-only. Nullable.
    signIns?: NullableOption<SignIn[]>;
}
export interface DirectoryAudit extends Entity {
    /**
     * Indicates the date and time the activity was performed. The Timestamp type is always in UTC time. For example, midnight
     * UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
     */
    activityDateTime?: string;
    /**
     * Indicates the activity name or the operation name (E.g. 'Create User', 'Add member to group'). For a list of activities
     * logged, refer to Azure Ad activity list.
     */
    activityDisplayName?: string;
    // Indicates additional details on the activity.
    additionalDetails?: NullableOption<KeyValue[]>;
    /**
     * Indicates which resource category that's targeted by the activity. (For example: User Management, Group Management
     * etc..)
     */
    category?: string;
    /**
     * Indicates a unique ID that helps correlate activities that span across various services. Can be used to trace logs
     * across services.
     */
    correlationId?: NullableOption<string>;
    // Indicates information about the user or app initiated the activity.
    initiatedBy?: AuditActivityInitiator;
    /**
     * Indicates information on which service initiated the activity (For example: Self-service Password Management, Core
     * Directory, B2C, Invited Users, Microsoft Identity Manager, Privileged Identity Management.
     */
    loggedByService?: NullableOption<string>;
    operationType?: NullableOption<string>;
    // Indicates the result of the activity. Possible values are: success, failure, timeout, unknownFutureValue.
    result?: NullableOption<OperationResult>;
    // Indicates the reason for failure if the result is failure or timeout.
    resultReason?: NullableOption<string>;
    /**
     * Indicates information on which resource was changed due to the activity. Target Resource Type can be User, Device,
     * Directory, App, Role, Group, Policy or Other.
     */
    targetResources?: NullableOption<TargetResource[]>;
}
export interface ProvisioningObjectSummary extends Entity {
    action?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    activityDateTime?: string;
    // Unique ID of this change in this cycle.
    changeId?: NullableOption<string>;
    // Unique ID per job iteration.
    cycleId?: NullableOption<string>;
    // Indicates how long this provisioning action took to finish. Measured in milliseconds.
    durationInMilliseconds?: NullableOption<number>;
    // Details of who initiated this provisioning.
    initiatedBy?: NullableOption<Initiator>;
    // The unique ID for the whole provisioning job.
    jobId?: NullableOption<string>;
    // Details of each property that was modified in this provisioning action on this object.
    modifiedProperties?: NullableOption<ModifiedProperty[]>;
    /**
     * Indicates the activity name or the operation name. Possible values are: create, update, delete, stageddelete, disable,
     * other and unknownFutureValue. For a list of activities logged, refer to Azure AD activity list.
     */
    provisioningAction?: NullableOption<ProvisioningAction>;
    // Details of provisioning status.
    provisioningStatusInfo?: NullableOption<ProvisioningStatusInfo>;
    // Details of each step in provisioning.
    provisioningSteps?: NullableOption<ProvisioningStep[]>;
    // Represents the service principal used for provisioning.
    servicePrincipal?: NullableOption<ProvisioningServicePrincipal>;
    // Details of source object being provisioned.
    sourceIdentity?: NullableOption<ProvisionedIdentity>;
    // Details of source system of the object being provisioned.
    sourceSystem?: NullableOption<ProvisioningSystem>;
    statusInfo?: NullableOption<StatusBase>;
    // Details of target object being provisioned.
    targetIdentity?: NullableOption<ProvisionedIdentity>;
    // Details of target system of the object being provisioned.
    targetSystem?: NullableOption<ProvisioningSystem>;
    // Unique Azure AD tenant ID.
    tenantId?: NullableOption<string>;
}
export interface SignIn extends Entity {
    /**
     * The alternate sign-in identity whenever you use phone number to sign-in. Supports $filter (eq and startsWith operators
     * only).
     */
    alternateSignInName?: NullableOption<string>;
    // The application name displayed in the Azure Portal. Supports $filter (eq and startsWith operators only).
    appDisplayName?: NullableOption<string>;
    // The application identifier in Azure Active Directory. Supports $filter (eq operator only).
    appId?: NullableOption<string>;
    // A list of conditional access policies that are triggered by the corresponding sign-in activity.
    appliedConditionalAccessPolicies?: NullableOption<AppliedConditionalAccessPolicy[]>;
    // The result of the authentication attempt and additional details on the authentication method.
    authenticationDetails?: NullableOption<AuthenticationDetail[]>;
    /**
     * The authentication methods used. Possible values: SMS, Authenticator App, App Verification code, Password, FIDO, PTA,
     * or PHS.
     */
    authenticationMethodsUsed?: NullableOption<string[]>;
    /**
     * Additional authentication processing details, such as the agent name in case of PTA/PHS or Server/farm name in case of
     * federated authentication.
     */
    authenticationProcessingDetails?: NullableOption<KeyValue[]>;
    /**
     * This holds the highest level of authentication needed through all the sign-in steps, for sign-in to succeed. Supports
     * $filter (eq and startsWith operators only).
     */
    authenticationRequirement?: NullableOption<string>;
    authenticationRequirementPolicies?: NullableOption<AuthenticationRequirementPolicy[]>;
    autonomousSystemNumber?: NullableOption<number>;
    /**
     * The legacy client used for sign-in activity. For example: Browser, Exchange Active Sync, Modern clients, IMAP, MAPI,
     * SMTP, or POP. Supports $filter (eq operator only).
     */
    clientAppUsed?: NullableOption<string>;
    /**
     * The status of the conditional access policy triggered. Possible values: success, failure, notApplied, or
     * unknownFutureValue. Supports $filter (eq operator only).
     */
    conditionalAccessStatus?: NullableOption<ConditionalAccessStatus>;
    /**
     * The identifier that's sent from the client when sign-in is initiated. This is used for troubleshooting the
     * corresponding sign-in activity when calling for support. Supports $filter (eq operator only).
     */
    correlationId?: NullableOption<string>;
    /**
     * The date and time the sign-in was initiated. The Timestamp type is always in UTC time. For example, midnight UTC on Jan
     * 1, 2014 is 2014-01-01T00:00:00Z. Supports $orderby and $filter (eq, le, and ge operators only).
     */
    createdDateTime?: string;
    crossTenantAccessType?: NullableOption<SignInAccessType>;
    /**
     * The device information from where the sign-in occurred. Includes information such as deviceId, OS, and browser.
     * Supports $filter (eq and startsWith operators only) on browser and operatingSytem properties.
     */
    deviceDetail?: NullableOption<DeviceDetail>;
    flaggedForReview?: NullableOption<boolean>;
    homeTenantId?: NullableOption<string>;
    // The IP address of the client from where the sign-in occurred. Supports $filter (eq and startsWith operators only).
    ipAddress?: NullableOption<string>;
    ipAddressFromResourceProvider?: NullableOption<string>;
    // Indicates whether a sign-in is interactive or not.
    isInteractive?: NullableOption<boolean>;
    isTenantRestricted?: NullableOption<boolean>;
    /**
     * The city, state, and 2 letter country code from where the sign-in occurred. Supports $filter (eq and startsWith
     * operators only) on city, state, and countryOrRegion properties.
     */
    location?: NullableOption<SignInLocation>;
    mfaDetail?: NullableOption<MfaDetail>;
    // The network location details including the type of network used and its names.
    networkLocationDetails?: NullableOption<NetworkLocationDetail[]>;
    // The request identifier of the first request in the authentication sequence. Supports $filter (eq operator only).
    originalRequestId?: NullableOption<string>;
    privateLinkDetails?: NullableOption<PrivateLinkDetails>;
    // The request processing time in milliseconds in AD STS.
    processingTimeInMilliseconds?: NullableOption<number>;
    // The name of the resource that the user signed in to. Supports $filter (eq operator only).
    resourceDisplayName?: NullableOption<string>;
    // The identifier of the resource that the user signed in to. Supports $filter (eq operator only).
    resourceId?: NullableOption<string>;
    resourceTenantId?: NullableOption<string>;
    /**
     * The reason behind a specific state of a risky user, sign-in, or a risk event. Possible values: none,
     * adminGeneratedTemporaryPassword, userPerformedSecuredPasswordChange, userPerformedSecuredPasswordReset,
     * adminConfirmedSigninSafe, aiConfirmedSigninSafe, userPassedMFADrivenByRiskBasedPolicy, adminDismissedAllRiskForUser,
     * adminConfirmedSigninCompromised, or unknownFutureValue. The value none means that no action has been performed on the
     * user or sign-in so far. Supports $filter (eq operator only). Note: Details for this property are only available for
     * Azure AD Premium P2 customers. All other customers are returned hidden.
     */
    riskDetail?: NullableOption<RiskDetail>;
    /**
     * The list of risk event types associated with the sign-in. Possible values: unlikelyTravel, anonymizedIPAddress,
     * maliciousIPAddress, unfamiliarFeatures, malwareInfectedIPAddress, suspiciousIPAddress, leakedCredentials,
     * investigationsThreatIntelligence, generic, or unknownFutureValue. Supports $filter (eq operator only).
     */
    riskEventTypes?: NullableOption<RiskEventType[]>;
    /**
     * The list of risk event types associated with the sign-in. Possible values: unlikelyTravel, anonymizedIPAddress,
     * maliciousIPAddress, unfamiliarFeatures, malwareInfectedIPAddress, suspiciousIPAddress, leakedCredentials,
     * investigationsThreatIntelligence, generic, or unknownFutureValue. Supports $filter (eq and startsWith operators only).
     */
    riskEventTypes_v2?: NullableOption<string[]>;
    /**
     * The aggregated risk level. Possible values: none, low, medium, high, hidden, or unknownFutureValue. The value hidden
     * means the user or sign-in was not enabled for Azure AD Identity Protection. Supports $filter (eq operator only). Note:
     * Details for this property are only available for Azure AD Premium P2 customers. All other customers are returned
     * hidden.
     */
    riskLevelAggregated?: NullableOption<RiskLevel>;
    /**
     * The risk level during sign-in. Possible values: none, low, medium, high, hidden, or unknownFutureValue. The value
     * hidden means the user or sign-in was not enabled for Azure AD Identity Protection. Supports $filter (eq operator only).
     * Note: Details for this property are only available for Azure AD Premium P2 customers. All other customers are returned
     * hidden.
     */
    riskLevelDuringSignIn?: NullableOption<RiskLevel>;
    /**
     * The risk state of a risky user, sign-in, or a risk event. Possible values: none, confirmedSafe, remediated, dismissed,
     * atRisk, confirmedCompromised, or unknownFutureValue. Supports $filter (eq operator only).
     */
    riskState?: NullableOption<RiskState>;
    servicePrincipalCredentialKeyId?: NullableOption<string>;
    servicePrincipalCredentialThumbprint?: NullableOption<string>;
    /**
     * The application identifier used for sign-in. This field is populated when you are signing in using an application.
     * Supports $filter (eq and startsWith operators only).
     */
    servicePrincipalId?: string;
    /**
     * The application name used for sign-in. This field is populated when you are signing in using an application. Supports
     * $filter (eq and startsWith operators only).
     */
    servicePrincipalName?: NullableOption<string>;
    signInEventTypes?: NullableOption<string[]>;
    signInIdentifier?: NullableOption<string>;
    signInIdentifierType?: NullableOption<SignInIdentifierType>;
    /**
     * The sign-in status. Includes the error code and description of the error (in case of a sign-in failure). Supports
     * $filter (eq operator only) on errorCode property.
     */
    status?: NullableOption<SignInStatus>;
    // The name of the identity provider. For example, sts.microsoft.com. Supports $filter (eq operator only).
    tokenIssuerName?: NullableOption<string>;
    // The type of identity provider. Possible values: AzureAD, ADFederationServices, or UnknownFutureValue.
    tokenIssuerType?: NullableOption<TokenIssuerType>;
    // The user agent information related to sign-in. Supports $filter (eq and startsWith operators only).
    userAgent?: NullableOption<string>;
    // The display name of the user. Supports $filter (eq and startsWith operators only).
    userDisplayName?: NullableOption<string>;
    // The identifier of the user. Supports $filter (eq operator only).
    userId?: string;
    // The UPN of the user. Supports $filter (eq and startsWith operators only).
    userPrincipalName?: NullableOption<string>;
    userType?: NullableOption<SignInUserType>;
}
export interface RestrictedSignIn extends SignIn {
    targetTenantId?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface AuthenticationMethodsRoot extends Entity {}
export interface AzureADFeatureUsage extends Entity {
    featureName?: string;
    snapshotDateTime?: string;
    usage?: NullableOption<number>;
}
export interface AzureADLicenseUsage extends Entity {
    licenseInfoDetails?: NullableOption<LicenseInfoDetail[]>;
    snapshotDateTime?: string;
}
export interface AzureADUserFeatureUsage extends Entity {
    featureUsageDetails?: NullableOption<FeatureUsageDetail[]>;
    lastUpdatedDateTime?: string;
    licenseAssigned?: NullableOption<AzureADLicenseType>;
    licenseRecommended?: NullableOption<AzureADLicenseType>;
    userDisplayName?: NullableOption<string>;
    userId?: string;
    userPrincipalName?: NullableOption<string>;
}
export interface CredentialUsageSummary extends Entity {
    /**
     * Represents the authentication method that the user used. Possible values are:email, mobileSMS, mobileCall, officePhone,
     * securityQuestion (only used for self-service password reset), appNotification, appCode, alternateMobileCall (supported
     * only in registration), fido, appPassword, unknownFutureValue.
     */
    authMethod?: UsageAuthMethod;
    // Provides the count of failed resets or registration data.
    failureActivityCount?: number;
    // Defines the feature to report. Possible values are: registration, reset, unknownFutureValue.
    feature?: FeatureType;
    // Provides the count of successful registrations or resets.
    successfulActivityCount?: number;
}
export interface CredentialUserRegistrationCount extends Entity {
    // Provides the total user count in the tenant.
    totalUserCount?: number;
    // A collection of registration count and status information for users in your tenant.
    userRegistrationCounts?: UserRegistrationCount[];
}
export interface CredentialUserRegistrationDetails extends Entity {
    /**
     * Represents the authentication method that the user has registered. Possible values are: email, mobilePhone,
     * officePhone, securityQuestion (only used for self-service password reset), appNotification, appCode,
     * alternateMobilePhone (supported only in registration), fido, appPassword, unknownFutureValue.
     */
    authMethods?: RegistrationAuthMethod[];
    // Indicates whether the user is ready to perform self-service password reset or MFA.
    isCapable?: boolean;
    // Indicates whether the user enabled to perform self-service password reset.
    isEnabled?: boolean;
    // Indicates whether the user is registered for MFA.
    isMfaRegistered?: boolean;
    // Indicates whether the user has registered any authentication methods for self-service password reset.
    isRegistered?: boolean;
    // Provides the user name of the corresponding user.
    userDisplayName?: string;
    // Provides the user principal name of the corresponding user.
    userPrincipalName?: string;
}
export interface RelyingPartyDetailedSummary extends Entity {
    // Number of failed sign in on Active Directory Federation Service in the period specified.
    failedSignInCount?: number;
    /**
     * Indication of whether the application can be moved to Azure AD or require more investigation. Possible values are:
     * ready, needsReview, additionalStepsRequired, unknownFutureValue.
     */
    migrationStatus?: MigrationStatus;
    /**
     * Specifies all the validations check done on applications configuration details to evaluate if the application is ready
     * to be moved to Azure AD.
     */
    migrationValidationDetails?: KeyValuePair[];
    /**
     * This identifier is used to identify the relying party to this Federation Service. It is used when issuing claims to the
     * relying party.
     */
    relyingPartyId?: string;
    /**
     * Name of application or other entity on the internet that uses an identity provider to authenticate a user who wants to
     * log in.
     */
    relyingPartyName?: string;
    // Specifies where the relying party expects to receive the token.
    replyUrls?: string[];
    // Uniquely identifies the Active Directory forest.
    serviceId?: string;
    /**
     * Number of successful / (number of successful + number of failed sign ins) on Active Directory Federation Service in the
     * period specified.
     */
    signInSuccessRate?: number;
    // Number of successful sign ins on Active Directory Federation Service.
    successfulSignInCount?: number;
    // Number of successful + failed sign ins failed sign ins on Active Directory Federation Service in the period specified.
    totalSignInCount?: number;
    // Number of unique users that have signed into the application.
    uniqueUserCount?: number;
}
export interface ReportRoot extends Entity {
    applicationSignInDetailedSummary?: NullableOption<ApplicationSignInDetailedSummary[]>;
    authenticationMethods?: NullableOption<AuthenticationMethodsRoot>;
    credentialUserRegistrationDetails?: NullableOption<CredentialUserRegistrationDetails[]>;
    userCredentialUsageDetails?: NullableOption<UserCredentialUsageDetails[]>;
    dailyPrintUsageByPrinter?: NullableOption<PrintUsageByPrinter[]>;
    dailyPrintUsageByUser?: NullableOption<PrintUsageByUser[]>;
    dailyPrintUsageSummariesByPrinter?: NullableOption<PrintUsageByPrinter[]>;
    dailyPrintUsageSummariesByUser?: NullableOption<PrintUsageByUser[]>;
    monthlyPrintUsageByPrinter?: NullableOption<PrintUsageByPrinter[]>;
    monthlyPrintUsageByUser?: NullableOption<PrintUsageByUser[]>;
    monthlyPrintUsageSummariesByPrinter?: NullableOption<PrintUsageByPrinter[]>;
    monthlyPrintUsageSummariesByUser?: NullableOption<PrintUsageByUser[]>;
}
export interface UserCredentialUsageDetails extends Entity {
    /**
     * Represents the authentication method that the user used. Possible values are:email, mobileSMS, mobileCall, officePhone,
     * securityQuestion (only used for self-service password reset), appNotification, appCode, alternateMobileCall (supported
     * only in registration), fido, appPassword,unknownFutureValue
     */
    authMethod?: UsageAuthMethod;
    /**
     * 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.
     */
    eventDateTime?: string;
    // Provides the failure reason for the corresponding reset or registration workflow.
    failureReason?: string;
    // Possible values are: registration, reset, unknownFutureValue.
    feature?: FeatureType;
    // Indicates success or failure of the workflow.
    isSuccess?: boolean;
    // User name of the user performing the reset or registration workflow.
    userDisplayName?: string;
    // User principal name of the user performing the reset or registration workflow.
    userPrincipalName?: string;
}
export interface PrintUsage extends Entity {
    completedBlackAndWhiteJobCount?: number;
    completedColorJobCount?: number;
    incompleteJobCount?: number;
    usageDate?: string;
}
export interface PrintUsageByPrinter extends PrintUsage {
    printerId?: NullableOption<string>;
}
export interface PrintUsageByUser extends PrintUsage {
    // The UPN of the user represented by these statistics.
    userPrincipalName?: NullableOption<string>;
}
export interface DirectoryObject extends Entity {
    deletedDateTime?: NullableOption<string>;
}
export interface User extends DirectoryObject {
    /**
     * Get the last signed-in date and request ID of the sign-in for a given user. Read-only.Returned only on $select.
     * Supports $filter (eq, ne, NOT, ge, le) but, not with any other filterable properties. Note: Details for this property
     * require an Azure AD Premium P1/P2 license and the AuditLog.Read.All permission.
     */
    signInActivity?: NullableOption<SignInActivity>;
    /**
     * true if the account is enabled; otherwise, false. This property is required when a user is created. Supports $filter
     * (eq, ne, NOT, and in).
     */
    accountEnabled?: NullableOption<boolean>;
    /**
     * 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. Supports $filter (eq, ne, NOT, and in).
     */
    ageGroup?: NullableOption<string>;
    /**
     * The licenses that are assigned to the user, including inherited (group-based) licenses. Not nullable. Supports $filter
     * (eq and NOT).
     */
    assignedLicenses?: AssignedLicense[];
    // The plans that are assigned to the user. Read-only. Not nullable.Supports $filter (eq and NOT).
    assignedPlans?: AssignedPlan[];
    /**
     * The telephone numbers for the user. Only one number can be set for this property. Read-only for users synced from
     * on-premises directory. Supports $filter (eq and NOT).
     */
    businessPhones?: string[];
    /**
     * The city in which the user is located. Maximum length is 128 characters. Supports $filter (eq, ne, NOT, ge, le, in,
     * startsWith).
     */
    city?: NullableOption<string>;
    /**
     * 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 characters.Supports $filter (eq, ne, NOT, ge, le, in,
     * startsWith).
     */
    companyName?: NullableOption<string>;
    /**
     * 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. Supports $filter (eq, ne, NOT, and in).
     */
    consentProvidedForMinor?: NullableOption<string>;
    /**
     * The country/region in which the user is located; for example, US or UK. Maximum length is 128 characters. Supports
     * $filter (eq, ne, NOT, ge, le, in, startsWith).
     */
    country?: NullableOption<string>;
    /**
     * The date and time the user was created. The value cannot be modified and is automatically populated when the entity is
     * created. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time.
     * Property is nullable. A null value indicates that an accurate creation time couldn't be determined for the user.
     * Read-only. Supports $filter (eq, ne, NOT , ge, le, and in operators).
     */
    createdDateTime?: NullableOption<string>;
    /**
     * 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. Supports $filter (eq, ne, NOT, and in).
     */
    creationType?: NullableOption<string>;
    /**
     * The name for the department in which the user works. Maximum length is 64 characters.Supports $filter (eq, ne, NOT ,
     * ge, le, and in operators).
     */
    department?: NullableOption<string>;
    deviceKeys?: DeviceKey[];
    /**
     * The name displayed in the address book for the user. This value 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. Maximum length is 256 characters. Supports $filter (eq, ne, NOT , ge, le, in, startsWith), $orderBy, and
     * $search.
     */
    displayName?: NullableOption<string>;
    /**
     * The date and time when the user was hired or will start work in case of a future hire. Supports $filter (eq, ne, NOT ,
     * ge, le, in).
     */
    employeeHireDate?: NullableOption<string>;
    /**
     * The employee identifier assigned to the user by the organization. Supports $filter (eq, ne, NOT , ge, le, in,
     * startsWith).
     */
    employeeId?: NullableOption<string>;
    /**
     * Represents organization data (e.g. division and costCenter) associated with a user. Supports $filter (eq, ne, NOT , ge,
     * le, in).
     */
    employeeOrgData?: NullableOption<EmployeeOrgData>;
    /**
     * Captures enterprise worker type. For example, Employee, Contractor, Consultant, or Vendor. Supports $filter (eq, ne,
     * NOT , ge, le, in, startsWith).
     */
    employeeType?: NullableOption<string>;
    /**
     * 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.
     * Supports $filter (eq, ne, NOT , in).
     */
    externalUserState?: NullableOption<string>;
    // Shows the timestamp for the latest change to the externalUserState property. Supports $filter (eq, ne, NOT , in).
    externalUserStateChangeDateTime?: NullableOption<string>;
    // The fax number of the user. Supports $filter (eq, ne, NOT , ge, le, in, startsWith).
    faxNumber?: NullableOption<string>;
    /**
     * The given name (first name) of the user. Maximum length is 64 characters. Supports $filter (eq, ne, NOT , ge, le, in,
     * startsWith).
     */
    givenName?: NullableOption<string>;
    /**
     * 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 (eq)
     * only where the signInType is not userPrincipalName.
     */
    identities?: NullableOption<ObjectIdentity[]>;
    /**
     * The instant message voice over IP (VOIP) session initiation protocol (SIP) addresses for the user. Read-only. Supports
     * $filter (eq, NOT, ge, le, startsWith).
     */
    imAddresses?: NullableOption<string[]>;
    // Identifies the info segments assigned to the user. Supports $filter (eq, NOT, ge, le, startsWith).
    infoCatalogs?: string[];
    // Do not use – reserved for future use.
    isResourceAccount?: NullableOption<boolean>;
    // The user's job title. Maximum length is 128 characters. Supports $filter (eq, ne, NOT , ge, le, in, startsWith).
    jobTitle?: NullableOption<string>;
    /**
     * The time when this Azure AD user last changed their password. 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 is 2014-01-01T00:00:00Z.
     * Read-only. Returned only on $select.
     */
    lastPasswordChangeDateTime?: NullableOption<string>;
    /**
     * 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. Returned only on $select.
     */
    legalAgeGroupClassification?: NullableOption<string>;
    // State of license assignments for this user. Read-only. Returned only on $select.
    licenseAssignmentStates?: NullableOption<LicenseAssignmentState[]>;
    /**
     * The SMTP address for the user, for example, admin@contoso.com. Changes to this property will also update the user's
     * proxyAddresses collection to include the value as an SMTP address. For Azure AD B2C accounts, this property can be
     * updated up to only ten times with unique SMTP addresses. This property cannot contain accent characters. Supports
     * $filter (eq, ne, NOT, ge, le, in, startsWith, endsWith).
     */
    mail?: NullableOption<string>;
    /**
     * The mail alias for the user. This property must be specified when a user is created. Maximum length is 64 characters.
     * Supports $filter (eq, ne, NOT, ge, le, in, startsWith).
     */
    mailNickname?: NullableOption<string>;
    /**
     * The primary cellular telephone number for the user. Read-only for users synced from on-premises directory. Supports
     * $filter (eq, ne, NOT, ge, le, in, startsWith).
     */
    mobilePhone?: NullableOption<string>;
    /**
     * The office location in the user's place of business. Maximum length is 128 characters. Supports $filter (eq, ne, NOT,
     * ge, le, in, startsWith).
     */
    officeLocation?: NullableOption<string>;
    /**
     * 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.
     */
    onPremisesDistinguishedName?: NullableOption<string>;
    /**
     * 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.
     */
    onPremisesDomainName?: NullableOption<string>;
    /**
     * Contains extensionAttributes 1-15 for the user. Note that the individual extension attributes are neither selectable
     * nor filterable. For an onPremisesSyncEnabled user, the source of authority for this set of properties is the
     * on-premises and is read-only and is read-only. For a cloud-only user (where onPremisesSyncEnabled is false), these
     * properties may be set during creation or update. These extension attributes are also known as Exchange custom
     * attributes 1-15. Supports $filter (eq, NOT, ge, le, in).
     */
    onPremisesExtensionAttributes?: NullableOption<OnPremisesExtensionAttributes>;
    /**
     * 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. Note: The $ and _ characters cannot be used when specifying this property.
     * Supports $filter (eq, ne, NOT, ge, le, in).
     */
    onPremisesImmutableId?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only. Supports $filter (eq, ne, NOT,
     * ge, le, in).
     */
    onPremisesLastSyncDateTime?: NullableOption<string>;
    // Errors when using Microsoft synchronization product during provisioning. Supports $filter (eq, NOT, ge, le).
    onPremisesProvisioningErrors?: NullableOption<OnPremisesProvisioningError[]>;
    /**
     * 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.
     * Supports $filter (eq, ne, NOT, ge, le, in, startsWith).
     */
    onPremisesSamAccountName?: NullableOption<string>;
    /**
     * Contains the on-premises security identifier (SID) for the user that was synchronized from on-premises to the cloud.
     * Read-only.
     */
    onPremisesSecurityIdentifier?: NullableOption<string>;
    /**
     * 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. Supports $filter (eq, ne, NOT, in).
     */
    onPremisesSyncEnabled?: NullableOption<boolean>;
    /**
     * 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. Supports $filter (eq, ne, NOT, ge, le, in, startsWith).
     */
    onPremisesUserPrincipalName?: NullableOption<string>;
    /**
     * A list of additional email addresses for the user; for example: ['bob@contoso.com', 'Robert@fabrikam.com'].NOTE: This
     * property cannot contain accent characters.Supports $filter (eq, NOT, ge, le, in, startsWith).
     */
    otherMails?: string[];
    /**
     * 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. For more information on the default password policies, see Azure AD pasword policies. Supports
     * $filter (ne, NOT).
     */
    passwordPolicies?: NullableOption<string>;
    /**
     * Specifies the password profile for the user. The profile contains the user's password. This property is required when a
     * user is created. The password in the profile must satisfy minimum requirements as specified by the passwordPolicies
     * property. By default, a strong password is required. NOTE: For Azure B2C tenants, the forceChangePasswordNextSignIn
     * property should be set to false and instead use custom policies and user flows to force password reset at first logon.
     * See Force password reset at first logon. Supports $filter (eq, ne, NOT, in).
     */
    passwordProfile?: NullableOption<PasswordProfile>;
    /**
     * 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. Maximum length is 40 characters. Supports $filter (eq, ne,
     * NOT, ge, le, in, startsWith).
     */
    postalCode?: NullableOption<string>;
    // The preferred data location for the user. For more information, see OneDrive Online Multi-Geo.
    preferredDataLocation?: NullableOption<string>;
    /**
     * The preferred language for the user. Should follow ISO 639-1 Code; for example en-US. Supports $filter (eq, ne, NOT,
     * ge, le, in, startsWith).
     */
    preferredLanguage?: NullableOption<string>;
    // The plans that are provisioned for the user. Read-only. Not nullable. Supports $filter (eq, NOT, ge, le).
    provisionedPlans?: ProvisionedPlan[];
    /**
     * For example: ['SMTP: bob@contoso.com', 'smtp: bob@sales.contoso.com']. For Azure AD B2C accounts, this property has a
     * limit of ten unique addresses. Read-only, Not nullable. Supports $filter (eq, NOT, ge, le, startsWith).
     */
    proxyAddresses?: string[];
    /**
     * 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 invalidateAllRefreshTokens to reset.
     */
    refreshTokensValidFromDateTime?: NullableOption<string>;
    /**
     * 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. Supports $filter (eq, ne,
     * NOT, in).
     */
    showInAddressList?: NullableOption<boolean>;
    /**
     * 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.
     */
    signInSessionsValidFromDateTime?: NullableOption<string>;
    /**
     * The state or province in the user's address. Maximum length is 128 characters. Supports $filter (eq, ne, NOT, ge, le,
     * in, startsWith).
     */
    state?: NullableOption<string>;
    /**
     * The street address of the user's place of business. Maximum length is 1024 characters. Supports $filter (eq, ne, NOT,
     * ge, le, in, startsWith).
     */
    streetAddress?: NullableOption<string>;
    /**
     * The user's surname (family name or last name). Maximum length is 64 characters. Supports $filter (eq, ne, NOT, ge, le,
     * in, startsWith).
     */
    surname?: NullableOption<string>;
    /**
     * 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 (eq, ne, NOT, ge, le, in, startsWith).
     */
    usageLocation?: NullableOption<string>;
    /**
     * 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.NOTE:
     * This property cannot contain accent characters. Supports $filter (eq, ne, NOT, ge, le, in, startsWith, endsWith) and
     * $orderBy.
     */
    userPrincipalName?: NullableOption<string>;
    /**
     * A string value that can be used to classify user types in your directory, such as Member and Guest. Supports $filter
     * (eq, ne, NOT, in,).
     */
    userType?: NullableOption<string>;
    /**
     * Settings for the primary mailbox of the signed-in user. You can get or update settings for sending automatic replies to
     * incoming messages, locale, and time zone. Returned only on $select.
     */
    mailboxSettings?: NullableOption<MailboxSettings>;
    // The limit on the maximum number of devices that the user is permitted to enroll. Allowed values are 5 or 1000.
    deviceEnrollmentLimit?: number;
    // A freeform text entry field for the user to describe themselves. Returned only on $select.
    aboutMe?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z Returned only on $select.
     */
    birthday?: string;
    /**
     * 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 is 2014-01-01T00:00:00Z. Returned only on $select. Note: This
     * property is specific to SharePoint Online. We recommend using the native employeeHireDate property to set and update
     * hire date values using Microsoft Graph APIs.
     */
    hireDate?: string;
    // A list for the user to describe their interests. Returned only on $select.
    interests?: NullableOption<string[]>;
    // The URL for the user's personal site. Returned only on $select.
    mySite?: NullableOption<string>;
    // A list for the user to enumerate their past projects. Returned only on $select.
    pastProjects?: NullableOption<string[]>;
    // The preferred name for the user. Returned only on $select.
    preferredName?: NullableOption<string>;
    // A list for the user to enumerate their responsibilities. Returned only on $select.
    responsibilities?: NullableOption<string[]>;
    // A list for the user to enumerate the schools they have attended. Returned only on $select.
    schools?: NullableOption<string[]>;
    // A list for the user to enumerate their skills. Returned only on $select.
    skills?: NullableOption<string[]>;
    analytics?: NullableOption<UserAnalytics>;
    usageRights?: NullableOption<UsageRight[]>;
    informationProtection?: NullableOption<InformationProtection>;
    // Represents the app roles a user has been granted for an application. Supports $expand.
    appRoleAssignments?: NullableOption<AppRoleAssignment[]>;
    // Directory objects that were created by the user. Read-only. Nullable.
    createdObjects?: NullableOption<DirectoryObject[]>;
    /**
     * 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. Supports $expand.
     */
    directReports?: NullableOption<DirectoryObject[]>;
    // A collection of this user's license details. Read-only.
    licenseDetails?: NullableOption<LicenseDetails[]>;
    // The user or contact that is this user's manager. Read-only. (HTTP Methods: GET, PUT, DELETE.). Supports $expand.
    manager?: NullableOption<DirectoryObject>;
    /**
     * The groups, directory roles and administrative units that the user is a member of. Read-only. Nullable. Supports
     * $expand.
     */
    memberOf?: NullableOption<DirectoryObject[]>;
    oauth2PermissionGrants?: NullableOption<OAuth2PermissionGrant[]>;
    // Devices that are owned by the user. Read-only. Nullable. Supports $expand.
    ownedDevices?: NullableOption<DirectoryObject[]>;
    // Directory objects that are owned by the user. Read-only. Nullable. Supports $expand.
    ownedObjects?: NullableOption<DirectoryObject[]>;
    // Devices that are registered for the user. Read-only. Nullable. Supports $expand.
    registeredDevices?: NullableOption<DirectoryObject[]>;
    // The scoped-role administrative unit memberships for this user. Read-only. Nullable.
    scopedRoleMemberOf?: NullableOption<ScopedRoleMembership[]>;
    transitiveMemberOf?: NullableOption<DirectoryObject[]>;
    // The transitive reports for a user. Read-only.
    transitiveReports?: NullableOption<DirectoryObject[]>;
    // The user's primary calendar. Read-only.
    calendar?: NullableOption<Calendar>;
    // The user's calendar groups. Read-only. Nullable.
    calendarGroups?: NullableOption<CalendarGroup[]>;
    // The user's calendars. Read-only. Nullable.
    calendars?: NullableOption<Calendar[]>;
    // The calendar view for the calendar. Read-only. Nullable.
    calendarView?: NullableOption<Event[]>;
    // The user's contacts folders. Read-only. Nullable.
    contactFolders?: NullableOption<ContactFolder[]>;
    // The user's contacts. Read-only. Nullable.
    contacts?: NullableOption<Contact[]>;
    // The user's events. Default is to show events under the Default Calendar. Read-only. Nullable.
    events?: NullableOption<Event[]>;
    /**
     * Relevance classification of the user's messages based on explicit designations which override inferred relevance or
     * importance.
     */
    inferenceClassification?: NullableOption<InferenceClassification>;
    // Read-only. Nullable.
    joinedGroups?: NullableOption<Group[]>;
    // The user's mail folders. Read-only. Nullable.
    mailFolders?: NullableOption<MailFolder[]>;
    // The messages in a mailbox or folder. Read-only. Nullable.
    messages?: NullableOption<Message[]>;
    // Selective Outlook services available to the user. Read-only. Nullable.
    outlook?: NullableOption<OutlookUser>;
    /**
     * Read-only. The most relevant people to the user. The collection is ordered by their relevance to the user, which is
     * determined by the user's communication, collaboration and business relationships. A person is an aggregation of
     * information from across mail, contacts and social networks.
     */
    people?: NullableOption<Person[]>;
    // The user's OneDrive. Read-only.
    drive?: NullableOption<Drive>;
    // A collection of drives available for this user. Read-only.
    drives?: NullableOption<Drive[]>;
    followedSites?: NullableOption<Site[]>;
    // The collection of open extensions defined for the user. Nullable.
    extensions?: NullableOption<Extension[]>;
    appConsentRequestsForApproval?: NullableOption<AppConsentRequest[]>;
    approvals?: NullableOption<Approval[]>;
    // Navigation property to get list of access reviews pending approval by reviewer.
    pendingAccessReviewInstances?: NullableOption<AccessReviewInstance[]>;
    // The user's terms of use acceptance statuses. Read-only. Nullable.
    agreementAcceptances?: NullableOption<AgreementAcceptance[]>;
    // Get enrollment configurations targeted to the user
    deviceEnrollmentConfigurations?: NullableOption<DeviceEnrollmentConfiguration[]>;
    // The managed devices associated with the user.
    managedDevices?: NullableOption<ManagedDevice[]>;
    // Zero or more managed app registrations that belong to the user.
    managedAppRegistrations?: NullableOption<ManagedAppRegistration[]>;
    // Zero or more WIP device registrations that belong to the user.
    windowsInformationProtectionDeviceRegistrations?: NullableOption<WindowsInformationProtectionDeviceRegistration[]>;
    // The list of troubleshooting events for this user.
    deviceManagementTroubleshootingEvents?: NullableOption<DeviceManagementTroubleshootingEvent[]>;
    // The list of troubleshooting events for this user.
    mobileAppIntentAndStates?: NullableOption<MobileAppIntentAndState[]>;
    // The list of mobile app troubleshooting events for this user.
    mobileAppTroubleshootingEvents?: NullableOption<MobileAppTroubleshootingEvent[]>;
    notifications?: NullableOption<Notification[]>;
    // Selective Planner services available to the user. Read-only. Nullable.
    planner?: NullableOption<PlannerUser>;
    // Read-only. Nullable.
    insights?: NullableOption<ItemInsights>;
    // Read-only. Nullable.
    settings?: NullableOption<UserSettings>;
    // Read-only.
    onenote?: NullableOption<Onenote>;
    // The user's profile photo. Read-only.
    photo?: NullableOption<ProfilePhoto>;
    // Read-only. Nullable.
    photos?: NullableOption<ProfilePhoto[]>;
    // Represents properties that are descriptive of a user in a tenant.
    profile?: NullableOption<Profile>;
    // The user's activities across devices. Read-only. Nullable.
    activities?: NullableOption<UserActivity[]>;
    devices?: NullableOption<Device[]>;
    onlineMeetings?: NullableOption<OnlineMeeting[]>;
    presence?: NullableOption<Presence>;
    authentication?: NullableOption<Authentication>;
    chats?: NullableOption<Chat[]>;
    // The Microsoft Teams teams that the user is a member of. Read-only. Nullable.
    joinedTeams?: NullableOption<Team[]>;
    // A container for Microsoft Teams features available for the user. Read-only. Nullable.
    teamwork?: NullableOption<UserTeamwork>;
    // Represents the To Do services available to a user.
    todo?: NullableOption<Todo>;
}
export interface UserAnalytics extends Entity {
    // The current settings for a user to use the analytics API.
    settings?: NullableOption<Settings>;
    // The collection of work activities that a user spent time on during and outside of working hours. Read-only. Nullable.
    activityStatistics?: NullableOption<ActivityStatistics[]>;
}
export interface UsageRight extends Entity {
    // Product id corresponding to the usage right.
    catalogId?: string;
    // Identifier of the service corresponding to the usage right.
    serviceIdentifier?: string;
    // The state of the usage right. Possible values are: active, inactive, warning, suspended.
    state?: UsageRightState;
}
// tslint:disable-next-line: interface-name
export interface InformationProtection extends Entity {
    bitlocker?: NullableOption<Bitlocker>;
    dataLossPreventionPolicies?: NullableOption<DataLossPreventionPolicy[]>;
    sensitivityLabels?: NullableOption<SensitivityLabel[]>;
    sensitivityPolicySettings?: NullableOption<SensitivityPolicySettings>;
    policy?: NullableOption<InformationProtectionPolicy>;
    threatAssessmentRequests?: NullableOption<ThreatAssessmentRequest[]>;
}
export interface AppRoleAssignment extends Entity {
    /**
     * 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.
     */
    appRoleId?: string;
    /**
     * The time when the app role assignment was 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    creationTimestamp?: NullableOption<string>;
    /**
     * The display name of the user, group, or service principal that was granted the app role assignment. Read-only. Supports
     * $filter (eq and startswith).
     */
    principalDisplayName?: NullableOption<string>;
    // The unique identifier (id) for the user, group or service principal being granted the app role. Required on create.
    principalId?: NullableOption<string>;
    // The type of the assigned principal. This can either be User, Group or ServicePrincipal. Read-only.
    principalType?: NullableOption<string>;
    // The display name of the resource app's service principal to which the assignment is made.
    resourceDisplayName?: NullableOption<string>;
    /**
     * The unique identifier (id) for the resource service principal for which the assignment is made. Required on create.
     * Supports $filter (eq only).
     */
    resourceId?: NullableOption<string>;
}
export interface LicenseDetails extends Entity {
    // Information about the service plans assigned with the license. Read-only, Not nullable
    servicePlans?: ServicePlanInfo[];
    /**
     * Unique identifier (GUID) for the service SKU. Equal to the skuId property on the related SubscribedSku object.
     * Read-only
     */
    skuId?: NullableOption<string>;
    /**
     * Unique SKU display name. Equal to the skuPartNumber on the related SubscribedSku object; for example: 'AAD_Premium'.
     * Read-only
     */
    skuPartNumber?: NullableOption<string>;
}
export interface OAuth2PermissionGrant extends Entity {
    /**
     * 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).
     */
    clientId?: string;
    /**
     * Indicates whether 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).
     */
    consentType?: NullableOption<string>;
    // Currently, the end time value is ignored, but a value is required when creating an oAuth2PermissionGrant. Required.
    expiryTime?: NullableOption<string>;
    /**
     * 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.
     */
    principalId?: NullableOption<string>;
    /**
     * 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.
     */
    resourceId?: string;
    /**
     * 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.
     */
    scope?: NullableOption<string>;
    // Currently, the start time value is ignored, but a value is required when creating an oAuth2PermissionGrant. Required.
    startTime?: NullableOption<string>;
}
export interface ScopedRoleMembership extends Entity {
    // Unique identifier for the administrative unit that the directory role is scoped to
    administrativeUnitId?: string;
    // Unique identifier for the directory role that the member is in.
    roleId?: string;
    // Role member identity information. Represents the user that is a member of this scoped-role.
    roleMemberInfo?: Identity;
}
export interface Calendar extends Entity {
    /**
     * Represent the online meeting service providers that can be used to create online meetings in this calendar. Possible
     * values are: unknown, skypeForBusiness, skypeForConsumer, teamsForBusiness.
     */
    allowedOnlineMeetingProviders?: NullableOption<OnlineMeetingProviderType[]>;
    /**
     * The calendarGroup in which to create the calendar. If the user has never explicitly set a group for the calendar, this
     * property is null.
     */
    calendarGroupId?: NullableOption<string>;
    /**
     * 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, through an
     * Outlook client or the corresponding calendarPermission resource. Read-only.
     */
    canEdit?: NullableOption<boolean>;
    /**
     * true if the user has the permission to share the calendar, false otherwise. Only the user who created the calendar can
     * share it. Read-only.
     */
    canShare?: NullableOption<boolean>;
    /**
     * true if the user can read calendar items that have been marked private, false otherwise. This property is set through
     * an Outlook client or the corresponding calendarPermission resource. Read-only.
     */
    canViewPrivateItems?: NullableOption<boolean>;
    /**
     * 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.
     */
    changeKey?: NullableOption<string>;
    /**
     * Specifies the color theme to distinguish the calendar from other calendars in a UI. The property values are: auto,
     * lightBlue, lightGreen, lightOrange, lightGray, lightYellow, lightTeal, lightPink, lightBrown, lightRed, maxColor.
     */
    color?: NullableOption<CalendarColor>;
    /**
     * The default online meeting provider for meetings sent from this calendar. Possible values are: unknown,
     * skypeForBusiness, skypeForConsumer, teamsForBusiness.
     */
    defaultOnlineMeetingProvider?: NullableOption<OnlineMeetingProviderType>;
    /**
     * The calendar color, expressed in a hex color code of three hexadecimal values, each ranging from 00 to FF and
     * representing the red, green, or blue components of the color in the RGB color space. If the user has never explicitly
     * set a color for the calendar, this property is empty.
     */
    hexColor?: NullableOption<string>;
    // true if this is the default calendar where new events are created by default, false otherwise.
    isDefaultCalendar?: NullableOption<boolean>;
    // Indicates whether this user calendar can be deleted from the user mailbox.
    isRemovable?: NullableOption<boolean>;
    /**
     * true if the user has shared the calendar with other users, false otherwise. Since only the user who created the
     * calendar can share it, isShared and isSharedWithMe cannot be true for the same user. This property is set when sharing
     * is initiated in an Outlook client, and can be reset when the sharing is cancelled through the client or the
     * corresponding calendarPermission resource. Read-only.
     */
    isShared?: NullableOption<boolean>;
    /**
     * true if the user has been shared this calendar, false otherwise. This property is always false for a calendar owner.
     * This property is set when sharing is initiated in an Outlook client, and can be reset when the sharing is cancelled
     * through the client or the corresponding calendarPermission resource. Read-only.
     */
    isSharedWithMe?: NullableOption<boolean>;
    /**
     * Indicates whether this user calendar supports tracking of meeting responses. Only meeting invites sent from users'
     * primary calendars support tracking of meeting responses.
     */
    isTallyingResponses?: NullableOption<boolean>;
    // The calendar name.
    name?: NullableOption<string>;
    /**
     * If set, this represents the user who created or added the calendar. For a calendar that the user created or added, the
     * owner property is set to the user. For a calendar shared with the user, the owner property is set to the person who
     * shared that calendar with the user. Read-only.
     */
    owner?: NullableOption<EmailAddress>;
    // The permissions of the users with whom the calendar is shared.
    calendarPermissions?: NullableOption<CalendarPermission[]>;
    // The calendar view for the calendar. Navigation property. Read-only.
    calendarView?: NullableOption<Event[]>;
    // The events in the calendar. Navigation property. Read-only.
    events?: NullableOption<Event[]>;
    // The collection of multi-value extended properties defined for the calendar. Read-only. Nullable.
    multiValueExtendedProperties?: NullableOption<MultiValueLegacyExtendedProperty[]>;
    // The collection of single-value extended properties defined for the calendar. Read-only. Nullable.
    singleValueExtendedProperties?: NullableOption<SingleValueLegacyExtendedProperty[]>;
}
export interface CalendarGroup extends Entity {
    /**
     * 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.
     */
    changeKey?: NullableOption<string>;
    // The class identifier. Read-only.
    classId?: NullableOption<string>;
    // The group name.
    name?: NullableOption<string>;
    // The calendars in the calendar group. Navigation property. Read-only. Nullable.
    calendars?: NullableOption<Calendar[]>;
}
export interface OutlookItem extends Entity {
    // The categories associated with the item
    categories?: NullableOption<string[]>;
    /**
     * 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.
     */
    changeKey?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    createdDateTime?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    lastModifiedDateTime?: NullableOption<string>;
}
export interface Event extends OutlookItem {
    /**
     * True if the meeting organizer allows invitees to propose a new time when responding, false otherwise. Optional. Default
     * is true.
     */
    allowNewTimeProposals?: NullableOption<boolean>;
    // The collection of attendees for the event.
    attendees?: NullableOption<Attendee[]>;
    // The body of the message associated with the event. It can be in HTML or text format.
    body?: NullableOption<ItemBody>;
    // The preview of the message associated with the event. It is in text format.
    bodyPreview?: NullableOption<string>;
    /**
     * Contains occurrenceId property values of cancelled instances in a recurring series, if the event is the series master.
     * Instances in a recurring series that are cancelled are called cancelledOccurences.Returned only on $select in a Get
     * operation which specifies the id of a series master event (that is, the seriesMasterId property value).
     */
    cancelledOccurrences?: NullableOption<string[]>;
    // The date, time, and time zone that the event ends. By default, the end time is in UTC.
    end?: NullableOption<DateTimeTimeZone>;
    // Set to true if the event has attachments.
    hasAttachments?: NullableOption<boolean>;
    /**
     * When set to true, each attendee only sees themselves in the meeting request and meeting Tracking list. Default is
     * false.
     */
    hideAttendees?: NullableOption<boolean>;
    // The importance of the event. The possible values are: low, normal, high.
    importance?: NullableOption<Importance>;
    // Set to true if the event lasts all day.
    isAllDay?: NullableOption<boolean>;
    // Set to true if the event has been canceled.
    isCancelled?: NullableOption<boolean>;
    /**
     * Set to true if the user has updated the meeting in Outlook but has not sent the updates to attendees. Set to false if
     * all changes have been sent, or if the event is an appointment without any attendees.
     */
    isDraft?: NullableOption<boolean>;
    // True if this event has online meeting information, false otherwise. Default is false. Optional.
    isOnlineMeeting?: NullableOption<boolean>;
    /**
     * 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.
     */
    isOrganizer?: NullableOption<boolean>;
    // Set to true if an alert is set to remind the user of the event.
    isReminderOn?: NullableOption<boolean>;
    // The location of the event.
    location?: NullableOption<Location>;
    /**
     * 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.
     */
    locations?: NullableOption<Location[]>;
    occurrenceId?: NullableOption<string>;
    // Details for an attendee to join the meeting online. Read-only.
    onlineMeeting?: NullableOption<OnlineMeetingInfo>;
    /**
     * Represents the online meeting service provider. The possible values are teamsForBusiness, skypeForBusiness, and
     * skypeForConsumer. Optional.
     */
    onlineMeetingProvider?: NullableOption<OnlineMeetingProviderType>;
    /**
     * 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.
     */
    onlineMeetingUrl?: NullableOption<string>;
    // The organizer of the event.
    organizer?: NullableOption<Recipient>;
    /**
     * 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.
     */
    originalEndTimeZone?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    originalStart?: NullableOption<string>;
    /**
     * 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.
     */
    originalStartTimeZone?: NullableOption<string>;
    // The recurrence pattern for the event.
    recurrence?: NullableOption<PatternedRecurrence>;
    // The number of minutes before the event start time that the reminder alert occurs.
    reminderMinutesBeforeStart?: NullableOption<number>;
    // Default is true, which represents the organizer would like an invitee to send a response to the event.
    responseRequested?: NullableOption<boolean>;
    // Indicates the type of response sent in response to an event message.
    responseStatus?: NullableOption<ResponseStatus>;
    // The possible values are: normal, personal, private, confidential.
    sensitivity?: NullableOption<Sensitivity>;
    // The ID for the recurring series master item, if this event is part of a recurring series.
    seriesMasterId?: NullableOption<string>;
    // The status to show. The possible values are: free, tentative, busy, oof, workingElsewhere, unknown.
    showAs?: NullableOption<FreeBusyStatus>;
    // The date, time, and time zone that the event starts. By default, the start time is in UTC.
    start?: NullableOption<DateTimeTimeZone>;
    // The text of the event's subject line.
    subject?: NullableOption<string>;
    /**
     * 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.
     */
    transactionId?: NullableOption<string>;
    // The event type. The possible values are: singleInstance, occurrence, exception, seriesMaster. Read-only.
    type?: NullableOption<EventType>;
    uid?: NullableOption<string>;
    /**
     * 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 cannot be accessed from within an
     * iFrame.
     */
    webLink?: NullableOption<string>;
    /**
     * The collection of FileAttachment, ItemAttachment, and referenceAttachment attachments for the event. Navigation
     * property. Read-only. Nullable.
     */
    attachments?: NullableOption<Attachment[]>;
    // The calendar that contains the event. Navigation property. Read-only.
    calendar?: NullableOption<Calendar>;
    exceptionOccurrences?: NullableOption<Event[]>;
    // The collection of open extensions defined for the event. Nullable.
    extensions?: NullableOption<Extension[]>;
    /**
     * The occurrences of a recurring series, if the event is a series master. This property includes occurrences that are
     * part of the recurrence pattern, and exceptions that have been modified, but does not include occurrences that have been
     * cancelled from the series. Navigation property. Read-only. Nullable.
     */
    instances?: NullableOption<Event[]>;
    // The collection of multi-value extended properties defined for the event. Read-only. Nullable.
    multiValueExtendedProperties?: NullableOption<MultiValueLegacyExtendedProperty[]>;
    // The collection of single-value extended properties defined for the event. Read-only. Nullable.
    singleValueExtendedProperties?: NullableOption<SingleValueLegacyExtendedProperty[]>;
}
export interface ContactFolder extends Entity {
    // The folder's display name.
    displayName?: NullableOption<string>;
    // The ID of the folder's parent folder.
    parentFolderId?: NullableOption<string>;
    // The name of the folder if the folder is a recognized folder. Currently contacts is the only recognized contacts folder.
    wellKnownName?: NullableOption<string>;
    // The collection of child folders in the folder. Navigation property. Read-only. Nullable.
    childFolders?: NullableOption<ContactFolder[]>;
    // The contacts in the folder. Navigation property. Read-only. Nullable.
    contacts?: NullableOption<Contact[]>;
    // The collection of multi-value extended properties defined for the contactFolder. Read-only. Nullable.
    multiValueExtendedProperties?: NullableOption<MultiValueLegacyExtendedProperty[]>;
    // The collection of single-value extended properties defined for the contactFolder. Read-only. Nullable.
    singleValueExtendedProperties?: NullableOption<SingleValueLegacyExtendedProperty[]>;
}
export interface Contact extends OutlookItem {
    // The name of the contact's assistant.
    assistantName?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    birthday?: NullableOption<string>;
    // The names of the contact's children.
    children?: NullableOption<string[]>;
    // The name of the contact's company.
    companyName?: NullableOption<string>;
    // The contact's department.
    department?: NullableOption<string>;
    /**
     * 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.
     */
    displayName?: NullableOption<string>;
    // The contact's email addresses.
    emailAddresses?: NullableOption<TypedEmailAddress[]>;
    // The name the contact is filed under.
    fileAs?: NullableOption<string>;
    // The flag value that indicates the status, start date, due date, or completion date for the contact.
    flag?: NullableOption<FollowupFlag>;
    // The contact's gender.
    gender?: NullableOption<string>;
    // The contact's generation.
    generation?: NullableOption<string>;
    // The contact's given name.
    givenName?: NullableOption<string>;
    // The contact's instant messaging (IM) addresses.
    imAddresses?: NullableOption<string[]>;
    // The contact's initials.
    initials?: NullableOption<string>;
    isFavorite?: NullableOption<boolean>;
    // The contact’s job title.
    jobTitle?: NullableOption<string>;
    // The name of the contact's manager.
    manager?: NullableOption<string>;
    // The contact's middle name.
    middleName?: NullableOption<string>;
    // The contact's nickname.
    nickName?: NullableOption<string>;
    // The location of the contact's office.
    officeLocation?: NullableOption<string>;
    // The ID of the contact's parent folder.
    parentFolderId?: NullableOption<string>;
    // The user's notes about the contact.
    personalNotes?: NullableOption<string>;
    phones?: NullableOption<Phone[]>;
    postalAddresses?: NullableOption<PhysicalAddress[]>;
    // The contact's profession.
    profession?: NullableOption<string>;
    // The name of the contact's spouse/partner.
    spouseName?: NullableOption<string>;
    // The contact's surname.
    surname?: NullableOption<string>;
    // The contact's title.
    title?: NullableOption<string>;
    websites?: NullableOption<Website[]>;
    weddingAnniversary?: NullableOption<string>;
    // The phonetic Japanese company name of the contact.
    yomiCompanyName?: NullableOption<string>;
    // The phonetic Japanese given name (first name) of the contact.
    yomiGivenName?: NullableOption<string>;
    // The phonetic Japanese surname (last name) of the contact.
    yomiSurname?: NullableOption<string>;
    // The collection of open extensions defined for the contact. Nullable.
    extensions?: NullableOption<Extension[]>;
    // The collection of multi-value extended properties defined for the contact. Read-only. Nullable.
    multiValueExtendedProperties?: NullableOption<MultiValueLegacyExtendedProperty[]>;
    // Optional contact picture. You can get or set a photo for a contact.
    photo?: NullableOption<ProfilePhoto>;
    // The collection of single-value extended properties defined for the contact. Read-only. Nullable.
    singleValueExtendedProperties?: NullableOption<SingleValueLegacyExtendedProperty[]>;
}
// tslint:disable-next-line: interface-name
export interface InferenceClassification extends Entity {
    /**
     * A set of overrides for a user to always classify messages from specific senders in certain ways: focused, or other.
     * Read-only. Nullable.
     */
    overrides?: NullableOption<InferenceClassificationOverride[]>;
}
export interface Group extends DirectoryObject {
    /**
     * The list of sensitivity label pairs (label ID, label name) associated with a Microsoft 365 group. Returned only on
     * $select.
     */
    assignedLabels?: NullableOption<AssignedLabel[]>;
    // The licenses that are assigned to the group. Returned only on $select. Supports $filter (eq). Read-only.
    assignedLicenses?: NullableOption<AssignedLicense[]>;
    /**
     * 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.
     * Supports $filter (eq, ne, NOT, ge, le, startsWith).
     */
    classification?: NullableOption<string>;
    /**
     * App ID of the app used to create the group. Can be null for some groups. Returned by default. Read-only. Supports
     * $filter (eq, ne, NOT, in, startsWith).
     */
    createdByAppId?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Returned by default. Supports $filter (eq, ne, NOT, ge,
     * le, in). Read-only.
     */
    createdDateTime?: NullableOption<string>;
    /**
     * An optional description for the group. Returned by default. Supports $filter (eq, ne, NOT, ge, le, startsWith) and
     * $search.
     */
    description?: NullableOption<string>;
    /**
     * 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 (eq, ne, NOT, ge, le, in, startsWith), $search, and $orderBy.
     */
    displayName?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Returned by default. Supports $filter (eq, ne,
     * NOT, ge, le, in). Read-only.
     */
    expirationDateTime?: NullableOption<string>;
    /**
     * 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 (eq, NOT).
     */
    groupTypes?: string[];
    /**
     * 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). Supports $filter (eq).
     */
    hasMembersWithLicenseErrors?: NullableOption<boolean>;
    /**
     * Identifies the info segments assigned to the group. Returned by default. Supports $filter (eq, NOT, ge, le,
     * startsWith).
     */
    infoCatalogs?: string[];
    /**
     * Indicates whether this group can be assigned to an Azure Active Directory role.This property can only be set while
     * creating the group and is immutable. If set to true, the securityEnabled property must also be set to true and the
     * group cannot be a dynamic group (that is, groupTypes cannot contain DynamicMembership). Only callers in Global
     * administrator and Privileged role administrator roles can set this property. The caller must also be assigned the
     * Directory.AccessAsUser.All permission to set this property. For more, see Using a group to manage Azure AD role
     * assignmentsReturned by default. Supports $filter (eq, ne, NOT).
     */
    isAssignableToRole?: NullableOption<boolean>;
    /**
     * Indicates status of the group license assignment to all members of the group. Possible values: QueuedForProcessing,
     * ProcessingInProgress, and ProcessingComplete. Returned only on $select. Read-only.
     */
    licenseProcessingState?: NullableOption<LicenseProcessingState>;
    /**
     * The SMTP address for the group, for example, 'serviceadmins@contoso.onmicrosoft.com'. Returned by default. Read-only.
     * Supports $filter (eq, ne, NOT, ge, le, in, startsWith).
     */
    mail?: NullableOption<string>;
    // Specifies whether the group is mail-enabled. Returned by default. Supports $filter (eq, ne, NOT).
    mailEnabled?: NullableOption<boolean>;
    /**
     * The mail alias for the group, unique in the organization. This property must be specified when a group is created.
     * These characters cannot be used in the mailNickName: @()/[]';:.&amp;lt;&amp;gt;,SPACE. Returned by default. Supports
     * $filter (eq, ne, NOT, ge, le, in, startsWith).
     */
    mailNickname?: NullableOption<string>;
    mdmAppId?: NullableOption<string>;
    /**
     * 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. Supports $filter (eq, ne, NOT, ge, le, startsWith).
     */
    membershipRule?: NullableOption<string>;
    /**
     * Indicates whether the dynamic membership processing is on or paused. Possible values are On or Paused. Returned by
     * default. Supports $filter (eq, ne, NOT, in).
     */
    membershipRuleProcessingState?: NullableOption<string>;
    /**
     * 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.
     */
    onPremisesDomainName?: NullableOption<string>;
    /**
     * 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 is
     * 2014-01-01T00:00:00Z. Returned by default. Read-only. Supports $filter (eq, ne, NOT, ge, le, in).
     */
    onPremisesLastSyncDateTime?: NullableOption<string>;
    /**
     * 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.
     */
    onPremisesNetBiosName?: NullableOption<string>;
    /**
     * Errors when using Microsoft synchronization product during provisioning. Returned by default. Supports $filter (eq,
     * NOT).
     */
    onPremisesProvisioningErrors?: NullableOption<OnPremisesProvisioningError[]>;
    /**
     * 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. Supports $filter (eq, ne, NOT, ge, le, in, startsWith). Read-only.
     */
    onPremisesSamAccountName?: NullableOption<string>;
    /**
     * Contains the on-premises security identifier (SID) for the group that was synchronized from on-premises to the cloud.
     * Returned by default. Supports $filter on null values. Read-only.
     */
    onPremisesSecurityIdentifier?: NullableOption<string>;
    /**
     * 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 (eq, ne, NOT, in).
     */
    onPremisesSyncEnabled?: NullableOption<boolean>;
    organizationId?: NullableOption<string>;
    // The preferred data location for the group. For more information, see OneDrive Online Multi-Geo. Returned by default.
    preferredDataLocation?: NullableOption<string>;
    /**
     * The preferred language for a Microsoft 365 group. Should follow ISO 639-1 Code; for example 'en-US'. Returned by
     * default. Supports $filter (eq, ne, NOT, ge, le, in, startsWith).
     */
    preferredLanguage?: NullableOption<string>;
    /**
     * 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 for filter expressions on multi-valued properties. Returned by
     * default. Read-only. Not nullable. Supports $filter (eq, NOT, ge, le, startsWith).
     */
    proxyAddresses?: string[];
    /**
     * 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 is 2014-01-01T00:00:00Z. Returned by default. Supports $filter (eq, ne,
     * NOT, ge, le, in). Read-only.
     */
    renewedDateTime?: NullableOption<string>;
    /**
     * Specifies the group behaviors that can be set for a Microsoft 365 group during creation. This can be set only as part
     * of creation (POST). Possible values are AllowOnlyMembersToPost, HideGroupInOutlook, SubscribeNewGroupMembers,
     * WelcomeEmailDisabled. For more information, see Set Microsoft 365 group behaviors and provisioning options.
     */
    resourceBehaviorOptions?: string[];
    /**
     * Specifies the group resources that are provisioned as part of Microsoft 365 group creation, that are not normally part
     * of default group creation. Possible value is Team. For more information, see Set Microsoft 365 group behaviors and
     * provisioning options.
     */
    resourceProvisioningOptions?: string[];
    // Specifies whether the group is a security group. Returned by default. Supports $filter (eq, ne, NOT, in).
    securityEnabled?: NullableOption<boolean>;
    // Security identifier of the group, used in Windows scenarios. Returned by default.
    securityIdentifier?: NullableOption<string>;
    /**
     * Specifies a Microsoft 365 group's color theme. Possible values are Teal, Purple, Green, Blue, Pink, Orange or Red.
     * Returned by default.
     */
    theme?: NullableOption<string>;
    /**
     * Specifies the group join policy and group content visibility for groups. Possible values are: Private, Public, or
     * Hiddenmembership. Hiddenmembership can be set only for Microsoft 365 groups, when the groups are created. It can't be
     * updated later. Other values of visibility can be updated after group creation. If visibility value is not specified
     * during group creation on Microsoft Graph, a security group is created as Private by default and Microsoft 365 group is
     * Public. See group visibility options to learn more. Returned by default.
     */
    visibility?: NullableOption<string>;
    accessType?: NullableOption<GroupAccessType>;
    /**
     * Indicates if people external to the organization can send messages to the group. Default value is false. Returned only
     * on $select. Supported only on the Get group API (GET /groups/{ID}).
     */
    allowExternalSenders?: NullableOption<boolean>;
    /**
     * 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. Supported only on the Get group API (GET /groups/{ID}).
     */
    autoSubscribeNewMembers?: NullableOption<boolean>;
    /**
     * true if the group is not displayed in certain parts of the Outlook user interface: in the Address Book, in address
     * lists for selecting message recipients, and in the Browse Groups dialog for searching groups; false otherwise. Default
     * value is false. Returned only on $select. Supported only on the Get group API (GET /groups/{ID}).
     */
    hideFromAddressLists?: NullableOption<boolean>;
    /**
     * true if the group is not displayed in Outlook clients, such as Outlook for Windows and Outlook on the web, false
     * otherwise. Default value is false. Returned only on $select. Supported only on the Get group API (GET /groups/{ID}).
     */
    hideFromOutlookClients?: NullableOption<boolean>;
    isFavorite?: NullableOption<boolean>;
    /**
     * Indicates whether the signed-in user is subscribed to receive email conversations. Default value is true. Returned only
     * on $select. Supported only on the Get group API (GET /groups/{ID}).
     */
    isSubscribedByMail?: NullableOption<boolean>;
    /**
     * Count of conversations that have been delivered one or more new posts since the signed-in user's last visit to the
     * group. This property is the same as unseenCount. Returned only on $select.
     */
    unseenConversationsCount?: NullableOption<number>;
    /**
     * Count of conversations that have received new posts since the signed-in user last visited the group. This property is
     * the same as unseenConversationsCount.Returned only on $select. Supported only on the Get group API (GET /groups/{ID}).
     */
    unseenCount?: NullableOption<number>;
    /**
     * Count of new posts that have been delivered to the group's conversations since the signed-in user's last visit to the
     * group. Returned only on $select.
     */
    unseenMessagesCount?: NullableOption<number>;
    /**
     * Describes the processing status for rules-based dynamic groups. The property is null for non-rule based dynamic groups
     * or if the dynamic group processing has been paused. Returned only on $select. Read-only.
     */
    membershipRuleProcessingStatus?: NullableOption<MembershipRuleProcessingStatus>;
    isArchived?: NullableOption<boolean>;
    // Represents the app roles a group has been granted for an application. Supports $expand.
    appRoleAssignments?: NullableOption<AppRoleAssignment[]>;
    // The user (or application) that created the group. Note: This is not set if the user is an administrator. Read-only.
    createdOnBehalfOf?: NullableOption<DirectoryObject>;
    // Endpoints for the group. Read-only. Nullable.
    endpoints?: NullableOption<Endpoint[]>;
    /**
     * Groups and administrative units that this group is a member of. HTTP Methods: GET (supported for all groups).
     * Read-only. Nullable. Supports $expand.
     */
    memberOf?: NullableOption<DirectoryObject[]>;
    /**
     * Users, contacts, and groups that are members of this group. HTTP Methods: GET (supported for all groups), POST
     * (supported for security groups and mail-enabled security groups), DELETE (supported only for security groups)
     * Read-only. Nullable. Supports $expand.
     */
    members?: NullableOption<DirectoryObject[]>;
    // A list of group members with license errors from this group-based license assignment. Read-only.
    membersWithLicenseErrors?: NullableOption<DirectoryObject[]>;
    /**
     * The owners of the group. The owners are a set of non-admin users who are allowed to modify this object. HTTP Methods:
     * GET (supported for all groups), POST (supported for security groups and mail-enabled security groups), DELETE
     * (supported only for security groups) Read-only. Nullable. Supports $expand.
     */
    owners?: NullableOption<DirectoryObject[]>;
    // The permissions that have been granted for a group to a specific application. Supports $expand.
    permissionGrants?: NullableOption<ResourceSpecificPermissionGrant[]>;
    // Settings that can govern this group's behavior, like whether members can invite guest users to the group. Nullable.
    settings?: NullableOption<DirectorySetting[]>;
    transitiveMemberOf?: NullableOption<DirectoryObject[]>;
    transitiveMembers?: NullableOption<DirectoryObject[]>;
    /**
     * 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.
     */
    acceptedSenders?: NullableOption<DirectoryObject[]>;
    // The group's calendar. Read-only.
    calendar?: NullableOption<Calendar>;
    // The calendar view for the calendar. Read-only.
    calendarView?: NullableOption<Event[]>;
    // The group's conversations.
    conversations?: NullableOption<Conversation[]>;
    // The group's events.
    events?: NullableOption<Event[]>;
    // The list of users or groups that are not allowed to create posts or calendar events in this group. Nullable
    rejectedSenders?: NullableOption<DirectoryObject[]>;
    // The group's conversation threads. Nullable.
    threads?: NullableOption<ConversationThread[]>;
    // The group's default drive. Read-only.
    drive?: NullableOption<Drive>;
    // The group's drives. Read-only.
    drives?: NullableOption<Drive[]>;
    // The list of SharePoint sites in this group. Access the default site with /sites/root.
    sites?: NullableOption<Site[]>;
    // The collection of open extensions defined for the group. Read-only. Nullable.
    extensions?: NullableOption<Extension[]>;
    // The collection of lifecycle policies for this group. Read-only. Nullable.
    groupLifecyclePolicies?: NullableOption<GroupLifecyclePolicy[]>;
    // Selective Planner services available to the group. Read-only. Nullable.
    planner?: NullableOption<PlannerGroup>;
    // Read-only.
    onenote?: NullableOption<Onenote>;
    // The group's profile photo.
    photo?: NullableOption<ProfilePhoto>;
    // The profile photos owned by the group. Read-only. Nullable.
    photos?: NullableOption<ProfilePhoto[]>;
    team?: NullableOption<Team>;
}
export interface MailFolder extends Entity {
    // The number of immediate child mailFolders in the current mailFolder.
    childFolderCount?: NullableOption<number>;
    // The mailFolder's display name.
    displayName?: NullableOption<string>;
    /**
     * Indicates whether the mailFolder is hidden. This property can be set only when creating the folder. Find more
     * information in Hidden mail folders.
     */
    isHidden?: NullableOption<boolean>;
    // The unique identifier for the mailFolder's parent mailFolder.
    parentFolderId?: NullableOption<string>;
    // The number of items in the mailFolder.
    totalItemCount?: NullableOption<number>;
    // The number of items in the mailFolder marked as unread.
    unreadItemCount?: NullableOption<number>;
    /**
     * The well-known folder name for the folder. The possible values are listed above. This property is only set for default
     * folders created by Outlook. For other folders, this property is null.
     */
    wellKnownName?: NullableOption<string>;
    // The collection of child folders in the mailFolder.
    childFolders?: NullableOption<MailFolder[]>;
    // The collection of rules that apply to the user's Inbox folder.
    messageRules?: NullableOption<MessageRule[]>;
    // The collection of messages in the mailFolder.
    messages?: NullableOption<Message[]>;
    // The collection of multi-value extended properties defined for the mailFolder. Read-only. Nullable.
    multiValueExtendedProperties?: NullableOption<MultiValueLegacyExtendedProperty[]>;
    // The collection of single-value extended properties defined for the mailFolder. Read-only. Nullable.
    singleValueExtendedProperties?: NullableOption<SingleValueLegacyExtendedProperty[]>;
    userConfigurations?: NullableOption<UserConfiguration[]>;
}
export interface Message extends OutlookItem {
    // The Bcc: recipients for the message.
    bccRecipients?: NullableOption<Recipient[]>;
    // The body of the message. It can be in HTML or text format. Find out about safe HTML in a message body.
    body?: NullableOption<ItemBody>;
    /**
     * The first 255 characters of the message body. It is in text format. If the message contains instances of mention, this
     * property would contain a concatenation of these mentions as well.
     */
    bodyPreview?: NullableOption<string>;
    // The Cc: recipients for the message.
    ccRecipients?: NullableOption<Recipient[]>;
    // The ID of the conversation the email belongs to.
    conversationId?: NullableOption<string>;
    // Indicates the position of the message within the conversation.
    conversationIndex?: NullableOption<number>;
    // The flag value that indicates the status, start date, due date, or completion date for the message.
    flag?: NullableOption<FollowupFlag>;
    /**
     * The owner of the mailbox from which the message is sent. In most cases, this value is the same as the sender property,
     * except for sharing or delegation scenarios. The value must correspond to the actual mailbox used. Find out more about
     * setting the from and sender properties of a message.
     */
    from?: NullableOption<Recipient>;
    /**
     * 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 &amp;lt;IMG src='cid:image001.jpg@01D26CD8.6C05F070'&amp;gt;.
     */
    hasAttachments?: NullableOption<boolean>;
    // The importance of the message. The possible values are: low, normal, and high.
    importance?: NullableOption<Importance>;
    /**
     * The classification of the message for the user, based on inferred relevance or importance, or on an explicit override.
     * The possible values are: focused or other.
     */
    inferenceClassification?: NullableOption<InferenceClassificationType>;
    /**
     * 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.
     */
    internetMessageHeaders?: NullableOption<InternetMessageHeader[]>;
    // The message ID in the format specified by RFC2822.
    internetMessageId?: NullableOption<string>;
    // Indicates whether a read receipt is requested for the message.
    isDeliveryReceiptRequested?: NullableOption<boolean>;
    // Indicates whether the message is a draft. A message is a draft if it hasn't been sent yet.
    isDraft?: NullableOption<boolean>;
    // Indicates whether the message has been read.
    isRead?: NullableOption<boolean>;
    // Indicates whether a read receipt is requested for the message.
    isReadReceiptRequested?: NullableOption<boolean>;
    mentionsPreview?: NullableOption<MentionsPreview>;
    // The unique identifier for the message's parent mailFolder.
    parentFolderId?: NullableOption<string>;
    /**
     * The date and time the message was received. The date and time information uses ISO 8601 format and is always in UTC
     * time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
     */
    receivedDateTime?: NullableOption<string>;
    // The email addresses to use when replying.
    replyTo?: NullableOption<Recipient[]>;
    /**
     * The account that is actually used to generate the message. In most cases, this value is the same as the from property.
     * You can set this property to a different value when sending a message from a shared mailbox, for a shared calendar, or
     * as a delegate. In any case, the value must correspond to the actual mailbox used. Find out more about setting the from
     * and sender properties of a message.
     */
    sender?: NullableOption<Recipient>;
    /**
     * The date and time the message was sent. The date and time information uses ISO 8601 format and is always in UTC time.
     * For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
     */
    sentDateTime?: NullableOption<string>;
    // The subject of the message.
    subject?: NullableOption<string>;
    // The To: recipients for the message.
    toRecipients?: NullableOption<Recipient[]>;
    /**
     * The part of the body of the message that is unique to the current message. uniqueBody is not returned by default but
     * can be retrieved for a given message by use of the ?$select=uniqueBody query. It can be in HTML or text format.
     */
    uniqueBody?: NullableOption<ItemBody>;
    unsubscribeData?: NullableOption<string[]>;
    unsubscribeEnabled?: NullableOption<boolean>;
    /**
     * The URL to open the message in Outlook on the web.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 on the web review pane.The
     * message will open in the browser if you are logged in to your mailbox via Outlook on the web. You will be prompted to
     * login if you are not already logged in with the browser.This URL cannot be accessed from within an iFrame.
     */
    webLink?: NullableOption<string>;
    // The fileAttachment and itemAttachment attachments for the message.
    attachments?: NullableOption<Attachment[]>;
    // The collection of open extensions defined for the message. Nullable.
    extensions?: NullableOption<Extension[]>;
    /**
     * A collection of mentions in the message, ordered by the createdDateTime from the newest to the oldest. By default, a
     * GET /messages does not return this property unless you apply $expand on the property.
     */
    mentions?: NullableOption<Mention[]>;
    // The collection of multi-value extended properties defined for the message. Nullable.
    multiValueExtendedProperties?: NullableOption<MultiValueLegacyExtendedProperty[]>;
    // The collection of single-value extended properties defined for the message. Nullable.
    singleValueExtendedProperties?: NullableOption<SingleValueLegacyExtendedProperty[]>;
}
export interface OutlookUser extends Entity {
    // A list of categories defined for the user.
    masterCategories?: NullableOption<OutlookCategory[]>;
    taskFolders?: NullableOption<OutlookTaskFolder[]>;
    taskGroups?: NullableOption<OutlookTaskGroup[]>;
    tasks?: NullableOption<OutlookTask[]>;
}
export interface Person extends Entity {
    // The person's birthday.
    birthday?: NullableOption<string>;
    // The name of the person's company.
    companyName?: NullableOption<string>;
    // The person's department.
    department?: NullableOption<string>;
    // The person's display name.
    displayName?: NullableOption<string>;
    // The person's email addresses.
    emailAddresses?: NullableOption<RankedEmailAddress[]>;
    // The person's given name.
    givenName?: NullableOption<string>;
    // true if the user has flagged this person as a favorite.
    isFavorite?: NullableOption<boolean>;
    // The type of mailbox that is represented by the person's email address.
    mailboxType?: NullableOption<string>;
    // The location of the person's office.
    officeLocation?: NullableOption<string>;
    // Free-form notes that the user has taken about this person.
    personNotes?: NullableOption<string>;
    // The type of person, for example distribution list.
    personType?: NullableOption<string>;
    // The person's phone numbers.
    phones?: NullableOption<Phone[]>;
    // The person's addresses.
    postalAddresses?: NullableOption<Location[]>;
    // The person's profession.
    profession?: NullableOption<string>;
    // The sources the user data comes from, for example Directory or Outlook Contacts.
    sources?: NullableOption<PersonDataSource[]>;
    // The person's surname.
    surname?: NullableOption<string>;
    // The person's title.
    title?: NullableOption<string>;
    /**
     * 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.
     */
    userPrincipalName?: NullableOption<string>;
    // The person's websites.
    websites?: NullableOption<Website[]>;
    // The phonetic Japanese name of the person's company.
    yomiCompany?: NullableOption<string>;
}
export interface BaseItem extends Entity {
    // Identity of the user, device, or application which created the item. Read-only.
    createdBy?: NullableOption<IdentitySet>;
    // Date and time of item creation. Read-only.
    createdDateTime?: string;
    // Provides a user-visible description of the item. Optional.
    description?: NullableOption<string>;
    // ETag for the item. Read-only.
    eTag?: NullableOption<string>;
    // Identity of the user, device, and application which last modified the item. Read-only.
    lastModifiedBy?: NullableOption<IdentitySet>;
    // Date and time the item was last modified. Read-only.
    lastModifiedDateTime?: string;
    // The name of the item. Read-write.
    name?: NullableOption<string>;
    // Parent information, if the item has a parent. Read-write.
    parentReference?: NullableOption<ItemReference>;
    // URL that displays the resource in the browser. Read-only.
    webUrl?: NullableOption<string>;
    // Identity of the user who created the item. Read-only.
    createdByUser?: NullableOption<User>;
    // Identity of the user who last modified the item. Read-only.
    lastModifiedByUser?: NullableOption<User>;
}
export interface Drive extends BaseItem {
    /**
     * 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.
     */
    driveType?: NullableOption<string>;
    // Optional. The user account that owns the drive. Read-only.
    owner?: NullableOption<IdentitySet>;
    // Optional. Information about the drive's storage space quota. Read-only.
    quota?: NullableOption<Quota>;
    sharePointIds?: NullableOption<SharepointIds>;
    // If present, indicates that this is a system-managed drive. Read-only.
    system?: NullableOption<SystemFacet>;
    // The list of recent activities that took place under this drive.
    activities?: NullableOption<ItemActivityOLD[]>;
    // Collection of [bundles][bundle] (albums and multi-select-shared sets of items). Only in personal OneDrive.
    bundles?: NullableOption<DriveItem[]>;
    // The list of items the user is following. Only in OneDrive for Business.
    following?: NullableOption<DriveItem[]>;
    // All items contained in the drive. Read-only. Nullable.
    items?: NullableOption<DriveItem[]>;
    // For drives in SharePoint, the underlying document library list. Read-only. Nullable.
    list?: NullableOption<List>;
    // The root folder of the drive. Read-only.
    root?: NullableOption<DriveItem>;
    // Collection of common folders available in OneDrive. Read-only. Nullable.
    special?: NullableOption<DriveItem[]>;
}
export interface Site extends BaseItem {
    deleted?: NullableOption<Deleted>;
    // The full title for the site. Read-only.
    displayName?: NullableOption<string>;
    // If present, indicates that this is the root site in the site collection. Read-only.
    root?: NullableOption<Root>;
    // Returns identifiers useful for SharePoint REST compatibility. Read-only.
    sharepointIds?: NullableOption<SharepointIds>;
    // Provides details about the site's site collection. Available only on the root site. Read-only.
    siteCollection?: NullableOption<SiteCollection>;
    // Analytics about the view activities that took place in this site.
    analytics?: NullableOption<ItemAnalytics>;
    // The collection of column definitions reusable across lists under this site.
    columns?: NullableOption<ColumnDefinition[]>;
    // The collection of content types defined for this site.
    contentTypes?: NullableOption<ContentType[]>;
    // The default drive (document library) for this site.
    drive?: NullableOption<Drive>;
    // The collection of drives (document libraries) under this site.
    drives?: NullableOption<Drive[]>;
    /**
     * The collection of column definitions available in the site that are referenced from the sites in the parent hierarchy
     * of the current site.
     */
    externalColumns?: NullableOption<ColumnDefinition[]>;
    // Used to address any item contained in this site. This collection cannot be enumerated.
    items?: NullableOption<BaseItem[]>;
    // The collection of lists under this site.
    lists?: NullableOption<List[]>;
    // The collection of pages in the SitePages list in this site.
    pages?: NullableOption<SitePage[]>;
    // The permissions associated with the site. Nullable.
    permissions?: NullableOption<Permission[]>;
    // The collection of the sub-sites under this site.
    sites?: NullableOption<Site[]>;
    // The termStore under this site.
    termStore?: NullableOption<TermStore.Store>;
    // Calls the OneNote service for notebook related operations.
    onenote?: NullableOption<Onenote>;
}
// tslint:disable-next-line: no-empty-interface
export interface Extension extends Entity {}
export interface AppConsentRequest extends Entity {
    // The display name of the app for which consent is requested. Required. Supports $filter (eq only) and $orderby.
    appDisplayName?: NullableOption<string>;
    // The identifier of the application. Required. Supports $filter (eq only) and $orderby.
    appId?: string;
    /**
     * The consent type of the request. Possible values are: Static and Dynamic. These represent static and dynamic
     * permissions, respectively, requested in the consent workflow. Supports $filter (eq only) and $orderby. Required.
     */
    consentType?: NullableOption<string>;
    // A list of pending scopes waiting for approval. This is empty if the consentType is Static. Required.
    pendingScopes?: NullableOption<AppConsentRequestScope[]>;
    // A list of pending user consent requests.
    userConsentRequests?: NullableOption<UserConsentRequest[]>;
}
export interface Approval extends Entity {
    steps?: NullableOption<ApprovalStep[]>;
}
export interface AccessReviewInstance extends Entity {
    /**
     * DateTime when review instance is scheduled to end.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 is 2014-01-01T00:00:00Z. Supports
     * $select. Read-only.
     */
    endDateTime?: NullableOption<string>;
    fallbackReviewers?: NullableOption<AccessReviewReviewerScope[]>;
    reviewers?: NullableOption<AccessReviewReviewerScope[]>;
    /**
     * Created based on scope and instanceEnumerationScope at the accessReviewScheduleDefinition level. Defines the scope of
     * users reviewed in a group. Supports $select and $filter (contains only). Read-only.
     */
    scope?: NullableOption<AccessReviewScope>;
    /**
     * DateTime when review instance is scheduled to start. May be in the future. 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 is
     * 2014-01-01T00:00:00Z. Supports $select. Read-only.
     */
    startDateTime?: NullableOption<string>;
    /**
     * Specifies the status of an accessReview. Possible values: Initializing, NotStarted, Starting, InProgress, Completing,
     * Completed, AutoReviewing, and AutoReviewed. Supports $select, $orderby, and $filter (eq only). Read-only.
     */
    status?: NullableOption<string>;
    contactedReviewers?: NullableOption<AccessReviewReviewer[]>;
    /**
     * Each user reviewed in an accessReviewInstance has a decision item representing if they were approved, denied, or not
     * yet reviewed.
     */
    decisions?: NullableOption<AccessReviewInstanceDecisionItem[]>;
    /**
     * There is exactly one accessReviewScheduleDefinition associated with each instance. It is the parent schedule for the
     * instance, where instances are created for each recurrence of a review definition and each group selected to review by
     * the definition.
     */
    definition?: NullableOption<AccessReviewScheduleDefinition>;
}
export interface AgreementAcceptance extends Entity {
    // ID of the agreement file accepted by the user.
    agreementFileId?: NullableOption<string>;
    // ID of the agreement.
    agreementId?: NullableOption<string>;
    // The display name of the device used for accepting the agreement.
    deviceDisplayName?: NullableOption<string>;
    // The unique identifier of the device used for accepting the agreement.
    deviceId?: NullableOption<string>;
    // The operating system used for accepting the agreement.
    deviceOSType?: NullableOption<string>;
    // The operating system version of the device used for accepting the agreement.
    deviceOSVersion?: NullableOption<string>;
    /**
     * The expiration date time of the acceptance. 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 is 2014-01-01T00:00:00Z
     */
    expirationDateTime?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    recordedDateTime?: NullableOption<string>;
    // Possible values are: accepted, declined.
    state?: NullableOption<AgreementAcceptanceState>;
    // Display name of the user when the acceptance was recorded.
    userDisplayName?: NullableOption<string>;
    // Email of the user when the acceptance was recorded.
    userEmail?: NullableOption<string>;
    // ID of the user who accepted the agreement.
    userId?: NullableOption<string>;
    // UPN of the user when the acceptance was recorded.
    userPrincipalName?: NullableOption<string>;
}
export interface DeviceEnrollmentConfiguration extends Entity {
    // Created date time in UTC of the device enrollment configuration
    createdDateTime?: string;
    // The description of the device enrollment configuration
    description?: NullableOption<string>;
    // The display name of the device enrollment configuration
    displayName?: NullableOption<string>;
    // Last modified date time in UTC of the device enrollment configuration
    lastModifiedDateTime?: string;
    /**
     * Priority is used when a user exists in multiple groups that are assigned enrollment configuration. Users are subject
     * only to the configuration with the lowest priority value.
     */
    priority?: number;
    // Optional role scope tags for the enrollment restrictions.
    roleScopeTagIds?: NullableOption<string[]>;
    // The version of the device enrollment configuration
    version?: number;
    // The list of group assignments for the device configuration profile
    assignments?: NullableOption<EnrollmentConfigurationAssignment[]>;
}
export interface ManagedDevice extends Entity {
    cloudPcRemoteActionResults?: NullableOption<CloudPcRemoteActionResult[]>;
    // Whether the device is Azure Active Directory registered. This property is read-only.
    aadRegistered?: NullableOption<boolean>;
    // Code that allows the Activation Lock on a device to be bypassed. This property is read-only.
    activationLockBypassCode?: NullableOption<string>;
    // Android security patch level. This property is read-only.
    androidSecurityPatchLevel?: NullableOption<string>;
    // Reports if the managed device is enrolled via auto-pilot. This property is read-only.
    autopilotEnrolled?: boolean;
    // The unique identifier for the Azure Active Directory device. Read only. This property is read-only.
    azureActiveDirectoryDeviceId?: NullableOption<string>;
    // The unique identifier for the Azure Active Directory device. Read only. This property is read-only.
    azureADDeviceId?: NullableOption<string>;
    // Whether the device is Azure Active Directory registered. This property is read-only.
    azureADRegistered?: NullableOption<boolean>;
    /**
     * Chassis type of the device. This property is read-only. Possible values are: unknown, desktop, laptop,
     * worksWorkstation, enterpriseServer, phone, tablet, mobileOther, mobileUnknown.
     */
    chassisType?: ChassisType;
    // List of properties of the ChromeOS Device.
    chromeOSDeviceInfo?: NullableOption<ChromeOSDeviceProperty[]>;
    // The DateTime when device compliance grace period expires. This property is read-only.
    complianceGracePeriodExpirationDateTime?: string;
    /**
     * Compliance state of the device. This property is read-only. Possible values are: unknown, compliant, noncompliant,
     * conflict, error, inGracePeriod, configManager.
     */
    complianceState?: ComplianceState;
    // ConfigrMgr client enabled features. This property is read-only.
    configurationManagerClientEnabledFeatures?: NullableOption<ConfigurationManagerClientEnabledFeatures>;
    // Configuration manager client health state, valid only for devices managed by MDM/ConfigMgr Agent
    configurationManagerClientHealthState?: NullableOption<ConfigurationManagerClientHealthState>;
    /**
     * Configuration manager client information, valid only for devices managed, duel-managed or tri-managed by ConfigMgr
     * Agent
     */
    configurationManagerClientInformation?: NullableOption<ConfigurationManagerClientInformation>;
    // List of ComplexType deviceActionResult objects. This property is read-only.
    deviceActionResults?: NullableOption<DeviceActionResult[]>;
    // Device category display name. This property is read-only.
    deviceCategoryDisplayName?: NullableOption<string>;
    /**
     * Enrollment type of the device. This property is read-only. Possible values are: unknown, userEnrollment,
     * deviceEnrollmentManager, appleBulkWithUser, appleBulkWithoutUser, windowsAzureADJoin, windowsBulkUserless,
     * windowsAutoEnrollment, windowsBulkAzureDomainJoin, windowsCoManagement, windowsAzureADJoinUsingDeviceAuth,
     * appleUserEnrollment, appleUserEnrollmentWithServiceAccount, azureAdJoinUsingAzureVmExtension,
     * androidEnterpriseDedicatedDevice, androidEnterpriseFullyManaged, androidEnterpriseCorporateWorkProfile.
     */
    deviceEnrollmentType?: DeviceEnrollmentType;
    // The device health attestation state. This property is read-only.
    deviceHealthAttestationState?: NullableOption<DeviceHealthAttestationState>;
    // Name of the device. This property is read-only.
    deviceName?: NullableOption<string>;
    /**
     * Device registration state. This property is read-only. Possible values are: notRegistered, registered, revoked,
     * keyConflict, approvalPending, certificateReset, notRegisteredPendingEnrollment, unknown.
     */
    deviceRegistrationState?: DeviceRegistrationState;
    /**
     * Platform of the device. This property is read-only. Possible values are: desktop, windowsRT, winMO6, nokia,
     * windowsPhone, mac, winCE, winEmbedded, iPhone, iPad, iPod, android, iSocConsumer, unix, macMDM, holoLens, surfaceHub,
     * androidForWork, androidEnterprise, windows10x, androidnGMS, chromeOS, linux, blackberry, palm, unknown, cloudPC.
     */
    deviceType?: DeviceType;
    // Whether the device is Exchange ActiveSync activated. This property is read-only.
    easActivated?: boolean;
    // Exchange ActivationSync activation time of the device. This property is read-only.
    easActivationDateTime?: string;
    // Exchange ActiveSync Id of the device. This property is read-only.
    easDeviceId?: NullableOption<string>;
    // Email(s) for the user associated with the device. This property is read-only.
    emailAddress?: NullableOption<string>;
    // Enrollment time of the device. This property is read-only.
    enrolledDateTime?: string;
    /**
     * Name of the enrollment profile assigned to the device. Default value is empty string, indicating no enrollment profile
     * was assgined. This property is read-only.
     */
    enrollmentProfileName?: NullableOption<string>;
    // Ethernet MAC. This property is read-only.
    ethernetMacAddress?: NullableOption<string>;
    /**
     * The Access State of the device in Exchange. This property is read-only. Possible values are: none, unknown, allowed,
     * blocked, quarantined.
     */
    exchangeAccessState?: DeviceManagementExchangeAccessState;
    /**
     * The reason for the device's access state in Exchange. This property is read-only. Possible values are: none, unknown,
     * exchangeGlobalRule, exchangeIndividualRule, exchangeDeviceRule, exchangeUpgrade, exchangeMailboxPolicy, other,
     * compliant, notCompliant, notEnrolled, unknownLocation, mfaRequired, azureADBlockDueToAccessPolicy, compromisedPassword,
     * deviceNotKnownWithManagedApp.
     */
    exchangeAccessStateReason?: DeviceManagementExchangeAccessStateReason;
    // Last time the device contacted Exchange. This property is read-only.
    exchangeLastSuccessfulSyncDateTime?: string;
    // Free Storage in Bytes. This property is read-only.
    freeStorageSpaceInBytes?: number;
    /**
     * The hardward details for the device. Includes information such as storage space, manufacturer, serial number, etc. This
     * property is read-only.
     */
    hardwareInformation?: NullableOption<HardwareInformation>;
    // Integrated Circuit Card Identifier, it is A SIM card's unique identification number. This property is read-only.
    iccid?: NullableOption<string>;
    // IMEI. This property is read-only.
    imei?: NullableOption<string>;
    // Device encryption status. This property is read-only.
    isEncrypted?: boolean;
    // Device supervised status. This property is read-only.
    isSupervised?: boolean;
    // whether the device is jail broken or rooted. This property is read-only.
    jailBroken?: NullableOption<string>;
    // Device join type. Possible values are: unknown, azureADJoined, azureADRegistered, hybridAzureADJoined.
    joinType?: JoinType;
    // The date and time that the device last completed a successful sync with Intune. This property is read-only.
    lastSyncDateTime?: string;
    // Indicates if Lost mode is enabled or disabled. This property is read-only. Possible values are: disabled, enabled.
    lostModeState?: LostModeState;
    // Automatically generated name to identify a device. Can be overwritten to a user friendly name.
    managedDeviceName?: NullableOption<string>;
    // Ownership of the device. Can be 'company' or 'personal'. Possible values are: unknown, company, personal.
    managedDeviceOwnerType?: ManagedDeviceOwnerType;
    /**
     * Management channel of the device. Intune, EAS, etc. This property is read-only. Possible values are: eas, mdm, easMdm,
     * intuneClient, easIntuneClient, configurationManagerClient, configurationManagerClientMdm,
     * configurationManagerClientMdmEas, unknown, jamf, googleCloudDevicePolicyController, microsoft365ManagedMdm, msSense,
     * intuneAosp.
     */
    managementAgent?: ManagementAgentType;
    // Reports device management certificate expiration date. This property is read-only.
    managementCertificateExpirationDate?: string;
    // Device management features. Possible values are: none, microsoftManagedDesktop.
    managementFeatures?: ManagedDeviceManagementFeatures;
    /**
     * Management state of the device. This property is read-only. Possible values are: managed, retirePending, retireFailed,
     * wipePending, wipeFailed, unhealthy, deletePending, retireIssued, wipeIssued, wipeCanceled, retireCanceled, discovered.
     */
    managementState?: ManagementState;
    // Manufacturer of the device. This property is read-only.
    manufacturer?: NullableOption<string>;
    // MEID. This property is read-only.
    meid?: NullableOption<string>;
    // Model of the device. This property is read-only.
    model?: NullableOption<string>;
    // Notes on the device created by IT Admin
    notes?: NullableOption<string>;
    // Operating system of the device. Windows, iOS, etc. This property is read-only.
    operatingSystem?: NullableOption<string>;
    // Operating system version of the device. This property is read-only.
    osVersion?: NullableOption<string>;
    // Ownership of the device. Can be 'company' or 'personal'. Possible values are: unknown, company, personal.
    ownerType?: OwnerType;
    /**
     * Indicates the threat state of a device when a Mobile Threat Defense partner is in use by the account and device. Read
     * Only. This property is read-only. Possible values are: unknown, activated, deactivated, secured, lowSeverity,
     * mediumSeverity, highSeverity, unresponsive, compromised, misconfigured.
     */
    partnerReportedThreatState?: ManagedDevicePartnerReportedHealthState;
    // Phone number of the device. This property is read-only.
    phoneNumber?: NullableOption<string>;
    // Total Memory in Bytes. This property is read-only.
    physicalMemoryInBytes?: number;
    /**
     * Reports the DateTime the preferMdmOverGroupPolicy setting was set. When set, the Intune MDM settings will override
     * Group Policy settings if there is a conflict. Read Only. This property is read-only.
     */
    preferMdmOverGroupPolicyAppliedDateTime?: string;
    // Processor architecture. This property is read-only. Possible values are: unknown, x86, x64, arm, arM64.
    processorArchitecture?: ManagedDeviceArchitecture;
    // An error string that identifies issues when creating Remote Assistance session objects. This property is read-only.
    remoteAssistanceSessionErrorDetails?: NullableOption<string>;
    // Url that allows a Remote Assistance session to be established with the device. This property is read-only.
    remoteAssistanceSessionUrl?: NullableOption<string>;
    // Reports if the managed iOS device is user approval enrollment. This property is read-only.
    requireUserEnrollmentApproval?: NullableOption<boolean>;
    // Indicates the time after when a device will be auto retired because of scheduled action. This property is read-only.
    retireAfterDateTime?: string;
    // List of Scope Tag IDs for this Device instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // SerialNumber. This property is read-only.
    serialNumber?: NullableOption<string>;
    // Device sku family
    skuFamily?: NullableOption<string>;
    /**
     * Device sku number, see also: https://docs.microsoft.com/windows/win32/api/sysinfoapi/nf-sysinfoapi-getproductinfo.
     * Valid values 0 to 2147483647. This property is read-only.
     */
    skuNumber?: number;
    // Specification version. This property is read-only.
    specificationVersion?: NullableOption<string>;
    // Subscriber Carrier. This property is read-only.
    subscriberCarrier?: NullableOption<string>;
    // Total Storage in Bytes. This property is read-only.
    totalStorageSpaceInBytes?: number;
    // Unique Device Identifier for iOS and macOS devices. This property is read-only.
    udid?: NullableOption<string>;
    // User display name. This property is read-only.
    userDisplayName?: NullableOption<string>;
    // Unique Identifier for the user associated with the device. This property is read-only.
    userId?: NullableOption<string>;
    // Device user principal name. This property is read-only.
    userPrincipalName?: NullableOption<string>;
    // Indicates the last logged on users of a device. This property is read-only.
    usersLoggedOn?: NullableOption<LoggedOnUser[]>;
    // Wi-Fi MAC. This property is read-only.
    wiFiMacAddress?: NullableOption<string>;
    // Count of active malware for this windows device. This property is read-only.
    windowsActiveMalwareCount?: number;
    // Count of remediated malware for this windows device. This property is read-only.
    windowsRemediatedMalwareCount?: number;
    // Managed device mobile app configuration states for this device.
    assignmentFilterEvaluationStatusDetails?: NullableOption<AssignmentFilterEvaluationStatusDetails[]>;
    // Device compliance policy states for this device.
    deviceCompliancePolicyStates?: NullableOption<DeviceCompliancePolicyState[]>;
    // Device configuration states for this device.
    deviceConfigurationStates?: NullableOption<DeviceConfigurationState[]>;
    // Managed device mobile app configuration states for this device.
    managedDeviceMobileAppConfigurationStates?: NullableOption<ManagedDeviceMobileAppConfigurationState[]>;
    // Security baseline states for this device.
    securityBaselineStates?: NullableOption<SecurityBaselineState[]>;
    // All applications currently installed on the device
    detectedApps?: NullableOption<DetectedApp[]>;
    // Device category
    deviceCategory?: NullableOption<DeviceCategory>;
    // List of log collection requests
    logCollectionRequests?: NullableOption<DeviceLogCollectionResponse[]>;
    // The primary users associated with the managed device.
    users?: NullableOption<User[]>;
    // The device protection status.
    windowsProtectionState?: NullableOption<WindowsProtectionState>;
}
export interface ManagedAppRegistration extends Entity {
    // The app package Identifier
    appIdentifier?: NullableOption<MobileAppIdentifier>;
    // App version
    applicationVersion?: NullableOption<string>;
    /**
     * The Azure Active Directory Device identifier of the host device. Value could be empty even when the host device is
     * Azure Active Directory registered.
     */
    azureADDeviceId?: NullableOption<string>;
    // Date and time of creation
    createdDateTime?: string;
    // The device manufacturer for the current app registration
    deviceManufacturer?: NullableOption<string>;
    // The device model for the current app registration
    deviceModel?: NullableOption<string>;
    // Host device name
    deviceName?: NullableOption<string>;
    /**
     * App management SDK generated tag, which helps relate apps hosted on the same device. Not guaranteed to relate apps in
     * all conditions.
     */
    deviceTag?: NullableOption<string>;
    // Host device type
    deviceType?: NullableOption<string>;
    // Zero or more reasons an app registration is flagged. E.g. app running on rooted device
    flaggedReasons?: ManagedAppFlaggedReason[];
    // Date and time of last the app synced with management service.
    lastSyncDateTime?: string;
    // The Managed Device identifier of the host device. Value could be empty even when the host device is managed.
    managedDeviceId?: NullableOption<string>;
    // App management SDK version
    managementSdkVersion?: NullableOption<string>;
    // Operating System version
    platformVersion?: NullableOption<string>;
    // The user Id to who this app registration belongs.
    userId?: NullableOption<string>;
    // Version of the entity.
    version?: NullableOption<string>;
    // Zero or more policys already applied on the registered app when it last synchronized with managment service.
    appliedPolicies?: NullableOption<ManagedAppPolicy[]>;
    // Zero or more policies admin intended for the app as of now.
    intendedPolicies?: NullableOption<ManagedAppPolicy[]>;
    // Zero or more long running operations triggered on the app registration.
    operations?: NullableOption<ManagedAppOperation[]>;
}
export interface WindowsInformationProtectionDeviceRegistration extends Entity {
    // Device Mac address.
    deviceMacAddress?: NullableOption<string>;
    // Device name.
    deviceName?: NullableOption<string>;
    // Device identifier for this device registration record.
    deviceRegistrationId?: NullableOption<string>;
    // Device type, for example, Windows laptop VS Windows phone.
    deviceType?: NullableOption<string>;
    // Last checkin time of the device.
    lastCheckInDateTime?: string;
    // UserId associated with this device registration record.
    userId?: NullableOption<string>;
}
export interface DeviceManagementTroubleshootingEvent extends Entity {
    // A set of string key and string value pairs which provides additional information on the Troubleshooting event
    additionalInformation?: NullableOption<KeyValuePair[]>;
    // Id used for tracing the failure in the service.
    correlationId?: NullableOption<string>;
    // Time when the event occurred .
    eventDateTime?: string;
    // Event Name corresponding to the Troubleshooting Event. It is an Optional field
    eventName?: NullableOption<string>;
    // Object containing detailed information about the error and its remediation.
    troubleshootingErrorDetails?: NullableOption<DeviceManagementTroubleshootingErrorDetails>;
}
export interface MobileAppIntentAndState extends Entity {
    // Device identifier created or collected by Intune.
    managedDeviceIdentifier?: NullableOption<string>;
    // The list of payload intents and states for the tenant.
    mobileAppList?: NullableOption<MobileAppIntentAndStateDetail[]>;
    // Identifier for the user that tried to enroll the device.
    userId?: NullableOption<string>;
}
export interface MobileAppTroubleshootingEvent extends DeviceManagementTroubleshootingEvent {
    // Intune application identifier.
    applicationId?: NullableOption<string>;
    // Intune Mobile Application Troubleshooting History Item
    history?: NullableOption<MobileAppTroubleshootingHistoryItem[]>;
    // Device identifier created or collected by Intune.
    managedDeviceIdentifier?: NullableOption<string>;
    // Identifier for the user that tried to enroll the device.
    userId?: NullableOption<string>;
    // The collection property of AppLogUploadRequest.
    appLogCollectionRequests?: NullableOption<AppLogCollectionRequest[]>;
}
export interface Notification extends Entity {
    /**
     * Sets how long (in seconds) this notification content will stay in each platform’s notification viewer. For example,
     * when the notification is delivered to a Windows device, the value of this property is passed on to
     * ToastNotification.ExpirationTime, which determines how long the toast notification will stay in the user’s Windows
     * Action Center.
     */
    displayTimeToLive?: NullableOption<number>;
    /**
     * Sets a UTC expiration date and time on a user notification using ISO 8601 format (for example, midnight UTC on Jan 1,
     * 2019 would look like this: '2019-01-01T00:00:00Z'). When time is up, the notification is removed from the Microsoft
     * Graph notification feed store completely and is no longer part of notification history. Max value is 30 days.
     */
    expirationDateTime?: NullableOption<string>;
    /**
     * The name of the group that this notification belongs to. It is set by the developer for the purpose of grouping
     * notifications together.
     */
    groupName?: NullableOption<string>;
    /**
     * This is the data content of a raw or visual user notification that will be delivered to and consumed by the app client
     * receiving this notification.
     */
    payload?: PayloadTypes;
    /**
     * Indicates the priority of a raw user notification. Visual notifications are sent with high priority by default. Valid
     * values are None, High and Low.
     */
    priority?: NullableOption<Priority>;
    /**
     * Represents the host name of the app to which the calling service wants to post the notification, for the given user. If
     * targeting web endpoints (see targetPolicy.platformTypes), ensure that targetHostName is the same as the name used when
     * creating a subscription on the client side within the application JSON property.
     */
    targetHostName?: string;
    /**
     * Target policy object handles notification delivery policy for endpoint types that should be targeted (Windows, iOS,
     * Android and WebPush) for the given user.
     */
    targetPolicy?: NullableOption<TargetPolicyEndpoints>;
}
// tslint:disable-next-line: no-empty-interface
export interface PlannerDelta extends Entity {}
export interface PlannerUser extends PlannerDelta {
    // A collection containing the references to the plans that the user has marked as favorites.
    favoritePlanReferences?: NullableOption<PlannerFavoritePlanReferenceCollection>;
    /**
     * A collection containing references to the plans that were viewed recently by the user in apps that support recent
     * plans.
     */
    recentPlanReferences?: NullableOption<PlannerRecentPlanReferenceCollection>;
    all?: NullableOption<PlannerDelta[]>;
    // Read-only. Nullable. Returns the plannerPlans that the user marked as favorites.
    favoritePlans?: NullableOption<PlannerPlan[]>;
    // Read-only. Nullable. Returns the plannerTasks assigned to the user.
    plans?: NullableOption<PlannerPlan[]>;
    /**
     * Read-only. Nullable. Returns the plannerPlans that have been recently viewed by the user in apps that support recent
     * plans.
     */
    recentPlans?: NullableOption<PlannerPlan[]>;
    // Read-only. Nullable. Returns the plannerPlans contained by the plannerRosters the user is a member.
    rosterPlans?: NullableOption<PlannerPlan[]>;
    // Read-only. Nullable. Returns the plannerTasks assigned to the user.
    tasks?: NullableOption<PlannerTask[]>;
}
export interface OfficeGraphInsights extends Entity {
    // Access this property from the derived type itemInsights.
    shared?: NullableOption<SharedInsight[]>;
    // Access this property from the derived type itemInsights.
    trending?: NullableOption<Trending[]>;
    // Access this property from the derived type itemInsights.
    used?: NullableOption<UsedInsight[]>;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface ItemInsights extends OfficeGraphInsights {}
export interface UserSettings extends Entity {
    /**
     * Reflects the Office Delve organization level setting. When set to true, the organization doesn't have access to Office
     * Delve. This setting is read-only and can only be changed by administrators in the SharePoint admin center.
     */
    contributionToContentDiscoveryAsOrganizationDisabled?: boolean;
    // When set to true, documents in the user's Office Delve are disabled. Users can control this setting in Office Delve.
    contributionToContentDiscoveryDisabled?: boolean;
    /**
     * The user's settings for the visibility of meeting hour insights, and insights derived between a user and other items in
     * Microsoft 365, such as documents or sites. Get userInsightsSettings through this navigation property.
     */
    itemInsights?: NullableOption<UserInsightsSettings>;
    // The user's preferences for languages, regional locale and date/time formatting.
    regionalAndLanguageSettings?: NullableOption<RegionalAndLanguageSettings>;
    // The shift preferences for the user.
    shiftPreferences?: NullableOption<ShiftPreferences>;
}
export interface Onenote extends Entity {
    // The collection of OneNote notebooks that are owned by the user or group. Read-only. Nullable.
    notebooks?: NullableOption<Notebook[]>;
    /**
     * 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.
     */
    operations?: NullableOption<OnenoteOperation[]>;
    // The pages in all OneNote notebooks that are owned by the user or group. Read-only. Nullable.
    pages?: NullableOption<OnenotePage[]>;
    /**
     * 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.
     */
    resources?: NullableOption<OnenoteResource[]>;
    // The section groups in all OneNote notebooks that are owned by the user or group. Read-only. Nullable.
    sectionGroups?: NullableOption<SectionGroup[]>;
    // The sections in all OneNote notebooks that are owned by the user or group. Read-only. Nullable.
    sections?: NullableOption<OnenoteSection[]>;
}
export interface ProfilePhoto extends Entity {
    // The height of the photo. Read-only.
    height?: NullableOption<number>;
    // The width of the photo. Read-only.
    width?: NullableOption<number>;
}
export interface Profile extends Entity {
    account?: NullableOption<UserAccountInformation[]>;
    // Represents details of addresses associated with the user.
    addresses?: NullableOption<ItemAddress[]>;
    // Represents the details of meaningful dates associated with a person.
    anniversaries?: NullableOption<PersonAnnualEvent[]>;
    // Represents the details of awards or honors associated with a person.
    awards?: NullableOption<PersonAward[]>;
    // Represents the details of certifications associated with a person.
    certifications?: NullableOption<PersonCertification[]>;
    /**
     * Represents data that a user has supplied related to undergraduate, graduate, postgraduate or other educational
     * activities.
     */
    educationalActivities?: NullableOption<EducationalActivity[]>;
    // Represents detailed information about email addresses associated with the user.
    emails?: NullableOption<ItemEmail[]>;
    // Provides detailed information about interests the user has associated with themselves in various services.
    interests?: NullableOption<PersonInterest[]>;
    // Represents detailed information about languages that a user has added to their profile.
    languages?: NullableOption<LanguageProficiency[]>;
    // Represents the names a user has added to their profile.
    names?: NullableOption<PersonName[]>;
    // Represents notes that a user has added to their profile.
    notes?: NullableOption<PersonAnnotation[]>;
    // Represents patents that a user has added to their profile.
    patents?: NullableOption<ItemPatent[]>;
    // Represents detailed information about phone numbers associated with a user in various services.
    phones?: NullableOption<ItemPhone[]>;
    // Represents detailed information about work positions associated with a user's profile.
    positions?: NullableOption<WorkPosition[]>;
    // Represents detailed information about projects associated with a user.
    projects?: NullableOption<ProjectParticipation[]>;
    // Represents details of any publications a user has added to their profile.
    publications?: NullableOption<ItemPublication[]>;
    // Represents detailed information about skills associated with a user in various services.
    skills?: NullableOption<SkillProficiency[]>;
    // Represents web accounts the user has indicated they use or has added to their user profile.
    webAccounts?: NullableOption<WebAccount[]>;
    // Represents detailed information about websites associated with a user in various services.
    websites?: NullableOption<PersonWebsite[]>;
}
export interface UserActivity extends Entity {
    /**
     * 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.
     */
    activationUrl?: string;
    /**
     * 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.
     */
    activitySourceHost?: string;
    // Required. The unique activity ID in the context of the app - supplied by caller and immutable thereafter.
    appActivityId?: string;
    /**
     * 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.
     */
    appDisplayName?: NullableOption<string>;
    // Optional. A custom piece of data - JSON-LD extensible description of content according to schema.org syntax.
    contentInfo?: NullableOption<any>;
    /**
     * 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).
     */
    contentUrl?: NullableOption<string>;
    // Set by the server. DateTime in UTC when the object was created on the server.
    createdDateTime?: NullableOption<string>;
    // Set by the server. DateTime in UTC when the object expired on the server.
    expirationDateTime?: NullableOption<string>;
    // Optional. URL used to launch the activity in a web-based app, if available.
    fallbackUrl?: NullableOption<string>;
    // Set by the server. DateTime in UTC when the object was modified on the server.
    lastModifiedDateTime?: NullableOption<string>;
    // Set by the server. A status code used to identify valid objects. Values: active, updated, deleted, ignored.
    status?: NullableOption<Status>;
    /**
     * 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.
     */
    userTimezone?: NullableOption<string>;
    // Required. The object containing information to render the activity in the UX.
    visualElements?: VisualInfo;
    // Optional. NavigationProperty/Containment; navigation property to the activity's historyItems.
    historyItems?: NullableOption<ActivityHistoryItem[]>;
}
export interface Device extends DirectoryObject {
    // true if the account is enabled; otherwise, false. Default is true. Supports $filter (eq, ne, NOT, in).
    accountEnabled?: NullableOption<boolean>;
    // For internal use only. Not nullable. Supports $filter (eq, NOT, ge, le).
    alternativeSecurityIds?: AlternativeSecurityId[];
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only. Supports $filter (eq, ne, NOT, ge, le) and $orderBy.
     */
    approximateLastSignInDateTime?: NullableOption<string>;
    /**
     * The timestamp when the device is no longer deemed compliant. 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 is 2014-01-01T00:00:00Z.
     * Read-only.
     */
    complianceExpirationDateTime?: NullableOption<string>;
    // User-defined property set by Intune to automatically add devices to groups and simplify managing devices.
    deviceCategory?: NullableOption<string>;
    /**
     * Identifier set by Azure Device Registration Service at the time of registration. Supports $filter (eq, ne, NOT,
     * startsWith).
     */
    deviceId?: NullableOption<string>;
    // For internal use only. Set to null.
    deviceMetadata?: NullableOption<string>;
    // Ownership of the device. This property is set by Intune. Possible values are: unknown, company, personal.
    deviceOwnership?: NullableOption<string>;
    // For internal use only.
    deviceVersion?: NullableOption<number>;
    /**
     * The display name for the device. Required. Supports $filter (eq, ne, NOT, ge, le, in, startsWith), $search, and
     * $orderBy.
     */
    displayName?: NullableOption<string>;
    // The on-premises domain name of Hybrid Azure AD joined devices. This property is set by Intune.
    domainName?: NullableOption<string>;
    /**
     * Enrollment profile applied to the device. For example, Apple Device Enrollment Profile, Device enrollment - Corporate
     * device identifiers, or Windows Autopilot profile name. This property is set by Intune.
     */
    enrollmentProfileName?: NullableOption<string>;
    /**
     * Enrollment type of the device. This property is set by Intune. Possible values are: unknown, userEnrollment,
     * deviceEnrollmentManager, appleBulkWithUser, appleBulkWithoutUser, windowsAzureADJoin, windowsBulkUserless,
     * windowsAutoEnrollment, windowsBulkAzureDomainJoin, windowsCoManagement.
     */
    enrollmentType?: NullableOption<string>;
    extensionAttributes?: NullableOption<OnPremisesExtensionAttributes>;
    // List of hostNames for the device.
    hostnames?: NullableOption<string[]>;
    /**
     * true if the device complies with Mobile Device Management (MDM) policies; otherwise, false. Read-only. This can only be
     * updated by Intune for any device OS type or by an approved MDM app for Windows OS devices. Supports $filter (eq, ne,
     * NOT).
     */
    isCompliant?: NullableOption<boolean>;
    /**
     * true if the device is managed by a Mobile Device Management (MDM) app; otherwise, false. This can only be updated by
     * Intune for any device OS type or by an approved MDM app for Windows OS devices. Supports $filter (eq, ne, NOT).
     */
    isManaged?: NullableOption<boolean>;
    // true if device is rooted; false if device is jail-broken. This can only be updated by Intune.
    isRooted?: NullableOption<boolean>;
    /**
     * Management channel of the device. This property is set by Intune. Possible values are: eas, mdm, easMdm, intuneClient,
     * easIntuneClient, configurationManagerClient, configurationManagerClientMdm, configurationManagerClientMdmEas, unknown,
     * jamf, googleCloudDevicePolicyController.
     */
    managementType?: NullableOption<string>;
    /**
     * The last time at which the object 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 is
     * 2014-01-01T00:00:00Z Read-only. Supports $filter (eq, ne, NOT, ge, le, in).
     */
    onPremisesLastSyncDateTime?: NullableOption<string>;
    /**
     * 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. Supports $filter (eq, ne, NOT, in).
     */
    onPremisesSyncEnabled?: NullableOption<boolean>;
    // The type of operating system on the device. Required. Supports $filter (eq, ne, NOT, ge, le, startsWith).
    operatingSystem?: NullableOption<string>;
    // Operating system version of the device. Required. Supports $filter (eq, ne, NOT, ge, le, startsWith).
    operatingSystemVersion?: NullableOption<string>;
    // For internal use only. Not nullable. Supports $filter (eq, NOT, ge, le, startsWith).
    physicalIds?: string[];
    // The profile type of the device. Possible values: RegisteredDevice (default), SecureVM, Printer, Shared, IoT.
    profileType?: NullableOption<string>;
    /**
     * Date and time of when the device was registered. 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    registrationDateTime?: NullableOption<string>;
    // List of labels applied to the device by the system.
    systemLabels?: string[];
    /**
     * Type of trust for the joined device. Read-only. Possible values: Workplace (indicates bring your own personal devices),
     * AzureAd (Cloud only joined devices), ServerAd (on-premises domain joined devices joined to Azure AD). For more details,
     * see Introduction to device management in Azure Active Directory
     */
    trustType?: NullableOption<string>;
    // Form factor of device. Only returned if user signs in with a Microsoft account as part of Project Rome.
    kind?: NullableOption<string>;
    // Manufacturer of the device. Read-only.
    manufacturer?: NullableOption<string>;
    // Model of the device. Read-only.
    model?: NullableOption<string>;
    // Friendly name of a device. Only returned if user signs in with a Microsoft account as part of Project Rome.
    name?: NullableOption<string>;
    /**
     * Platform of device. Only returned if user signs in with a Microsoft account as part of Project Rome. Only returned if
     * user signs in with a Microsoft account as part of Project Rome.
     */
    platform?: NullableOption<string>;
    // Device is online or offline. Only returned if user signs in with a Microsoft account as part of Project Rome.
    status?: NullableOption<string>;
    // Represents the usage rights a device has been granted.
    usageRights?: NullableOption<UsageRight[]>;
    // Groups that this device is a member of. Read-only. Nullable. Supports $expand.
    memberOf?: NullableOption<DirectoryObject[]>;
    /**
     * The user that cloud joined the device or registered their personal device. The registered owner is set at the time of
     * registration. Currently, there can be only one owner. Read-only. Nullable. Supports $expand.
     */
    registeredOwners?: NullableOption<DirectoryObject[]>;
    /**
     * Collection of registered users of the device. For cloud joined devices and registered personal devices, registered
     * users are set to the same value as registered owners at the time of registration. Read-only. Nullable. Supports
     * $expand.
     */
    registeredUsers?: NullableOption<DirectoryObject[]>;
    // Groups that this device is a member of. This operation is transitive. Supports $expand.
    transitiveMemberOf?: NullableOption<DirectoryObject[]>;
    // The collection of open extensions defined for the device. Read-only. Nullable.
    extensions?: NullableOption<Extension[]>;
    // Set of commands sent to this device.
    commands?: NullableOption<Command[]>;
}
export interface OnlineMeeting extends Entity {
    accessLevel?: NullableOption<AccessLevel>;
    // Indicates whether attendees can turn on their camera.
    allowAttendeeToEnableCamera?: NullableOption<boolean>;
    // Indicates whether attendees can turn on their microphone.
    allowAttendeeToEnableMic?: NullableOption<boolean>;
    /**
     * Specifies who can be a presenter in a meeting. Possible values are everyone, organization, roleIsPresenter, organizer,
     * and unknownFutureValue.
     */
    allowedPresenters?: NullableOption<OnlineMeetingPresenters>;
    // Specifies the mode of meeting chat.
    allowMeetingChat?: NullableOption<MeetingChatMode>;
    // Indicates if Teams reactions are enabled for the meeting.
    allowTeamworkReactions?: NullableOption<boolean>;
    // The content stream of the alternative recording of a live event. Read-only.
    alternativeRecording?: NullableOption<any>;
    // The content stream of the attendee report of a live event. Read-only.
    attendeeReport?: NullableOption<any>;
    // The phone access (dial-in) information for an online meeting. Read-only.
    audioConferencing?: NullableOption<AudioConferencing>;
    // Settings related to a live event
    broadcastSettings?: NullableOption<BroadcastMeetingSettings>;
    canceledDateTime?: NullableOption<string>;
    capabilities?: NullableOption<MeetingCapabilities[]>;
    // The chat information associated with this online meeting.
    chatInfo?: NullableOption<ChatInfo>;
    // The meeting creation time in UTC. Read-only.
    creationDateTime?: NullableOption<string>;
    // The meeting end time in UTC.
    endDateTime?: NullableOption<string>;
    entryExitAnnouncement?: NullableOption<boolean>;
    expirationDateTime?: NullableOption<string>;
    // The external ID. A custom ID. Optional.
    externalId?: NullableOption<string>;
    // Indicates whether this is a live event.
    isBroadcast?: NullableOption<boolean>;
    isCancelled?: NullableOption<boolean>;
    // Indicates whether to announce when callers join or leave.
    isEntryExitAnnounced?: NullableOption<boolean>;
    // The join information in the language and locale variant specified in 'Accept-Language' request HTTP header. Read-only
    joinInformation?: NullableOption<ItemBody>;
    joinUrl?: NullableOption<string>;
    // Specifies which participants can bypass the meeting lobby.
    lobbyBypassSettings?: NullableOption<LobbyBypassSettings>;
    // The participants associated with the online meeting. This includes the organizer and the attendees.
    participants?: NullableOption<MeetingParticipants>;
    // The content stream of the recording of a live event. Read-only.
    recording?: NullableOption<any>;
    // The meeting start time in UTC.
    startDateTime?: NullableOption<string>;
    // The subject of the online meeting.
    subject?: NullableOption<string>;
    // The video teleconferencing ID. Read-only.
    videoTeleconferenceId?: NullableOption<string>;
    meetingAttendanceReport?: NullableOption<MeetingAttendanceReport>;
}
export interface Presence extends Entity {
    /**
     * The supplemental information to a user's availability. Possible values are Available, Away, BeRightBack, Busy,
     * DoNotDisturb, InACall, InAConferenceCall, Inactive,InAMeeting, Offline, OffWork,OutOfOffice,
     * PresenceUnknown,Presenting, UrgentInterruptionsOnly.
     */
    activity?: NullableOption<string>;
    /**
     * The base presence information for a user. Possible values are Available, AvailableIdle, Away, BeRightBack, Busy,
     * BusyIdle, DoNotDisturb, Offline, PresenceUnknown
     */
    availability?: NullableOption<string>;
    // The out of office settings for a user.
    outOfOfficeSettings?: NullableOption<OutOfOfficeSettings>;
}
export interface Authentication extends Entity {
    emailMethods?: NullableOption<EmailAuthenticationMethod[]>;
    fido2Methods?: NullableOption<Fido2AuthenticationMethod[]>;
    methods?: NullableOption<AuthenticationMethod[]>;
    microsoftAuthenticatorMethods?: NullableOption<MicrosoftAuthenticatorAuthenticationMethod[]>;
    operations?: NullableOption<LongRunningOperation[]>;
    passwordlessMicrosoftAuthenticatorMethods?: NullableOption<PasswordlessMicrosoftAuthenticatorAuthenticationMethod[]>;
    passwordMethods?: NullableOption<PasswordAuthenticationMethod[]>;
    phoneMethods?: NullableOption<PhoneAuthenticationMethod[]>;
    temporaryAccessPassMethods?: NullableOption<TemporaryAccessPassAuthenticationMethod[]>;
    windowsHelloForBusinessMethods?: NullableOption<WindowsHelloForBusinessAuthenticationMethod[]>;
}
export interface Chat extends Entity {
    // Specifies the type of chat. Possible values are:group, oneOnOne and meeting.
    chatType?: ChatType;
    // Date and time at which the chat was created. Read-only.
    createdDateTime?: NullableOption<string>;
    // Date and time at which the chat was renamed or list of members were last changed. Read-only.
    lastUpdatedDateTime?: NullableOption<string>;
    // (Optional) Subject or topic for the chat. Only available for group chats.
    topic?: NullableOption<string>;
    /**
     * Represents caller-specific information about the chat, such as last message read date and time. This property is
     * populated only when the request is made in a delegated context.
     */
    viewpoint?: NullableOption<ChatViewpoint>;
    /**
     * A hyperlink that will go to the chat in Microsoft Teams. This URL should be treated as an opaque blob, and not parsed.
     * Read-only.
     */
    webUrl?: NullableOption<string>;
    // A collection of all the apps in the chat. Nullable.
    installedApps?: NullableOption<TeamsAppInstallation[]>;
    /**
     * Preview of the last message sent in the chat. Null if no messages have been sent in the chat. Currently, only the list
     * chats operation supports this property.
     */
    lastMessagePreview?: NullableOption<ChatMessageInfo>;
    // A collection of all the members in the chat. Nullable.
    members?: NullableOption<ConversationMember[]>;
    // A collection of all the messages in the chat. Nullable.
    messages?: NullableOption<ChatMessage[]>;
    // A collection of all the Teams async operations that ran or are running on the chat. Nullable.
    operations?: NullableOption<TeamsAsyncOperation[]>;
    // A collection of permissions granted to apps for the chat.
    permissionGrants?: NullableOption<ResourceSpecificPermissionGrant[]>;
    tabs?: NullableOption<TeamsTab[]>;
}
export interface Team extends Entity {
    /**
     * 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.
     */
    classification?: NullableOption<string>;
    // Timestamp at which the team was created.
    createdDateTime?: NullableOption<string>;
    // An optional description for the team. Maximum length: 1024 characters.
    description?: NullableOption<string>;
    // Settings to configure team discoverability by others.
    discoverySettings?: NullableOption<TeamDiscoverySettings>;
    // The name of the team.
    displayName?: NullableOption<string>;
    // Settings to configure use of Giphy, memes, and stickers in the team.
    funSettings?: NullableOption<TeamFunSettings>;
    // Settings to configure whether guests can create, update, or delete channels in the team.
    guestSettings?: NullableOption<TeamGuestSettings>;
    // A unique ID for the team that has been used in a few places such as the audit log/Office 365 Management Activity API.
    internalId?: NullableOption<string>;
    // Whether this team is in read-only mode.
    isArchived?: NullableOption<boolean>;
    /**
     * If set to true, the team is currently in the owner-only team membership state and not accessible by other team members,
     * such as students.
     */
    isMembershipLimitedToOwners?: NullableOption<boolean>;
    /**
     * Settings to configure whether members can perform certain actions, for example, create channels and add bots, in the
     * team.
     */
    memberSettings?: NullableOption<TeamMemberSettings>;
    // Settings to configure messaging and mentions in the team.
    messagingSettings?: NullableOption<TeamMessagingSettings>;
    /**
     * Optional. Indicates whether the team is intended for a particular use case. Each team specialization has access to
     * unique behaviors and experiences targeted to its use case.
     */
    specialization?: NullableOption<TeamSpecialization>;
    // The visibility of the group and team. Defaults to Public.
    visibility?: NullableOption<TeamVisibilityType>;
    /**
     * 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.
     */
    webUrl?: NullableOption<string>;
    // The collection of channels &amp; messages associated with the team.
    channels?: NullableOption<Channel[]>;
    group?: NullableOption<Group>;
    // The apps installed in this team.
    installedApps?: NullableOption<TeamsAppInstallation[]>;
    // Members and owners of the team.
    members?: NullableOption<ConversationMember[]>;
    // The async operations that ran or are running on this team.
    operations?: NullableOption<TeamsAsyncOperation[]>;
    /**
     * The list of this team's owners. Currently, when creating a team using application permissions, exactly one owner must
     * be specified. When using user delegated permissions, no owner can be specified (the current user is the owner). Owner
     * must be specified as an object ID (GUID), not a UPN.
     */
    owners?: NullableOption<User[]>;
    // A collection of permissions granted to apps to access the team.
    permissionGrants?: NullableOption<ResourceSpecificPermissionGrant[]>;
    // The team photo.
    photo?: NullableOption<ProfilePhoto>;
    // The general channel for the team.
    primaryChannel?: NullableOption<Channel>;
    // The tags associated with the team.
    tags?: NullableOption<TeamworkTag[]>;
    // The template this team was created from. See available templates.
    template?: NullableOption<TeamsTemplate>;
    // The schedule of shifts for this team.
    schedule?: NullableOption<Schedule>;
}
export interface UserTeamwork extends Entity {
    // The apps installed in the personal scope of this user.
    installedApps?: NullableOption<UserScopeTeamsAppInstallation[]>;
}
export interface Todo extends Entity {
    // The task lists in the users mailbox.
    lists?: NullableOption<TodoTaskList[]>;
}
// tslint:disable-next-line: interface-name
export interface Invitation extends Entity {
    // The display name of the user being invited.
    invitedUserDisplayName?: NullableOption<string>;
    /**
     * The email address of the user being invited. Required. The following special characters are not permitted in the email
     * address:Tilde (~)Exclamation point (!)At sign (@)Number sign (#)Dollar sign ($)Percent (%)Circumflex (^)Ampersand
     * (&amp;)Asterisk (*)Parentheses (( ))Hyphen (-)Plus sign (+)Equal sign (=)Brackets ([ ])Braces ({ })Backslash (/)Slash
     * mark (/)Pipe (`
     */
    invitedUserEmailAddress?: string;
    /**
     * Additional configuration for the message being sent to the invited user, including customizing message text, language
     * and cc recipient list.
     */
    invitedUserMessageInfo?: NullableOption<InvitedUserMessageInfo>;
    /**
     * The userType of the user being invited. By default, this is Guest. You can invite as Member if you're are company
     * administrator.
     */
    invitedUserType?: NullableOption<string>;
    // The URL the user can use to redeem their invitation. Read-only.
    inviteRedeemUrl?: NullableOption<string>;
    // The URL user should be redirected to once the invitation is redeemed. Required.
    inviteRedirectUrl?: string;
    resetRedemption?: NullableOption<boolean>;
    // Indicates whether an email should be sent to the user being invited or not. The default is false.
    sendInvitationMessage?: NullableOption<boolean>;
    // The status of the invitation. Possible values: PendingAcceptance, Completed, InProgress, and Error
    status?: NullableOption<string>;
    // The user created as part of the invitation creation. Read-Only
    invitedUser?: NullableOption<User>;
}
export interface ActivityStatistics extends Entity {
    // The type of activity for which statistics are returned. The possible values are: call, chat, email, focus, and meeting.
    activity?: NullableOption<AnalyticsActivityType>;
    // Total hours spent on the activity. The value is represented in ISO 8601 format for durations.
    duration?: string;
    /**
     * Date when the activity ended, expressed in ISO 8601 format for calendar dates. For example, the property value could be
     * '2019-07-03' that follows the YYYY-MM-DD format.
     */
    endDate?: string;
    /**
     * Date when the activity started, expressed in ISO 8601 format for calendar dates. For example, the property value could
     * be '2019-07-04' that follows the YYYY-MM-DD format.
     */
    startDate?: string;
    /**
     * The time zone that the user sets in Microsoft Outlook is used for the computation. For example, the property value
     * could be 'Pacific Standard Time.'
     */
    timeZoneUsed?: NullableOption<string>;
}
export interface CallActivityStatistics extends ActivityStatistics {
    /**
     * Time spent on calls outside of working hours, which is based on the user's Outlook calendar setting for work hours. The
     * value is represented in ISO 8601 format for durations.
     */
    afterHours?: string;
}
export interface ChatActivityStatistics extends ActivityStatistics {
    /**
     * Time spent on chats outside of working hours, which is based on the user's Microsoft Outlook calendar setting for work
     * hours. The value is represented in ISO 8601 format for durations.
     */
    afterHours?: string;
}
export interface EmailActivityStatistics extends ActivityStatistics {
    /**
     * Total hours spent on email outside of working hours, which is based on the user's Outlook calendar setting for work
     * hours. The value is represented in ISO 8601 format for durations.
     */
    afterHours?: string;
    // Total hours spent reading email. The value is represented in ISO 8601 format for durations.
    readEmail?: string;
    // Total hours spent writing and sending email. The value is represented in ISO 8601 format for durations.
    sentEmail?: string;
}
// tslint:disable-next-line: no-empty-interface
export interface FocusActivityStatistics extends ActivityStatistics {}
export interface MeetingActivityStatistics extends ActivityStatistics {
    /**
     * Time spent on meetings outside of working hours, which is based on the user's Outlook calendar setting for work hours.
     * The value is represented in ISO 8601 format for durations.
     */
    afterHours?: string;
    /**
     * Time spent in conflicting meetings (meetings that overlap with other meetings that the person accepted and where the
     * person’s status is set to Busy). The value is represented in ISO 8601 format for durations.
     */
    conflicting?: string;
    // Time spent in long meetings (more than an hour in duration). The value is represented in ISO 8601 format for durations.
    long?: string;
    /**
     * Time spent in meetings where the person was multitasking (read/sent more than a minimum number of emails and/or sent
     * more than a minimum number of messages in Teams or in Skype for Business). The value is represented in ISO 8601 format
     * for durations.
     */
    multitasking?: string;
    // Time spent in meetings organized by the user. The value is represented in ISO 8601 format for durations.
    organized?: string;
    // Time spent on recurring meetings. The value is represented in ISO 8601 format for durations.
    recurring?: string;
}
export interface Application extends DirectoryObject {
    // Specifies settings for an application that implements a web API.
    api?: NullableOption<ApiApplication>;
    // The unique identifier for the application that is assigned by Azure AD. Not nullable. Read-only.
    appId?: NullableOption<string>;
    /**
     * The collection of roles assigned to the application. With app role assignments, these roles can be assigned to users,
     * groups, or service principals associated with other applications. Not nullable.
     */
    appRoles?: AppRole[];
    /**
     * The date and time the application was registered. 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 is 2014-01-01T00:00:00Z. Read-only.
     * Supports $filter (eq, ne, NOT, ge, le, in) and $orderBy.
     */
    createdDateTime?: NullableOption<string>;
    defaultRedirectUri?: NullableOption<string>;
    /**
     * An optional description of the application. Returned by default. Supports $filter (eq, ne, NOT, ge, le, startsWith) and
     * $search.
     */
    description?: NullableOption<string>;
    /**
     * Specifies whether Microsoft has disabled the registered application. Possible values are: null (default value),
     * NotDisabled, and DisabledDueToViolationOfServicesAgreement (reasons may include suspicious, abusive, or malicious
     * activity, or a violation of the Microsoft Services Agreement). Supports $filter (eq, ne, NOT).
     */
    disabledByMicrosoftStatus?: NullableOption<string>;
    // The display name for the application. Supports $filter (eq, ne, NOT, ge, le, in, startsWith), $search, and $orderBy.
    displayName?: NullableOption<string>;
    /**
     * Configures the groups claim issued in a user or OAuth 2.0 access token that the application expects. To set this
     * attribute, use one of the following string values: None, SecurityGroup (for security groups and Azure AD roles), All
     * (this gets all security groups, distribution groups, and Azure AD directory roles that the signed-in user is a member
     * of).
     */
    groupMembershipClaims?: NullableOption<string>;
    /**
     * The URIs that identify the application within its Azure AD tenant, or within a verified custom domain if the
     * application is multi-tenant. For more information, see Application Objects and Service Principal Objects. The any
     * operator is required for filter expressions on multi-valued properties. Not nullable. Supports $filter (eq, ne, ge, le,
     * startsWith).
     */
    identifierUris?: string[];
    /**
     * Basic profile information of the application, such as it's marketing, support, terms of service, and privacy statement
     * URLs. The terms of service and privacy statement are surfaced to users through the user consent experience. For more
     * information, see How to: Add Terms of service and privacy statement for registered Azure AD apps. Supports $filter (eq,
     * ne, NOT, ge, le).
     */
    info?: NullableOption<InformationalUrl>;
    // Specifies whether this application supports device authentication without a user. The default is false.
    isDeviceOnlyAuthSupported?: NullableOption<boolean>;
    /**
     * Specifies the fallback application type as public client, such as an installed application running on a mobile device.
     * The default value is false which means the fallback application type is confidential client such as a web app. There
     * are certain scenarios where Azure AD cannot determine the client application type. For example, the ROPC flow where the
     * application is configured without specifying a redirect URI. In those cases Azure AD interprets the application type
     * based on the value of this property.
     */
    isFallbackPublicClient?: NullableOption<boolean>;
    // The collection of key credentials associated with the application. Not nullable. Supports $filter (eq, NOT, ge, le).
    keyCredentials?: KeyCredential[];
    // The main logo for the application. Not nullable.
    logo?: any;
    // Notes relevant for the management of the application.
    notes?: NullableOption<string>;
    /**
     * Application developers can configure optional claims in their Azure AD applications to specify the claims that are sent
     * to their application by the Microsoft security token service. For more information, see How to: Provide optional claims
     * to your app.
     */
    optionalClaims?: NullableOption<OptionalClaims>;
    // Specifies parental control settings for an application.
    parentalControlSettings?: NullableOption<ParentalControlSettings>;
    // The collection of password credentials associated with the application. Not nullable.
    passwordCredentials?: PasswordCredential[];
    // Specifies settings for installed clients such as desktop or mobile devices.
    publicClient?: NullableOption<PublicClientApplication>;
    // The verified publisher domain for the application. Read-only. Supports $filter (eq, ne, ge, le, startsWith).
    publisherDomain?: NullableOption<string>;
    /**
     * Specifies the resources that the application needs to access. This property also specifies the set of OAuth permission
     * scopes and application roles that it needs for each of those resources. This configuration of access to the required
     * resources drives the consent experience. Not nullable. Supports $filter (eq, NOT, ge, le).
     */
    requiredResourceAccess?: RequiredResourceAccess[];
    /**
     * Specifies the Microsoft accounts that are supported for the current application. Supported values are: AzureADMyOrg,
     * AzureADMultipleOrgs, AzureADandPersonalMicrosoftAccount, PersonalMicrosoftAccount. See more in the table below.
     * Supports $filter (eq, ne, NOT).
     */
    signInAudience?: NullableOption<string>;
    /**
     * Specifies settings for a single-page application, including sign out URLs and redirect URIs for authorization codes and
     * access tokens.
     */
    spa?: NullableOption<SpaApplication>;
    /**
     * Custom strings that can be used to categorize and identify the application. Not nullable.Supports $filter (eq, NOT, ge,
     * le, startsWith).
     */
    tags?: string[];
    /**
     * Specifies the keyId of a public key from the keyCredentials collection. When configured, Azure AD encrypts all the
     * tokens it emits by using the key this property points to. The application code that receives the encrypted token must
     * use the matching private key to decrypt the token before it can be used for the signed-in user.
     */
    tokenEncryptionKeyId?: NullableOption<string>;
    // The unique identifier that can be assigned to an application as an alternative identifier. Immutable. Read-only.
    uniqueName?: NullableOption<string>;
    // Specifies the verified publisher of the application.
    verifiedPublisher?: NullableOption<VerifiedPublisher>;
    // Specifies settings for a web application.
    web?: NullableOption<WebApplication>;
    /**
     * Represents the set of properties required for configuring Application Proxy for this application. Configuring these
     * properties allows you to publish your on-premises application for secure remote access.
     */
    onPremisesPublishing?: NullableOption<OnPremisesPublishing>;
    // The appManagementPolicy applied to this application.
    appManagementPolicies?: NullableOption<AppManagementPolicy[]>;
    // Read-only.
    createdOnBehalfOf?: NullableOption<DirectoryObject>;
    // Read-only. Nullable.
    extensionProperties?: NullableOption<ExtensionProperty[]>;
    homeRealmDiscoveryPolicies?: NullableOption<HomeRealmDiscoveryPolicy[]>;
    // Directory objects that are owners of the application. Read-only. Nullable. Supports $expand.
    owners?: NullableOption<DirectoryObject[]>;
    tokenIssuancePolicies?: NullableOption<TokenIssuancePolicy[]>;
    // The tokenLifetimePolicies assigned to this application. Supports $expand.
    tokenLifetimePolicies?: NullableOption<TokenLifetimePolicy[]>;
    // The connectorGroup the application is using with Azure AD Application Proxy. Nullable.
    connectorGroup?: NullableOption<ConnectorGroup>;
    synchronization?: NullableOption<Synchronization>;
}
export interface ServicePrincipal extends DirectoryObject {
    /**
     * The collection for settings related to password single sign-on. Use $select=passwordSingleSignOnSettings to read the
     * property. Read-only for applicationTemplates except for custom applicationTemplates.
     */
    passwordSingleSignOnSettings?: NullableOption<PasswordSingleSignOnSettings>;
    // true if the service principal account is enabled; otherwise, false. Supports $filter (eq, ne, NOT, in).
    accountEnabled?: NullableOption<boolean>;
    /**
     * Defines custom behavior that a consuming service can use to call an app in specific contexts. For example, applications
     * that can render file streams may set the addIns property for its 'FileHandler' functionality. This will let services
     * like Microsoft 365 call the application in the context of a document the user is working on.
     */
    addIns?: AddIn[];
    /**
     * Used to retrieve service principals by subscription, identify resource group and full resource ids for managed
     * identities. Supports $filter (eq, NOT, ge, le, startsWith).
     */
    alternativeNames?: string[];
    // The description exposed by the associated application.
    appDescription?: NullableOption<string>;
    // The display name exposed by the associated application.
    appDisplayName?: NullableOption<string>;
    // The unique identifier for the associated application (its appId property).
    appId?: NullableOption<string>;
    /**
     * Unique identifier of the applicationTemplate that the servicePrincipal was created from. Read-only. Supports $filter
     * (eq, ne, NOT, startsWith).
     */
    applicationTemplateId?: NullableOption<string>;
    /**
     * Contains the tenant id where the application is registered. This is applicable only to service principals backed by
     * applications.Supports $filter (eq, ne, NOT, ge, le).
     */
    appOwnerOrganizationId?: NullableOption<string>;
    /**
     * Specifies whether users or other service principals need to be granted an app role assignment for this service
     * principal before users can sign in or apps can get tokens. The default value is false. Not nullable. Supports $filter
     * (eq, ne, NOT).
     */
    appRoleAssignmentRequired?: boolean;
    /**
     * The roles exposed by the application which this service principal represents. For more information see the appRoles
     * property definition on the application entity. Not nullable.
     */
    appRoles?: AppRole[];
    /**
     * Free text field to provide an internal end-user facing description of the service principal. End-user portals such
     * MyApps will display the application description in this field. The maximum allowed size is 1024 characters. Supports
     * $filter (eq, ne, NOT, ge, le, startsWith) and $search.
     */
    description?: NullableOption<string>;
    /**
     * Specifies whether Microsoft has disabled the registered application. Possible values are: null (default value),
     * NotDisabled, and DisabledDueToViolationOfServicesAgreement (reasons may include suspicious, abusive, or malicious
     * activity, or a violation of the Microsoft Services Agreement). Supports $filter (eq, ne, NOT).
     */
    disabledByMicrosoftStatus?: NullableOption<string>;
    /**
     * The display name for the service principal. Supports $filter (eq, ne, NOT, ge, le, in, startsWith), $search, and
     * $orderBy.
     */
    displayName?: NullableOption<string>;
    // Deprecated. Don't use.
    errorUrl?: NullableOption<string>;
    // Home page or landing page of the application.
    homepage?: NullableOption<string>;
    /**
     * Basic profile information of the acquired application such as app's marketing, support, terms of service and privacy
     * statement URLs. The terms of service and privacy statement are surfaced to users through the user consent experience.
     * For more info, see How to: Add Terms of service and privacy statement for registered Azure AD apps. Supports $filter
     * (eq, ne, NOT, ge, le).
     */
    info?: NullableOption<InformationalUrl>;
    /**
     * The collection of key credentials associated with the service principal. Not nullable. Supports $filter (eq, NOT, ge,
     * le).
     */
    keyCredentials?: KeyCredential[];
    /**
     * Specifies the URL where the service provider redirects the user to Azure AD to authenticate. Azure AD uses the URL to
     * launch the application from Microsoft 365 or the Azure AD My Apps. When blank, Azure AD performs IdP-initiated sign-on
     * for applications configured with SAML-based single sign-on. The user launches the application from Microsoft 365, the
     * Azure AD My Apps, or the Azure AD SSO URL.
     */
    loginUrl?: NullableOption<string>;
    /**
     * Specifies the URL that will be used by Microsoft's authorization service to logout an user using OpenId Connect
     * front-channel, back-channel or SAML logout protocols.
     */
    logoutUrl?: NullableOption<string>;
    /**
     * Free text field to capture information about the service principal, typically used for operational purposes. Maximum
     * allowed size is 1024 characters.
     */
    notes?: NullableOption<string>;
    /**
     * Specifies the list of email addresses where Azure AD sends a notification when the active certificate is near the
     * expiration date. This is only for the certificates used to sign the SAML token issued for Azure AD Gallery
     * applications.
     */
    notificationEmailAddresses?: string[];
    // The collection of password credentials associated with the service principal. Not nullable.
    passwordCredentials?: PasswordCredential[];
    /**
     * Specifies the single sign-on mode configured for this application. Azure AD uses the preferred single sign-on mode to
     * launch the application from Microsoft 365 or the Azure AD My Apps. The supported values are password, saml,
     * notSupported, and oidc.
     */
    preferredSingleSignOnMode?: NullableOption<string>;
    /**
     * Specifies the expiration date of the keyCredential used for token signing, marked by
     * preferredTokenSigningKeyThumbprint.
     */
    preferredTokenSigningKeyEndDateTime?: NullableOption<string>;
    // Reserved for internal use only. Do not write or otherwise rely on this property. May be removed in future versions.
    preferredTokenSigningKeyThumbprint?: NullableOption<string>;
    /**
     * The delegated permissions exposed by the application. For more information see the oauth2PermissionScopes property on
     * the application entity's api property. Not nullable.
     */
    publishedPermissionScopes?: PermissionScope[];
    publisherName?: NullableOption<string>;
    /**
     * The URLs that user tokens are sent to for sign in with the associated application, or the redirect URIs that OAuth 2.0
     * authorization codes and access tokens are sent to for the associated application. Not nullable.
     */
    replyUrls?: string[];
    // The url where the service exposes SAML metadata for federation.
    samlMetadataUrl?: NullableOption<string>;
    // The collection for settings related to saml single sign-on.
    samlSingleSignOnSettings?: NullableOption<SamlSingleSignOnSettings>;
    /**
     * Contains the list of identifiersUris, copied over from the associated application. Additional values can be added to
     * hybrid applications. These values can be used to identify the permissions exposed by this app within Azure AD. For
     * example,Client apps can specify a resource URI which is based on the values of this property to acquire an access
     * token, which is the URI returned in the 'aud' claim.The any operator is required for filter expressions on multi-valued
     * properties. Not nullable. Supports $filter (eq, NOT, ge, le, startsWith).
     */
    servicePrincipalNames?: string[];
    /**
     * Identifies if the service principal represents an application or a managed identity. This is set by Azure AD
     * internally. For a service principal that represents an application this is set as Application. For a service principal
     * that represent a managed identity this is set as ManagedIdentity.
     */
    servicePrincipalType?: NullableOption<string>;
    /**
     * Specifies the Microsoft accounts that are supported for the current application. Read-only. Supported values
     * are:AzureADMyOrg: Users with a Microsoft work or school account in my organization’s Azure AD tenant
     * (single-tenant).AzureADMultipleOrgs: Users with a Microsoft work or school account in any organization’s Azure AD
     * tenant (multi-tenant).AzureADandPersonalMicrosoftAccount: Users with a personal Microsoft account, or a work or school
     * account in any organization’s Azure AD tenant.PersonalMicrosoftAccount: Users with a personal Microsoft account only.
     */
    signInAudience?: NullableOption<string>;
    /**
     * Custom strings that can be used to categorize and identify the service principal. Not nullable. Supports $filter (eq,
     * NOT, ge, le, startsWith).
     */
    tags?: string[];
    /**
     * Specifies the keyId of a public key from the keyCredentials collection. When configured, Azure AD issues tokens for
     * this application encrypted using the key specified by this property. The application code that receives the encrypted
     * token must use the matching private key to decrypt the token before it can be used for the signed-in user.
     */
    tokenEncryptionKeyId?: NullableOption<string>;
    // The appManagementPolicy applied to this service principal.
    appManagementPolicies?: NullableOption<AppManagementPolicy[]>;
    // App role assignments for this app or service, granted to users, groups, and other service principals.Supports $expand.
    appRoleAssignedTo?: NullableOption<AppRoleAssignment[]>;
    // App role assignment for another app or service, granted to this service principal. Supports $expand.
    appRoleAssignments?: NullableOption<AppRoleAssignment[]>;
    // The claimsMappingPolicies assigned to this service principal. Supports $expand.
    claimsMappingPolicies?: NullableOption<ClaimsMappingPolicy[]>;
    // Directory objects created by this service principal. Read-only. Nullable.
    createdObjects?: NullableOption<DirectoryObject[]>;
    /**
     * The permission classifications for delegated permissions exposed by the app that this service principal represents.
     * Supports $expand.
     */
    delegatedPermissionClassifications?: NullableOption<DelegatedPermissionClassification[]>;
    /**
     * Endpoints available for discovery. Services like Sharepoint populate this property with a tenant specific SharePoint
     * endpoints that other applications can discover and use in their experiences.
     */
    endpoints?: NullableOption<Endpoint[]>;
    // The homeRealmDiscoveryPolicies assigned to this service principal. Supports $expand.
    homeRealmDiscoveryPolicies?: NullableOption<HomeRealmDiscoveryPolicy[]>;
    licenseDetails?: NullableOption<LicenseDetails[]>;
    // Roles that this service principal is a member of. HTTP Methods: GET Read-only. Nullable. Supports $expand.
    memberOf?: NullableOption<DirectoryObject[]>;
    /**
     * Delegated permission grants authorizing this service principal to access an API on behalf of a signed-in user.
     * Read-only. Nullable.
     */
    oauth2PermissionGrants?: NullableOption<OAuth2PermissionGrant[]>;
    // Directory objects that are owned by this service principal. Read-only. Nullable. Supports $expand.
    ownedObjects?: NullableOption<DirectoryObject[]>;
    /**
     * Directory objects that are owners of this servicePrincipal. The owners are a set of non-admin users or
     * servicePrincipals who are allowed to modify this object. Read-only. Nullable. Supports $expand.
     */
    owners?: NullableOption<DirectoryObject[]>;
    // The tokenIssuancePolicies assigned to this service principal. Supports $expand.
    tokenIssuancePolicies?: NullableOption<TokenIssuancePolicy[]>;
    // The tokenLifetimePolicies assigned to this service principal. Supports $expand.
    tokenLifetimePolicies?: NullableOption<TokenLifetimePolicy[]>;
    transitiveMemberOf?: NullableOption<DirectoryObject[]>;
    synchronization?: NullableOption<Synchronization>;
}
export interface PolicyBase extends DirectoryObject {
    // Description for this policy.
    description?: string;
    // Display name for this policy.
    displayName?: string;
}
export interface AppManagementPolicy extends PolicyBase {
    // Denotes whether the policy is enabled.
    isEnabled?: boolean;
    // Restrictions that apply to an application or service principal object.
    restrictions?: NullableOption<AppManagementConfiguration>;
    // Collection of application and service principals to which a policy is applied.
    appliesTo?: NullableOption<DirectoryObject[]>;
}
export interface ExtensionProperty extends DirectoryObject {
    // Display name of the application object on which this extension property is defined. Read-only.
    appDisplayName?: NullableOption<string>;
    /**
     * Specifies the data type of the value the extension property can hold. Following values are supported. Not nullable.
     * Binary - 256 bytes maximumBooleanDateTime - Must be specified in ISO 8601 format. Will be stored in UTC.Integer -
     * 32-bit value.LargeInteger - 64-bit value.String - 256 characters maximum
     */
    dataType?: string;
    // Indicates if this extension property was sycned from onpremises directory using Azure AD Connect. Read-only.
    isSyncedFromOnPremises?: NullableOption<boolean>;
    // Name of the extension property. Not nullable.
    name?: string;
    // Following values are supported. Not nullable. UserGroupOrganizationDeviceApplication
    targetObjects?: string[];
}
export interface StsPolicy extends PolicyBase {
    /**
     * 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.
     */
    definition?: string[];
    /**
     * 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.
     */
    isOrganizationDefault?: NullableOption<boolean>;
    appliesTo?: NullableOption<DirectoryObject[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface HomeRealmDiscoveryPolicy extends StsPolicy {}
// tslint:disable-next-line: no-empty-interface
export interface TokenIssuancePolicy extends StsPolicy {}
// tslint:disable-next-line: no-empty-interface
export interface TokenLifetimePolicy extends StsPolicy {}
export interface ConnectorGroup extends Entity {
    // Indicates the type of hybrid agent. This pre-set by the system. Possible values are: applicationProxy. Read-only.
    connectorGroupType?: ConnectorGroupType;
    /**
     * Indicates if the connectorGroup is the default connectorGroup. Only a single connector group can be the default
     * connectorGroup and this is pre-set by the system. Read-only.
     */
    isDefault?: boolean;
    // The name associated with the connectorGroup.
    name?: string;
    /**
     * The region the connectorGroup is assigned to and will optimize traffic for. This region can only be set if no
     * connectors or applications are assigned to the connectorGroup. The possible values are: nam (for North America), eur
     * (for Europe), aus (for Australia), asia (for Asia), ind (for India), and unknownFutureValue.
     */
    region?: NullableOption<ConnectorGroupRegion>;
    // Read-only. Nullable.
    applications?: NullableOption<Application[]>;
    // Read-only. Nullable.
    members?: NullableOption<Connector[]>;
}
export interface Synchronization extends Entity {
    secrets?: NullableOption<SynchronizationSecretKeyStringValuePair[]>;
    jobs?: NullableOption<SynchronizationJob[]>;
    templates?: NullableOption<SynchronizationTemplate[]>;
}
export interface ApplicationTemplate extends Entity {
    /**
     * The list of categories for the application. Supported values can be: Collaboration, Business Management, Consumer,
     * Content management, CRM, Data services, Developer services, E-commerce, Education, ERP, Finance, Health, Human
     * resources, IT infrastructure, Mail, Management, Marketing, Media, Productivity, Project management, Telecommunications,
     * Tools, Travel, and Web design &amp; hosting.
     */
    categories?: NullableOption<string[]>;
    // A description of the application.
    description?: NullableOption<string>;
    // The name of the application.
    displayName?: NullableOption<string>;
    // The home page URL of the application.
    homePageUrl?: NullableOption<string>;
    // The URL to get the logo for this application.
    logoUrl?: NullableOption<string>;
    // The name of the publisher for this application.
    publisher?: NullableOption<string>;
    // The list of provisioning modes supported by this application. The only valid value is sync.
    supportedProvisioningTypes?: NullableOption<string[]>;
    /**
     * The list of single sign-on modes supported by this application. The supported values are oidc, password, saml, and
     * notSupported.
     */
    supportedSingleSignOnModes?: NullableOption<string[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface ClaimsMappingPolicy extends StsPolicy {}
export interface DelegatedPermissionClassification extends Entity {
    // The classification value being given. Possible value: low. Does not support $filter.
    classification?: NullableOption<PermissionClassificationType>;
    /**
     * The unique identifier (id) for the delegated permission listed in the publishedPermissionScopes collection of the
     * servicePrincipal. Required on create. Does not support $filter.
     */
    permissionId?: NullableOption<string>;
    /**
     * The claim value (value) for the delegated permission listed in the publishedPermissionScopes collection of the
     * servicePrincipal. Does not support $filter.
     */
    permissionName?: NullableOption<string>;
}
export interface Endpoint extends DirectoryObject {
    /**
     * Describes the capability that is associated with this resource. (e.g. Messages, Conversations, etc.) Not nullable.
     * Read-only.
     */
    capability?: string;
    // Application id of the publishing underlying service. Not nullable. Read-only.
    providerId?: NullableOption<string>;
    // Name of the publishing underlying service. Read-only.
    providerName?: NullableOption<string>;
    /**
     * For Microsoft 365 groups, this is set to a well-known name for the resource (e.g. Yammer.FeedURL etc.). Not nullable.
     * Read-only.
     */
    providerResourceId?: NullableOption<string>;
    // URL of the published resource. Not nullable. Read-only.
    uri?: string;
}
export interface AuthenticationMethodConfiguration extends Entity {
    // The state of the policy. Possible values are: enabled, disabled.
    state?: NullableOption<AuthenticationMethodState>;
}
export interface AuthenticationMethodsPolicy extends Entity {
    // A description of the policy.
    description?: NullableOption<string>;
    // The name of the policy.
    displayName?: NullableOption<string>;
    // The date and time of the last update to the policy.
    lastModifiedDateTime?: NullableOption<string>;
    // The version of the policy in use.
    policyVersion?: NullableOption<string>;
    reconfirmationInDays?: NullableOption<number>;
    /**
     * Enforce registration at sign-in time. This property can be used to remind users to set up targeted authentication
     * methods.
     */
    registrationEnforcement?: NullableOption<RegistrationEnforcement>;
    // Represents the settings for each authentication method.
    authenticationMethodConfigurations?: NullableOption<AuthenticationMethodConfiguration[]>;
}
export interface AuthenticationMethodTarget extends Entity {
    // Determines if the user is enforced to register the authentication method.
    isRegistrationRequired?: boolean;
    // Possible values are: user, group.
    targetType?: AuthenticationMethodTargetType;
}
export interface EmailAuthenticationMethodConfiguration extends AuthenticationMethodConfiguration {
    /**
     * Determines whether email OTP is usable by external users for authentication. Possible values are: default, enabled,
     * disabled, unknownFutureValue. Tenants in the default state who did not use public preview will automatically have email
     * OTP enabled beginning in October 2021.
     */
    allowExternalIdToUseEmailOtp?: NullableOption<ExternalEmailOtpState>;
    // A collection of users or groups who are enabled to use the authentication method.
    includeTargets?: NullableOption<AuthenticationMethodTarget[]>;
}
export interface Fido2AuthenticationMethodConfiguration extends AuthenticationMethodConfiguration {
    // Determines whether attestation must be enforced for FIDO2 security key registration.
    isAttestationEnforced?: NullableOption<boolean>;
    // Determines if users can register new FIDO2 security keys.
    isSelfServiceRegistrationAllowed?: NullableOption<boolean>;
    /**
     * Controls whether key restrictions are enforced on FIDO2 security keys, either allowing or disallowing certain key types
     * as defined by Authenticator Attestation GUID (AAGUID), an identifier that indicates the type (e.g. make and model) of
     * the authenticator.
     */
    keyRestrictions?: NullableOption<Fido2KeyRestrictions>;
    // A collection of users or groups who are enabled to use the authentication method.
    includeTargets?: NullableOption<AuthenticationMethodTarget[]>;
}
export interface MicrosoftAuthenticatorAuthenticationMethodConfiguration extends AuthenticationMethodConfiguration {
    // A collection of users or groups who are enabled to use the authentication method.
    includeTargets?: NullableOption<MicrosoftAuthenticatorAuthenticationMethodTarget[]>;
}
export interface MicrosoftAuthenticatorAuthenticationMethodTarget extends AuthenticationMethodTarget {
    /**
     * Determines which types of notifications can be used for sign-in. Possible values are: any, deviceBasedPush
     * (passwordless only), push.
     */
    authenticationMode?: MicrosoftAuthenticatorAuthenticationMode;
    /**
     * Determines what additional settings should be applied to Microsoft Authenticator. Possible values are: null,
     * requireNumberMatching (Requires number matching for MFA notifications. Value is ignored for phone sign-in
     * notifications).
     */
    featureSettings?: NullableOption<AuthenticatorAppFeatureSettings>;
}
export interface PolicyRoot {
    /**
     * The authentication methods and the users that are allowed to use them to sign in and perform multi-factor
     * authentication (MFA) in Azure Active Directory (Azure AD).
     */
    authenticationMethodsPolicy?: NullableOption<AuthenticationMethodsPolicy>;
    // The policy configuration of the self-service sign-up experience of external users.
    authenticationFlowsPolicy?: NullableOption<AuthenticationFlowsPolicy>;
    // The Azure AD B2C policies that define how end users register via local accounts.
    b2cAuthenticationMethodsPolicy?: NullableOption<B2cAuthenticationMethodsPolicy>;
    // The policy that controls the idle time out for web sessions for applications.
    activityBasedTimeoutPolicies?: NullableOption<ActivityBasedTimeoutPolicy[]>;
    /**
     * The policies that enforce app management restrictions for specific applications and service principals, overriding the
     * defaultAppManagementPolicy.
     */
    appManagementPolicies?: NullableOption<AppManagementPolicy[]>;
    // The policy that controls Azure AD authorization settings.
    authorizationPolicy?: NullableOption<AuthorizationPolicy[]>;
    /**
     * The claim-mapping policies for WS-Fed, SAML, OAuth 2.0, and OpenID Connect protocols, for tokens issued to a specific
     * application.
     */
    claimsMappingPolicies?: NullableOption<ClaimsMappingPolicy[]>;
    // The tenant-wide policy that enforces app management restrictions for all applications and service principals.
    defaultAppManagementPolicy?: NullableOption<TenantAppManagementPolicy>;
    // The policy to control Azure AD authentication behavior for federated users.
    homeRealmDiscoveryPolicies?: NullableOption<HomeRealmDiscoveryPolicy[]>;
    // The policy that specifies the conditions under which consent can be granted.
    permissionGrantPolicies?: NullableOption<PermissionGrantPolicy[]>;
    // The policy that specifies the characteristics of SAML tokens issued by Azure AD.
    tokenIssuancePolicies?: NullableOption<TokenIssuancePolicy[]>;
    // The policy that controls the lifetime of a JWT access token, an ID token, or a SAML 1.1/2.0 token issued by Azure AD.
    tokenLifetimePolicies?: NullableOption<TokenLifetimePolicy[]>;
    // The feature rollout policy associated with a directory object.
    featureRolloutPolicies?: NullableOption<FeatureRolloutPolicy[]>;
    // The policy that contains directory-level access review settings.
    accessReviewPolicy?: NullableOption<AccessReviewPolicy>;
    // The policy by which consent requests are created and managed for the entire tenant.
    adminConsentRequestPolicy?: NullableOption<AdminConsentRequestPolicy>;
    directoryRoleAccessReviewPolicy?: NullableOption<DirectoryRoleAccessReviewPolicy>;
    // The custom rules that define an access scenario.
    conditionalAccessPolicies?: NullableOption<ConditionalAccessPolicy[]>;
    // The policy that represents the security defaults that protect against common attacks.
    identitySecurityDefaultsEnforcementPolicy?: NullableOption<IdentitySecurityDefaultsEnforcementPolicy>;
    // The policy that defines auto-enrollment configuration for a mobility management (MDM or MAM) application.
    mobileAppManagementPolicies?: NullableOption<MobilityManagementPolicy[]>;
    mobileDeviceManagementPolicies?: NullableOption<MobilityManagementPolicy[]>;
    // Represents the role management policies.
    roleManagementPolicies?: NullableOption<UnifiedRoleManagementPolicy[]>;
    // Represents the role management policy assignments.
    roleManagementPolicyAssignments?: NullableOption<UnifiedRoleManagementPolicyAssignment[]>;
}
export interface AuthenticationFlowsPolicy extends Entity {
    // Inherited property. A description of the policy. This property is not a key. Optional. Read-only.
    description?: NullableOption<string>;
    // Inherited property. The human-readable name of the policy. This property is not a key. Optional. Read-only.
    displayName?: NullableOption<string>;
    /**
     * Contains selfServiceSignUpAuthenticationFlowConfiguration settings that convey whether self-service sign-up is enabled
     * or disabled. This property is not a key. Optional. Read-only.
     */
    selfServiceSignUp?: NullableOption<SelfServiceSignUpAuthenticationFlowConfiguration>;
}
export interface B2cAuthenticationMethodsPolicy extends Entity {
    // The tenant admin can configure local accounts using email if the email and password authentication method is enabled.
    isEmailPasswordAuthenticationEnabled?: boolean;
    /**
     * The tenant admin can configure local accounts using phone number if the phone number and one-time password
     * authentication method is enabled.
     */
    isPhoneOneTimePasswordAuthenticationEnabled?: boolean;
    /**
     * The tenant admin can configure local accounts using username if the username and password authentication method is
     * enabled.
     */
    isUserNameAuthenticationEnabled?: boolean;
}
// tslint:disable-next-line: no-empty-interface
export interface ActivityBasedTimeoutPolicy extends StsPolicy {}
export interface AuthorizationPolicy extends PolicyBase {
    // Indicates whether users can sign up for email based subscriptions.
    allowedToSignUpEmailBasedSubscriptions?: boolean;
    // Indicates whether the Self-Serve Password Reset feature can be used by users on the tenant.
    allowedToUseSSPR?: boolean;
    // Indicates whether a user can join the tenant by email validation.
    allowEmailVerifiedUsersToJoinOrganization?: boolean;
    /**
     * Indicates who can invite external users to the organization. Possible values are: none, adminsAndGuestInviters,
     * adminsGuestInvitersAndAllMembers, everyone. everyone is the default setting for all cloud environments except US
     * Government. See more in the table below.
     */
    allowInvitesFrom?: NullableOption<AllowInvitesFrom>;
    /**
     * To disable the use of MSOL PowerShell set this property to true. This will also disable user-based access to the legacy
     * service endpoint used by MSOL PowerShell. This does not affect Azure AD Connect or Microsoft Graph.
     */
    blockMsolPowerShell?: NullableOption<boolean>;
    // Specifies certain customizable permissions for default user role.
    defaultUserRolePermissions?: DefaultUserRolePermissions;
    // List of features enabled for private preview on the tenant.
    enabledPreviewFeatures?: NullableOption<string[]>;
    /**
     * Represents role templateId for the role that should be granted to guest user. Refer to List unifiedRoleDefinitions to
     * find the list of available role templates. Currently following roles are supported: User
     * (a0b1b346-4d3e-4e8b-98f8-753987be4970), Guest User (10dae51f-b6af-4016-8d66-8c2a99b929b3), and Restricted Guest User
     * (2af84b1e-32c8-42b7-82bc-daa82404023b).
     */
    guestUserRoleId?: NullableOption<string>;
    /**
     * Indicates if user consent to apps is allowed, and if it is, which app consent policy (permissionGrantPolicy) governs
     * the permission for users to grant consent. Values should be in the format managePermissionGrantsForSelf.{id}, where
     * {id} is the id of a built-in or custom app consent policy. An empty list indicates user consent to apps is disabled.
     */
    permissionGrantPolicyIdsAssignedToDefaultUserRole?: NullableOption<string[]>;
}
export interface TenantAppManagementPolicy extends PolicyBase {
    // Restrictions that apply as default to all application objects in the tenant.
    applicationRestrictions?: NullableOption<AppManagementConfiguration>;
    // Denotes whether the policy is enabled. Default value is false.
    isEnabled?: boolean;
    // Restrictions that apply as default to all service principal objects in the tenant.
    servicePrincipalRestrictions?: NullableOption<AppManagementConfiguration>;
}
export interface PermissionGrantPolicy extends PolicyBase {
    // Condition sets which are excluded in this permission grant policy. Automatically expanded on GET.
    excludes?: NullableOption<PermissionGrantConditionSet[]>;
    // Condition sets which are included in this permission grant policy. Automatically expanded on GET.
    includes?: NullableOption<PermissionGrantConditionSet[]>;
}
export interface FeatureRolloutPolicy extends Entity {
    // A description for this feature rollout policy.
    description?: NullableOption<string>;
    // The display name for this feature rollout policy.
    displayName?: string;
    // Possible values are: passthroughAuthentication, seamlessSso, passwordHashSync, emailAsAlternateId, unknownFutureValue.
    feature?: StagedFeatureName;
    // Indicates whether this feature rollout policy should be applied to the entire organization.
    isAppliedToOrganization?: boolean;
    // Indicates whether the feature rollout is enabled.
    isEnabled?: boolean;
    // Nullable. Specifies a list of directoryObjects that feature is enabled for.
    appliesTo?: NullableOption<DirectoryObject[]>;
}
export interface AccessReviewPolicy extends Entity {
    // Description for this policy. Read-only.
    description?: NullableOption<string>;
    // Display name for this policy. Read-only.
    displayName?: string;
    // If true, group owners can create and manage access reviews on groups they own.
    isGroupOwnerManagementEnabled?: boolean;
}
export interface AdminConsentRequestPolicy extends Entity {
    // Specifies whether the admin consent request feature is enabled or disabled. Required.
    isEnabled?: boolean;
    // Specifies whether reviewers will receive notifications. Required.
    notifyReviewers?: boolean;
    // Specifies whether reviewers will receive reminder emails. Required.
    remindersEnabled?: boolean;
    // Specifies the duration the request is active before it automatically expires if no decision is applied.
    requestDurationInDays?: number;
    // Required.
    reviewers?: NullableOption<AccessReviewReviewerScope[]>;
    // Specifies the version of this policy. When the policy is updated, this version is updated. Read-only.
    version?: number;
}
export interface DirectoryRoleAccessReviewPolicy extends Entity {
    settings?: NullableOption<AccessReviewScheduleSettings>;
}
export interface ConditionalAccessPolicy extends Entity {
    // Specifies the rules that must be met for the policy to apply. Required.
    conditions?: ConditionalAccessConditionSet;
    /**
     * 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 is 2014-01-01T00:00:00Z. Readonly.
     */
    createdDateTime?: NullableOption<string>;
    // Not used.
    description?: NullableOption<string>;
    // Specifies a display name for the conditionalAccessPolicy object.
    displayName?: string;
    // Specifies the grant controls that must be fulfilled to pass the policy.
    grantControls?: NullableOption<ConditionalAccessGrantControls>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Readonly.
     */
    modifiedDateTime?: NullableOption<string>;
    // Specifies the session controls that are enforced after sign-in.
    sessionControls?: NullableOption<ConditionalAccessSessionControls>;
    /**
     * Specifies the state of the conditionalAccessPolicy object. Possible values are: enabled, disabled,
     * enabledForReportingButNotEnforced. Required.
     */
    state?: ConditionalAccessPolicyState;
}
// tslint:disable-next-line: interface-name
export interface IdentitySecurityDefaultsEnforcementPolicy extends PolicyBase {
    // If set to true, Azure Active Directory security defaults is enabled for the tenant.
    isEnabled?: boolean;
}
export interface MobilityManagementPolicy extends Entity {
    // Indicates the user scope of the mobility management policy. Possible values are: none, all, selected.
    appliesTo?: NullableOption<PolicyScope>;
    // Compliance URL of the mobility management application.
    complianceUrl?: NullableOption<string>;
    // Description of the mobility management application.
    description?: NullableOption<string>;
    // Discovery URL of the mobility management application.
    discoveryUrl?: NullableOption<string>;
    // Display name of the mobility management application.
    displayName?: NullableOption<string>;
    // Whether policy is valid. Invalid policies may not be updated and should be deleted.
    isValid?: NullableOption<boolean>;
    // Terms of Use URL of the mobility management application.
    termsOfUseUrl?: NullableOption<string>;
    // Azure AD groups under the scope of the mobility management application if appliesTo is selected
    includedGroups?: NullableOption<Group[]>;
}
export interface UnifiedRoleManagementPolicy extends Entity {
    // Description for the policy.
    description?: string;
    // Display name for the policy.
    displayName?: string;
    /**
     * This can only be set to true for a single tenant wide policy which will apply to all scopes and roles. Set the scopeId
     * to '/' and scopeType to Directory.
     */
    isOrganizationDefault?: NullableOption<boolean>;
    // The identity who last modified the role setting.
    lastModifiedBy?: NullableOption<Identity>;
    // The time when the role setting was last modified.
    lastModifiedDateTime?: NullableOption<string>;
    // The id of the scope where the policy is created. E.g. '/', groupId, etc.
    scopeId?: string;
    // The type of the scope where the policy is created. One of Directory, DirectoryRole, Group.
    scopeType?: string;
    /**
     * The list of effective rules like approval rule, expiration rule, etc. evaluated based on inherited referenced rules.
     * E.g. If there is a tenant wide policy to enforce enabling approval rule, the effective rule will be to enable approval
     * even if the polcy has a rule to disable approval.
     */
    effectiveRules?: NullableOption<UnifiedRoleManagementPolicyRule[]>;
    // The collection of rules like approval rule, expiration rule, etc.
    rules?: NullableOption<UnifiedRoleManagementPolicyRule[]>;
}
export interface UnifiedRoleManagementPolicyAssignment extends Entity {
    // The id of the policy.
    policyId?: string;
    // The id of the role definition where the policy applies. If not specified, the policy applies to all roles.
    roleDefinitionId?: NullableOption<string>;
    // The id of the scope where the policy is assigned. E.g. '/', groupId, etc.
    scopeId?: string;
    // The type of the scope where the policy is assigned. One of Directory, DirectoryRole, Group.
    scopeType?: string;
    // The policy for the assignment.
    policy?: NullableOption<UnifiedRoleManagementPolicy>;
}
export interface SmsAuthenticationMethodConfiguration extends AuthenticationMethodConfiguration {
    // A collection of users or groups who are enabled to use the authentication method.
    includeTargets?: NullableOption<SmsAuthenticationMethodTarget[]>;
}
export interface SmsAuthenticationMethodTarget extends AuthenticationMethodTarget {
    // Determines if the users or groups can use this authentication method to sign in to Azure AD. The value is always true.
    isUsableForSignIn?: boolean;
}
export interface TemporaryAccessPassAuthenticationMethodConfiguration extends AuthenticationMethodConfiguration {
    defaultLength?: NullableOption<number>;
    defaultLifetimeInMinutes?: NullableOption<number>;
    isUsableOnce?: NullableOption<boolean>;
    maximumLifetimeInMinutes?: NullableOption<number>;
    minimumLifetimeInMinutes?: NullableOption<number>;
    includeTargets?: NullableOption<AuthenticationMethodTarget[]>;
}
export interface Bitlocker extends Entity {
    // The recovery keys associated with the bitlocker entity.
    recoveryKeys?: NullableOption<BitlockerRecoveryKey[]>;
}
export interface BitlockerRecoveryKey extends Entity {
    // The date and time when the key was originally backed up to Azure Active Directory.
    createdDateTime?: string;
    // ID of the device the BitLocker key is originally backed up from.
    deviceId?: NullableOption<string>;
    // The BitLocker recovery key.
    key?: string;
    /**
     * Indicates the type of volume the BitLocker key is associated with. Possible values are: operatingSystemVolume,
     * fixedDataVolume, removableDataVolume, unknownFutureValue.
     */
    volumeType?: NullableOption<VolumeType>;
}
export interface DataLossPreventionPolicy extends Entity {
    name?: NullableOption<string>;
}
export interface SensitivityLabel extends Entity {
    applicableTo?: NullableOption<SensitivityLabelTarget>;
    applicationMode?: NullableOption<ApplicationMode>;
    assignedPolicies?: NullableOption<LabelPolicy[]>;
    autoLabeling?: NullableOption<AutoLabeling>;
    description?: NullableOption<string>;
    displayName?: NullableOption<string>;
    isDefault?: NullableOption<boolean>;
    isEndpointProtectionEnabled?: NullableOption<boolean>;
    labelActions?: NullableOption<LabelActionBase[]>;
    name?: NullableOption<string>;
    priority?: NullableOption<number>;
    toolTip?: NullableOption<string>;
    sublabels?: NullableOption<SensitivityLabel[]>;
}
export interface SensitivityPolicySettings extends Entity {
    applicableTo?: NullableOption<SensitivityLabelTarget>;
    downgradeSensitivityRequiresJustification?: NullableOption<boolean>;
    helpWebUrl?: NullableOption<string>;
    isMandatory?: NullableOption<boolean>;
}
// tslint:disable-next-line: interface-name
export interface InformationProtectionPolicy extends Entity {
    labels?: NullableOption<InformationProtectionLabel[]>;
}
export interface ThreatAssessmentRequest extends Entity {
    // The threat category. Possible values are: spam, phishing, malware.
    category?: ThreatCategory;
    // The content type of threat assessment. Possible values are: mail, url, file.
    contentType?: NullableOption<ThreatAssessmentContentType>;
    // The threat assessment request creator.
    createdBy?: NullableOption<IdentitySet>;
    /**
     * 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 is 2014-01-01T00:00:00Z.
     */
    createdDateTime?: NullableOption<string>;
    // The expected assessment from submitter. Possible values are: block, unblock.
    expectedAssessment?: ThreatExpectedAssessment;
    // The source of the threat assessment request. Possible values are: user, administrator.
    requestSource?: NullableOption<ThreatAssessmentRequestSource>;
    // The assessment process status. Possible values are: pending, completed.
    status?: NullableOption<ThreatAssessmentStatus>;
    /**
     * 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.
     */
    results?: NullableOption<ThreatAssessmentResult[]>;
}
export interface BookingAppointment extends Entity {
    additionalInformation?: NullableOption<string>;
    // The SMTP address of the bookingCustomer who is booking the appointment.
    customerEmailAddress?: NullableOption<string>;
    /**
     * If CustomerId is not specified when an appointment is created then a new customer is created based on the appointment
     * customer information. Once set, the customerId should be considered immutable.
     */
    customerId?: NullableOption<string>;
    // Represents location information for the bookingCustomer who is booking the appointment.
    customerLocation?: NullableOption<Location>;
    // The customer's name.
    customerName?: NullableOption<string>;
    /**
     * The value of this property is only available when reading an individual booking appointment by id. Its value can only
     * be set when creating a new appointment with a new customer, ie, without specifying a CustomerId. After that, the
     * property is computed from the customer represented by CustomerId.
     */
    customerNotes?: NullableOption<string>;
    // The customer's phone number.
    customerPhone?: NullableOption<string>;
    // The length of the appointment, denoted in ISO8601 format.
    duration?: string;
    // The date, time, and time zone that the appointment ends.
    end?: DateTimeTimeZone;
    // The billed amount on the invoice.
    invoiceAmount?: number;
    // The date, time, and time zone of the invoice for this appointment.
    invoiceDate?: NullableOption<DateTimeTimeZone>;
    // The ID of the invoice.
    invoiceId?: NullableOption<string>;
    // The status of the invoice. Possible values are: draft, reviewing, open, canceled, paid, corrective.
    invoiceStatus?: BookingInvoiceStatus;
    // The URL of the invoice in Microsoft Bookings.
    invoiceUrl?: NullableOption<string>;
    isLocationOnline?: boolean;
    onlineMeetingUrl?: NullableOption<string>;
    /**
     * True indicates that the bookingCustomer for this appointment does not wish to receive a confirmation for this
     * appointment.
     */
    optOutOfCustomerEmail?: boolean;
    /**
     * The amount of time to reserve after the appointment ends, for cleaning up, as an example. The value is expressed in
     * ISO8601 format.
     */
    postBuffer?: string;
    /**
     * The amount of time to reserve before the appointment begins, for preparation, as an example. The value is expressed in
     * ISO8601 format.
     */
    preBuffer?: string;
    // The regular price for an appointment for the specified bookingService.
    price?: number;
    /**
     * A setting to provide flexibility for the pricing structure of services. Possible values are: undefined, fixedPrice,
     * startingAt, hourly, free, priceVaries, callUs, notSet.
     */
    priceType?: BookingPriceType;
    // The value of this property is only available when reading an individual booking appointment by id.
    reminders?: NullableOption<BookingReminder[]>;
    /**
     * An additional tracking ID for the appointment, if the appointment has been created directly by the customer on the
     * scheduling page, as opposed to by a staff member on the behalf of the customer.
     */
    selfServiceAppointmentId?: NullableOption<string>;
    // The ID of the bookingService associated with this appointment.
    serviceId?: NullableOption<string>;
    // The location where the service is delivered.
    serviceLocation?: NullableOption<Location>;
    /**
     * This property is optional when creating a new appointment. If not specified, it is computed from the service associated
     * with the appointment by the service id.
     */
    serviceName?: string;
    // The value of this property is only available when reading an individual booking appointment by id.
    serviceNotes?: NullableOption<string>;
    // The ID of each bookingStaffMember who is scheduled in this appointment.
    staffMemberIds?: NullableOption<string[]>;
    // The date, time, and time zone that the appointment begins.
    start?: DateTimeTimeZone;
}
export interface BookingNamedEntity extends Entity {
    // The display name is suitable for human-readable interfaces.
    displayName?: string;
}
export interface BookingBusiness extends BookingNamedEntity {
    /**
     * The street address of the business. The address property, together with phone and webSiteUrl, appear in the footer of a
     * business scheduling page.
     */
    address?: NullableOption<PhysicalAddress>;
    // The hours of operation for the business.
    businessHours?: NullableOption<BookingWorkHours[]>;
    // The type of business.
    businessType?: NullableOption<string>;
    // The code for the currency that the business operates in on Microsoft Bookings.
    defaultCurrencyIso?: NullableOption<string>;
    // The email address for the business.
    email?: NullableOption<string>;
    /**
     * The scheduling page has been made available to external customers. Use the publish and unpublish actions to set this
     * property. Read-only.
     */
    isPublished?: NullableOption<boolean>;
    /**
     * The telephone number for the business. The phone property, together with address and webSiteUrl, appear in the footer
     * of a business scheduling page.
     */
    phone?: NullableOption<string>;
    // The URL for the scheduling page, which is set after you publish or unpublish the page. Read-only.
    publicUrl?: NullableOption<string>;
    // Specifies how bookings can be created for this business.
    schedulingPolicy?: NullableOption<BookingSchedulingPolicy>;
    // Example: https://www.contoso.com
    webSiteUrl?: NullableOption<string>;
    // All the appointments of this business. Read-only. Nullable.
    appointments?: NullableOption<BookingAppointment[]>;
    // The set of appointments of this business in a specified date range. Read-only. Nullable.
    calendarView?: NullableOption<BookingAppointment[]>;
    // All the customers of this business. Read-only. Nullable.
    customers?: NullableOption<BookingCustomer[]>;
    // All the services offered by this business. Read-only. Nullable.
    services?: NullableOption<BookingService[]>;
    // All the staff members that provide services in this business. Read-only. Nullable.
    staffMembers?: NullableOption<BookingStaffMember[]>;
}
export interface BookingPerson extends BookingNamedEntity {
    // The email address of the person.
    emailAddress?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface BookingCustomer extends BookingPerson {}
export interface BookingService extends BookingNamedEntity {
    additionalInformation?: NullableOption<string>;
    /**
     * The default length of the service, represented in numbers of days, hours, minutes, and seconds. For example,
     * P11D23H59M59.999999999999S.
     */
    defaultDuration?: string;
    // The default physical location for the service.
    defaultLocation?: NullableOption<Location>;
    // The default monetary price for the service.
    defaultPrice?: number;
    /**
     * The default way the service is charged. Possible values are: undefined, fixedPrice, startingAt, hourly, free,
     * priceVaries, callUs, notSet.
     */
    defaultPriceType?: BookingPriceType;
    // The value of this property is only available when reading an individual booking service by id.
    defaultReminders?: NullableOption<BookingReminder[]>;
    // A text description for the service.
    description?: NullableOption<string>;
    // True means this service is not available to customers for booking.
    isHiddenFromCustomers?: boolean;
    isLocationOnline?: boolean;
    // Additional information about this service.
    notes?: NullableOption<string>;
    // The time to buffer after an appointment for this service ends, and before the next customer appointment can be booked.
    postBuffer?: string;
    // The time to buffer before an appointment for this service can start.
    preBuffer?: string;
    // The set of policies that determine how appointments for this type of service should be created and managed.
    schedulingPolicy?: NullableOption<BookingSchedulingPolicy>;
    // Represents those staff members who provide this service.
    staffMemberIds?: NullableOption<string[]>;
}
export interface BookingStaffMember extends BookingPerson {
    /**
     * True means that if the staff member is a Microsoft 365 user, the Bookings API would verify the staff member's
     * availability in their personal calendar in Microsoft 365, before making a booking.
     */
    availabilityIsAffectedByPersonalCalendar?: boolean;
    /**
     * Identifies a color to represent the staff member. The color corresponds to the color palette in the Staff details page
     * in the Bookings app.
     */
    colorIndex?: NullableOption<number>;
    /**
     * The role of the staff member in the business. Possible values are: guest, administrator, viewer, externalGuest.
     * Required.
     */
    role?: BookingStaffRole;
    /**
     * True means the staff member's availability is as specified in the businessHours property of the business. False means
     * the availability is determined by the staff member's workingHours property setting.
     */
    useBusinessHours?: boolean;
    /**
     * The range of hours each day of the week that the staff member is available for booking. By default, they are
     * initialized to be the same as the businessHours property of the business.
     */
    workingHours?: NullableOption<BookingWorkHours[]>;
}
export interface BookingCurrency extends Entity {
    // The currency symbol. For example, the currency symbol for the US dollar and for the Australian dollar is $.
    symbol?: string;
}
export interface AppScope extends Entity {
    /**
     * Provides the display name of the app-specific resource represented by the app scope. Provided for display purposes
     * since appScopeId is often an immutable, non-human-readable id. This property is read only.
     */
    displayName?: NullableOption<string>;
    /**
     * Describes the type of app-specific resource represented by the app scope. Provided for display purposes, so a user
     * interface can convey to the user the kind of app specific resource represented by the app scope. This property is read
     * only.
     */
    type?: NullableOption<string>;
}
export interface CloudPC extends Entity {
    // The Cloud PC display name.
    displayName?: NullableOption<string>;
    /**
     * The date and time when the grace period ends and reprovisioning/deprovisioning happens. Required only if status is
     * inGracePeriod. The timestamp is shown in ISO 8601 format and Coordinated Universal Time (UTC). For example, midnight
     * UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
     */
    gracePeriodEndDateTime?: NullableOption<string>;
    // Name of the OS image that's on the Cloud PC.
    imageDisplayName?: NullableOption<string>;
    /**
     * The Cloud PC's last modified date and 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 is 2014-01-01T00:00:00Z.
     */
    lastModifiedDateTime?: string;
    // The Cloud PC’s Intune device ID.
    managedDeviceId?: NullableOption<string>;
    // The Cloud PC’s Intune device name.
    managedDeviceName?: NullableOption<string>;
    // The on-premises connection that is applied during provisioning of Cloud PCs.
    onPremisesConnectionName?: NullableOption<string>;
    // The Cloud PC's provisioning policy ID.
    provisioningPolicyId?: NullableOption<string>;
    // The provisioning policy that is applied during provisioning of Cloud PCs.
    provisioningPolicyName?: NullableOption<string>;
    // The Cloud PC's service plan ID.
    servicePlanId?: NullableOption<string>;
    // The Cloud PC's service plan name.
    servicePlanName?: NullableOption<string>;
    /**
     * Status of the Cloud PC. Possible values are: notProvisioned, provisioning, provisioned, upgrading, inGracePeriod,
     * deprovisioning, failed.
     */
    status?: CloudPcStatus;
    // The details of the Cloud PC status.
    statusDetails?: NullableOption<CloudPcStatusDetails>;
    // The user principal name (UPN) of the user assigned to the Cloud PC.
    userPrincipalName?: NullableOption<string>;
}
export interface CloudPcAuditEvent extends Entity {
    // Friendly name of the activity. Optional.
    activity?: NullableOption<string>;
    // The date time in UTC when the activity was performed. Read-only.
    activityDateTime?: string;
    // The HTTP operation type of the activity. Possible values include create, delete, patch and other. Read-only.
    activityOperationType?: CloudPcAuditActivityOperationType;
    // The result of the activity. Read-only.
    activityResult?: CloudPcAuditActivityResult;
    // The type of activity that was performed. Read-only.
    activityType?: string;
    // Azure AD user and application associated with the audit event. Read-only.
    actor?: CloudPcAuditActor;
    // Audit category. Read-only.
    category?: CloudPcAuditCategory;
    // Component name. Read-only.
    componentName?: string;
    // The client request identifier, used to correlate activity within the system. Read-only.
    correlationId?: string;
    // Event display name. Read-only.
    displayName?: string;
    // List of cloudPcAuditResource objects. Read-only.
    resources?: CloudPcAuditResource[];
}
export interface CloudPcDeviceImage extends Entity {
    // The image's display name.
    displayName?: NullableOption<string>;
    /**
     * The data and time that the image was last modified. The time is shown in ISO 8601 format and Coordinated Universal Time
     * (UTC) time. For example, midnight UTC on Jan 1, 2014 appears as '2014-01-01T00:00:00Z'.
     */
    lastModifiedDateTime?: NullableOption<string>;
    // The image's operating system. For example: Windows 10 Enterprise.
    operatingSystem?: NullableOption<string>;
    // The image's OS build version. For example: 1909.
    osBuildNumber?: NullableOption<string>;
    /**
     * The ID of the source image resource on Azure. Required format:
     * '/subscriptions/{subscription-id}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/images/{imageName}'.
     */
    sourceImageResourceId?: NullableOption<string>;
    // The status of the image on Cloud PC. Possible values are: pending, ready, failed.
    status?: NullableOption<CloudPcDeviceImageStatus>;
    /**
     * The details of the image's status, which indicates why the upload failed, if applicable. Possible values are:
     * internalServerError, sourceImageNotFound, osVersionNotSupported, and sourceImageInvalid.
     */
    statusDetails?: NullableOption<CloudPcDeviceImageStatusDetails>;
    // The image version. For example: 0.0.1, 1.5.13.
    version?: NullableOption<string>;
}
export interface CloudPcOnPremisesConnection extends Entity {
    // The fully qualified domain name (FQDN) of the Active Directory domain you want to join.
    adDomainName?: string;
    // The password associated with adDomainUsername.
    adDomainPassword?: NullableOption<string>;
    /**
     * The username of an Active Directory account (user or service account) that has permissions to create computer objects
     * in Active Directory. Required format: admin@contoso.com.
     */
    adDomainUsername?: string;
    // The display name for the on-premises connection.
    displayName?: string;
    /**
     * The status of the most recent health check done on the on-premises connection. For example, if status is 'passed', the
     * on-premises connection has passed all checks run by the service. Possible values are: pending, running, passed, failed,
     * unknownFutureValue. Read-only.
     */
    healthCheckStatus?: CloudPcOnPremisesConnectionStatus;
    /**
     * The details of the connection's health checks and the corresponding results. Returned only on $select.For an example
     * that shows how to get the inUse property, see Example 2: Get the selected properties of an on-premises connection,
     * including healthCheckStatusDetails. Read-only.
     */
    healthCheckStatusDetails?: NullableOption<CloudPcOnPremisesConnectionStatusDetails>;
    /**
     * When true, the on-premises connection is in use. When false, the connection is not in use. You cannot delete a
     * connection that’s in use. Returned only on $select. For an example that shows how to get the inUse property, see
     * Example 2: Get the selected properties of an on-premises connection, including healthCheckStatusDetails. Read-only.
     */
    inUse?: boolean;
    /**
     * The organizational unit (OU) in which the computer account is created. If left null, the OU that’s configured as the
     * default (a well-known computer object container) in your Active Directory domain (OU) is used. Optional.
     */
    organizationalUnit?: NullableOption<string>;
    /**
     * The ID of the target resource group. Required format:
     * '/subscriptions/{subscription-id}/resourceGroups/{resourceGroupName}'.
     */
    resourceGroupId?: string;
    /**
     * The ID of the target subnet. Required format:
     * '/subscriptions/{subscription-id}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkId}/subnets/{subnetName}'.
     */
    subnetId?: string;
    // The ID of the target Azure subscription that’s associated with your tenant.
    subscriptionId?: string;
    // The name of the target Azure subscription. Read-only.
    subscriptionName?: NullableOption<string>;
    /**
     * The ID of the target virtual network. Required format:
     * '/subscriptions/{subscription-id}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}'.
     */
    virtualNetworkId?: string;
}
export interface CloudPcProvisioningPolicy extends Entity {
    // The provisioning policy description.
    description?: NullableOption<string>;
    // The display name for the provisioning policy.
    displayName?: NullableOption<string>;
    // The display name for the OS image you’re provisioning.
    imageDisplayName?: NullableOption<string>;
    /**
     * The ID of the OS image you want to provision on Cloud PCs. The format for a gallery type image is:
     * {publisher_offer_sku}.
     */
    imageId?: NullableOption<string>;
    // The type of OS image (custom or gallery) you want to provision on Cloud PCs. Possible values are: gallery, custom.
    imageType?: CloudPcProvisioningPolicyImageType;
    /**
     * The ID of the cloudPcOnPremisesConnection. To ensure that Cloud PCs have network connectivity and that they domain
     * join, choose a connection with a virtual network that’s validated by the Cloud PC service.
     */
    onPremisesConnectionId?: NullableOption<string>;
    /**
     * A defined collection of provisioning policy assignments. Represents the set of Microsoft 365 groups and security groups
     * in Azure AD that have provisioning policy assigned. Returned only on $expand. See an example of getting the assignments
     * relationship.
     */
    assignments?: NullableOption<CloudPcProvisioningPolicyAssignment[]>;
}
export interface CloudPcProvisioningPolicyAssignment extends Entity {
    /**
     * The assignment target for the provisioning policy. Currently, the only target supported for this policy is a user
     * group. For details, see cloudPcManagementGroupAssignmentTarget.
     */
    target?: NullableOption<CloudPcManagementAssignmentTarget>;
}
export interface CloudPcUserSetting extends Entity {
    /**
     * The date and time the setting was created. The Timestamp type represents the date and time information using ISO 8601
     * format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 looks like this: '2014-01-01T00:00:00Z'.
     */
    createdDateTime?: NullableOption<string>;
    // The setting name displayed in the user interface.
    displayName?: NullableOption<string>;
    /**
     * The last date and time the setting was modified. The Timestamp type represents the date and time information using ISO
     * 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 looks like
     * this: '2014-01-01T00:00:00Z'.
     */
    lastModifiedDateTime?: NullableOption<string>;
    /**
     * Indicates whether the local admin option is enabled. Default value is false. To enable the local admin option, change
     * the setting to true. If the local admin option is enabled, the end user can be an admin of the Cloud PC device.
     */
    localAdminEnabled?: NullableOption<boolean>;
    /**
     * Indicates whether the self-service option is enabled. Default value is false. To enable the self-service option, change
     * the setting to true If the self-service option is enabled, the end user is allowed to perform some self-service
     * operations, such as upgrading the Cloud PC through the end user portal.
     */
    selfServiceEnabled?: NullableOption<boolean>;
    /**
     * Represents the set of Microsoft 365 groups and security groups in Azure AD that have cloudPCUserSetting assigned.
     * Returned only on $expand. For an example, see Get cloudPcUserSettingample.
     */
    assignments?: NullableOption<CloudPcUserSettingAssignment[]>;
}
export interface CloudPcUserSettingAssignment extends Entity {
    /**
     * The date and time this assignment was created. The Timestamp type represents the date and time information using ISO
     * 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 looks like this:
     * '2014-01-01T00:00:00Z'.
     */
    createdDateTime?: NullableOption<string>;
    /**
     * The assignment target for the user setting. Currently, the only target supported for this user setting is a user group.
     * For details, see cloudPcManagementGroupAssignmentTarget.
     */
    target?: NullableOption<CloudPcManagementAssignmentTarget>;
}
export interface DeviceManagement extends Entity {
    // The last requested time of device compliance reporting for this account. This property is read-only.
    deviceComplianceReportSummarizationDateTime?: string;
    // Intune Account ID for given tenant
    intuneAccountId?: string;
    // The last modified time of reporting for this account. This property is read-only.
    lastReportAggregationDateTime?: string;
    // The property to enable Non-MDM managed legacy PC management for this account. This property is read-only.
    legacyPcManangementEnabled?: boolean;
    // Maximum number of DEP tokens allowed per-tenant.
    maximumDepTokens?: number;
    // Account level settings.
    settings?: NullableOption<DeviceManagementSettings>;
    /**
     * When enabled, users assigned as administrators via Role Assignment Memberships do not require an assigned Intune
     * license. Prior to this, only Intune licensed users were granted permissions with an Intune role unless they were
     * assigned a role via Azure Active Directory. You are limited to 350 unlicensed direct members for each AAD security
     * group in a role assignment, but you can assign multiple AAD security groups to a role if you need to support more than
     * 350 unlicensed administrators. Licensed administrators are unaffected, do not have to be direct members, nor does the
     * 350 member limit apply. This property is read-only.
     */
    unlicensedAdminstratorsEnabled?: boolean;
    /**
     * intuneBrand contains data which is used in customizing the appearance of the Company Portal applications as well as the
     * end user web portal.
     */
    intuneBrand?: NullableOption<IntuneBrand>;
    // The date &amp; time when tenant data moved between scaleunits.
    accountMoveCompletionDateTime?: string;
    // Admin consent information.
    adminConsent?: NullableOption<AdminConsent>;
    // Device protection overview.
    deviceProtectionOverview?: NullableOption<DeviceProtectionOverview>;
    // Device cleanup rule
    managedDeviceCleanupSettings?: NullableOption<ManagedDeviceCleanupSettings>;
    // Tenant's Subscription. Possible values are: none, intune, office365, intunePremium, intune_EDU, intune_SMB.
    subscriptions?: DeviceManagementSubscriptions;
    /**
     * Tenant mobile device management subscription state. Possible values are: pending, active, warning, disabled, deleted,
     * blocked, lockedOut.
     */
    subscriptionState?: DeviceManagementSubscriptionState;
    // User experience analytics device settings
    userExperienceAnalyticsSettings?: NullableOption<UserExperienceAnalyticsSettings>;
    // Malware overview for windows devices.
    windowsMalwareOverview?: NullableOption<WindowsMalwareOverview>;
    // Android device owner enrollment profile entities.
    androidDeviceOwnerEnrollmentProfiles?: NullableOption<AndroidDeviceOwnerEnrollmentProfile[]>;
    virtualEndpoint?: NullableOption<VirtualEndpoint>;
    // Android for Work app configuration schema entities.
    androidForWorkAppConfigurationSchemas?: NullableOption<AndroidForWorkAppConfigurationSchema[]>;
    // Android for Work enrollment profile entities.
    androidForWorkEnrollmentProfiles?: NullableOption<AndroidForWorkEnrollmentProfile[]>;
    // The singleton Android for Work settings entity.
    androidForWorkSettings?: NullableOption<AndroidForWorkSettings>;
    // The singleton Android managed store account enterprise settings entity.
    androidManagedStoreAccountEnterpriseSettings?: NullableOption<AndroidManagedStoreAccountEnterpriseSettings>;
    // Android Enterprise app configuration schema entities.
    androidManagedStoreAppConfigurationSchemas?: NullableOption<AndroidManagedStoreAppConfigurationSchema[]>;
    // The Audit Events
    auditEvents?: NullableOption<AuditEvent[]>;
    // The list of assignment filters
    assignmentFilters?: NullableOption<DeviceAndAppManagementAssignmentFilter[]>;
    // Collection of ChromeOSOnboardingSettings settings associated with account.
    chromeOSOnboardingSettings?: NullableOption<ChromeOSOnboardingSettings[]>;
    // The terms and conditions associated with device management of the company.
    termsAndConditions?: NullableOption<TermsAndConditions[]>;
    // The summary state of ATP onboarding state for this account.
    advancedThreatProtectionOnboardingStateSummary?: NullableOption<AdvancedThreatProtectionOnboardingStateSummary>;
    // The Cart To Class Associations.
    cartToClassAssociations?: NullableOption<CartToClassAssociation[]>;
    // The device compliance policies.
    deviceCompliancePolicies?: NullableOption<DeviceCompliancePolicy[]>;
    // The device compliance state summary for this account.
    deviceCompliancePolicyDeviceStateSummary?: NullableOption<DeviceCompliancePolicyDeviceStateSummary>;
    // The summary states of compliance policy settings for this account.
    deviceCompliancePolicySettingStateSummaries?: NullableOption<DeviceCompliancePolicySettingStateSummary[]>;
    // Summary of policies in conflict state for this account.
    deviceConfigurationConflictSummary?: NullableOption<DeviceConfigurationConflictSummary[]>;
    // The device configuration device state summary for this account.
    deviceConfigurationDeviceStateSummaries?: NullableOption<DeviceConfigurationDeviceStateSummary>;
    // Restricted apps violations for this account.
    deviceConfigurationRestrictedAppsViolations?: NullableOption<RestrictedAppsViolation[]>;
    // The device configurations.
    deviceConfigurations?: NullableOption<DeviceConfiguration[]>;
    // Summary of all certificates for all devices.
    deviceConfigurationsAllManagedDeviceCertificateStates?: NullableOption<ManagedAllDeviceCertificateState[]>;
    // The device configuration user state summary for this account.
    deviceConfigurationUserStateSummaries?: NullableOption<DeviceConfigurationUserStateSummary>;
    // The IOS software update installation statuses for this account.
    iosUpdateStatuses?: NullableOption<IosUpdateDeviceStatus[]>;
    // The MacOS software update account summaries for this account.
    macOSSoftwareUpdateAccountSummaries?: NullableOption<MacOSSoftwareUpdateAccountSummary[]>;
    // Encryption report for devices in this account
    managedDeviceEncryptionStates?: NullableOption<ManagedDeviceEncryptionState[]>;
    // The collection of Ndes connectors for this account.
    ndesConnectors?: NullableOption<NdesConnector[]>;
    // The software update status summary.
    softwareUpdateStatusSummary?: NullableOption<SoftwareUpdateStatusSummary>;
    // List of all Configuration Categories
    configurationCategories?: NullableOption<DeviceManagementConfigurationCategory[]>;
    // List of all Configuration policies
    configurationPolicies?: NullableOption<DeviceManagementConfigurationPolicy[]>;
    // List of all templates
    configurationPolicyTemplates?: NullableOption<DeviceManagementConfigurationPolicyTemplate[]>;
    // List of all ConfigurationSettings
    configurationSettings?: NullableOption<DeviceManagementConfigurationSettingDefinition[]>;
    // List of all reusable settings that can be referred in a policy
    reusablePolicySettings?: NullableOption<DeviceManagementReusablePolicySetting[]>;
    // List of all reusable settings
    reusableSettings?: NullableOption<DeviceManagementConfigurationSettingDefinition[]>;
    // List of all TemplateSettings
    templateSettings?: NullableOption<DeviceManagementConfigurationSettingTemplate[]>;
    // The list of Compliance Management Partners configured by the tenant.
    complianceManagementPartners?: NullableOption<ComplianceManagementPartner[]>;
    /**
     * The Exchange on premises conditional access settings. On premises conditional access will require devices to be both
     * enrolled and compliant for mail access
     */
    conditionalAccessSettings?: NullableOption<OnPremisesConditionalAccessSettings>;
    // The list of device categories with the tenant.
    deviceCategories?: NullableOption<DeviceCategory[]>;
    // The list of device enrollment configurations
    deviceEnrollmentConfigurations?: NullableOption<DeviceEnrollmentConfiguration[]>;
    // The list of Device Management Partners configured by the tenant.
    deviceManagementPartners?: NullableOption<DeviceManagementPartner[]>;
    // The list of Exchange Connectors configured by the tenant.
    exchangeConnectors?: NullableOption<DeviceManagementExchangeConnector[]>;
    // The list of Exchange On Premisis policies configured by the tenant.
    exchangeOnPremisesPolicies?: NullableOption<DeviceManagementExchangeOnPremisesPolicy[]>;
    // The policy which controls mobile device access to Exchange On Premises
    exchangeOnPremisesPolicy?: NullableOption<DeviceManagementExchangeOnPremisesPolicy>;
    // The list of Mobile threat Defense connectors configured by the tenant.
    mobileThreatDefenseConnectors?: NullableOption<MobileThreatDefenseConnector[]>;
    // The available categories
    categories?: NullableOption<DeviceManagementSettingCategory[]>;
    // The device management intents
    intents?: NullableOption<DeviceManagementIntent[]>;
    // The device management intent setting definitions
    settingDefinitions?: NullableOption<DeviceManagementSettingDefinition[]>;
    // The available templates
    templates?: NullableOption<DeviceManagementTemplate[]>;
    // Apple push notification certificate.
    applePushNotificationCertificate?: NullableOption<ApplePushNotificationCertificate>;
    // The list of CloudPC Connectivity Issue.
    cloudPCConnectivityIssues?: NullableOption<CloudPCConnectivityIssue[]>;
    // The list of co-managed devices report
    comanagedDevices?: NullableOption<ManagedDevice[]>;
    // The list of co-management eligible devices report
    comanagementEligibleDevices?: NullableOption<ComanagementEligibleDevice[]>;
    // Data sharing consents.
    dataSharingConsents?: NullableOption<DataSharingConsent[]>;
    // The list of detected apps associated with a device.
    detectedApps?: NullableOption<DetectedApp[]>;
    // The list of device compliance scripts associated with the tenant.
    deviceComplianceScripts?: NullableOption<DeviceComplianceScript[]>;
    // The list of device custom attribute shell scripts associated with the tenant.
    deviceCustomAttributeShellScripts?: NullableOption<DeviceCustomAttributeShellScript[]>;
    // The list of device health scripts associated with the tenant.
    deviceHealthScripts?: NullableOption<DeviceHealthScript[]>;
    // The list of device management scripts associated with the tenant.
    deviceManagementScripts?: NullableOption<DeviceManagementScript[]>;
    // The list of device shell scripts associated with the tenant.
    deviceShellScripts?: NullableOption<DeviceShellScript[]>;
    // Device overview
    managedDeviceOverview?: NullableOption<ManagedDeviceOverview>;
    // The list of managed devices.
    managedDevices?: NullableOption<ManagedDevice[]>;
    // The collection property of MobileAppTroubleshootingEvent.
    mobileAppTroubleshootingEvents?: NullableOption<MobileAppTroubleshootingEvent[]>;
    // The list of device remote action audits with the tenant.
    remoteActionAudits?: NullableOption<RemoteActionAudit[]>;
    // User experience analytics appHealth Application Performance
    userExperienceAnalyticsAppHealthApplicationPerformance?: NullableOption<UserExperienceAnalyticsAppHealthApplicationPerformance[]>;
    // User experience analytics appHealth Application Performance by App Version
    userExperienceAnalyticsAppHealthApplicationPerformanceByAppVersion?: NullableOption<UserExperienceAnalyticsAppHealthAppPerformanceByAppVersion[]>;
    // User experience analytics appHealth Application Performance by App Version details
    userExperienceAnalyticsAppHealthApplicationPerformanceByAppVersionDetails?: NullableOption<UserExperienceAnalyticsAppHealthAppPerformanceByAppVersionDetails[]>;
    // User experience analytics appHealth Application Performance by App Version Device Id
    userExperienceAnalyticsAppHealthApplicationPerformanceByAppVersionDeviceId?: NullableOption<UserExperienceAnalyticsAppHealthAppPerformanceByAppVersionDeviceId[]>;
    // User experience analytics appHealth Application Performance by OS Version
    userExperienceAnalyticsAppHealthApplicationPerformanceByOSVersion?: NullableOption<UserExperienceAnalyticsAppHealthAppPerformanceByOSVersion[]>;
    // User experience analytics appHealth Model Performance
    userExperienceAnalyticsAppHealthDeviceModelPerformance?: NullableOption<UserExperienceAnalyticsAppHealthDeviceModelPerformance[]>;
    // User experience analytics appHealth Device Performance
    userExperienceAnalyticsAppHealthDevicePerformance?: NullableOption<UserExperienceAnalyticsAppHealthDevicePerformance[]>;
    // User experience analytics device performance details
    userExperienceAnalyticsAppHealthDevicePerformanceDetails?: NullableOption<UserExperienceAnalyticsAppHealthDevicePerformanceDetails[]>;
    // User experience analytics appHealth OS version Performance
    userExperienceAnalyticsAppHealthOSVersionPerformance?: NullableOption<UserExperienceAnalyticsAppHealthOSVersionPerformance[]>;
    // User experience analytics appHealth overview
    userExperienceAnalyticsAppHealthOverview?: NullableOption<UserExperienceAnalyticsCategory>;
    // User experience analytics baselines
    userExperienceAnalyticsBaselines?: NullableOption<UserExperienceAnalyticsBaseline[]>;
    // User experience analytics categories
    userExperienceAnalyticsCategories?: NullableOption<UserExperienceAnalyticsCategory[]>;
    // User experience analytics device metric history
    userExperienceAnalyticsDeviceMetricHistory?: NullableOption<UserExperienceAnalyticsMetricHistory[]>;
    // User experience analytics device performance
    userExperienceAnalyticsDevicePerformance?: NullableOption<UserExperienceAnalyticsDevicePerformance[]>;
    // User experience analytics device scores
    userExperienceAnalyticsDeviceScores?: NullableOption<UserExperienceAnalyticsDeviceScores[]>;
    // User experience analytics device Startup History
    userExperienceAnalyticsDeviceStartupHistory?: NullableOption<UserExperienceAnalyticsDeviceStartupHistory[]>;
    // User experience analytics device Startup Processes
    userExperienceAnalyticsDeviceStartupProcesses?: NullableOption<UserExperienceAnalyticsDeviceStartupProcess[]>;
    // User experience analytics device Startup Process Performance
    userExperienceAnalyticsDeviceStartupProcessPerformance?: NullableOption<UserExperienceAnalyticsDeviceStartupProcessPerformance[]>;
    // User experience analytics devices without cloud identity.
    userExperienceAnalyticsDevicesWithoutCloudIdentity?: NullableOption<UserExperienceAnalyticsDeviceWithoutCloudIdentity[]>;
    // User experience analytics impacting process
    userExperienceAnalyticsImpactingProcess?: NullableOption<UserExperienceAnalyticsImpactingProcess[]>;
    // User experience analytics metric history
    userExperienceAnalyticsMetricHistory?: NullableOption<UserExperienceAnalyticsMetricHistory[]>;
    // User experience analytics devices not Windows Autopilot ready.
    userExperienceAnalyticsNotAutopilotReadyDevice?: NullableOption<UserExperienceAnalyticsNotAutopilotReadyDevice[]>;
    // User experience analytics overview
    userExperienceAnalyticsOverview?: NullableOption<UserExperienceAnalyticsOverview>;
    // User experience analytics regression summary
    userExperienceAnalyticsRegressionSummary?: NullableOption<UserExperienceAnalyticsRegressionSummary>;
    // User experience analytics remote connection
    userExperienceAnalyticsRemoteConnection?: NullableOption<UserExperienceAnalyticsRemoteConnection[]>;
    // User experience analytics resource performance
    userExperienceAnalyticsResourcePerformance?: NullableOption<UserExperienceAnalyticsResourcePerformance[]>;
    // User experience analytics device Startup Score History
    userExperienceAnalyticsScoreHistory?: NullableOption<UserExperienceAnalyticsScoreHistory[]>;
    // User experience analytics work from anywhere hardware readiness metrics.
    userExperienceAnalyticsWorkFromAnywhereHardwareReadinessMetric?: NullableOption<UserExperienceAnalyticsWorkFromAnywhereHardwareReadinessMetric>;
    // User experience analytics work from anywhere metrics.
    userExperienceAnalyticsWorkFromAnywhereMetrics?: NullableOption<UserExperienceAnalyticsWorkFromAnywhereMetric[]>;
    // The list of affected malware in the tenant.
    windowsMalwareInformation?: NullableOption<WindowsMalwareInformation[]>;
    // Collection of Derived credential settings associated with account.
    derivedCredentials?: NullableOption<DeviceManagementDerivedCredentialSettings[]>;
    // Collection of resource access settings associated with account.
    resourceAccessProfiles?: NullableOption<DeviceManagementResourceAccessProfileBase[]>;
    // Apple user initiated enrollment profiles
    appleUserInitiatedEnrollmentProfiles?: NullableOption<AppleUserInitiatedEnrollmentProfile[]>;
    // This collections of multiple DEP tokens per-tenant.
    depOnboardingSettings?: NullableOption<DepOnboardingSetting[]>;
    // The imported device identities.
    importedDeviceIdentities?: NullableOption<ImportedDeviceIdentity[]>;
    // Collection of imported Windows autopilot devices.
    importedWindowsAutopilotDeviceIdentities?: NullableOption<ImportedWindowsAutopilotDeviceIdentity[]>;
    // Windows auto pilot deployment profiles
    windowsAutopilotDeploymentProfiles?: NullableOption<WindowsAutopilotDeploymentProfile[]>;
    // The Windows autopilot device identities contained collection.
    windowsAutopilotDeviceIdentities?: NullableOption<WindowsAutopilotDeviceIdentity[]>;
    // The Windows autopilot account settings.
    windowsAutopilotSettings?: NullableOption<WindowsAutopilotSettings>;
    // The management conditions associated with device management of the company.
    managementConditions?: NullableOption<ManagementCondition[]>;
    // The management condition statements associated with device management of the company.
    managementConditionStatements?: NullableOption<ManagementConditionStatement[]>;
    // A list of Group Policy migration reports.
    groupPolicyMigrationReports?: NullableOption<GroupPolicyMigrationReport[]>;
    // A list of Group Policy Object files uploaded.
    groupPolicyObjectFiles?: NullableOption<GroupPolicyObjectFile[]>;
    // The available group policy categories for this account.
    groupPolicyCategories?: NullableOption<GroupPolicyCategory[]>;
    // The group policy configurations created by this account.
    groupPolicyConfigurations?: NullableOption<GroupPolicyConfiguration[]>;
    // The available group policy definition files for this account.
    groupPolicyDefinitionFiles?: NullableOption<GroupPolicyDefinitionFile[]>;
    // The available group policy definitions for this account.
    groupPolicyDefinitions?: NullableOption<GroupPolicyDefinition[]>;
    // The available group policy uploaded definition files for this account.
    groupPolicyUploadedDefinitionFiles?: NullableOption<GroupPolicyUploadedDefinitionFile[]>;
    // Collection of MicrosoftTunnelConfiguration settings associated with account.
    microsoftTunnelConfigurations?: NullableOption<MicrosoftTunnelConfiguration[]>;
    // Collection of MicrosoftTunnelHealthThreshold settings associated with account.
    microsoftTunnelHealthThresholds?: NullableOption<MicrosoftTunnelHealthThreshold[]>;
    // Collection of MicrosoftTunnelServerLogCollectionResponse settings associated with account.
    microsoftTunnelServerLogCollectionResponses?: NullableOption<MicrosoftTunnelServerLogCollectionResponse[]>;
    // Collection of MicrosoftTunnelSite settings associated with account.
    microsoftTunnelSites?: NullableOption<MicrosoftTunnelSite[]>;
    // The Notification Message Templates.
    notificationMessageTemplates?: NullableOption<NotificationMessageTemplate[]>;
    // A list of connector objects.
    domainJoinConnectors?: NullableOption<DeviceManagementDomainJoinConnector[]>;
    // A list of ConfigManagerCollection
    configManagerCollections?: NullableOption<ConfigManagerCollection[]>;
    // The Resource Operations.
    resourceOperations?: NullableOption<ResourceOperation[]>;
    // The Role Assignments.
    roleAssignments?: NullableOption<DeviceAndAppManagementRoleAssignment[]>;
    // The Role Definitions.
    roleDefinitions?: NullableOption<RoleDefinition[]>;
    // The Role Scope Tags.
    roleScopeTags?: NullableOption<RoleScopeTag[]>;
    // The remote assist partners.
    remoteAssistancePartners?: NullableOption<RemoteAssistancePartner[]>;
    // The remote assistance settings singleton
    remoteAssistanceSettings?: NullableOption<RemoteAssistanceSettings>;
    // Reports singleton
    reports?: NullableOption<DeviceManagementReports>;
    // The embedded SIM activation code pools created by this account.
    embeddedSIMActivationCodePools?: NullableOption<EmbeddedSIMActivationCodePool[]>;
    // The telecom expense management partners.
    telecomExpenseManagementPartners?: NullableOption<TelecomExpenseManagementPartner[]>;
    // The list of autopilot events for the tenant.
    autopilotEvents?: NullableOption<DeviceManagementAutopilotEvent[]>;
    // The list of troubleshooting events for the tenant.
    troubleshootingEvents?: NullableOption<DeviceManagementTroubleshootingEvent[]>;
    // A collection of windows feature update profiles
    windowsFeatureUpdateProfiles?: NullableOption<WindowsFeatureUpdateProfile[]>;
    // A collection of windows quality update profiles
    windowsQualityUpdateProfiles?: NullableOption<WindowsQualityUpdateProfile[]>;
    // A collection of windows update catalog items (fetaure updates item , quality updates item)
    windowsUpdateCatalogItems?: NullableOption<WindowsUpdateCatalogItem[]>;
    // Intune branding profiles targeted to AAD groups
    intuneBrandingProfiles?: NullableOption<IntuneBrandingProfile[]>;
    // The windows information protection app learning summaries.
    windowsInformationProtectionAppLearningSummaries?: NullableOption<WindowsInformationProtectionAppLearningSummary[]>;
    // The windows information protection network learning summaries.
    windowsInformationProtectionNetworkLearningSummaries?: NullableOption<WindowsInformationProtectionNetworkLearningSummary[]>;
    // Collection of PFX certificates associated with a user.
    userPfxCertificates?: NullableOption<UserPFXCertificate[]>;
}
export interface AndroidDeviceOwnerEnrollmentProfile extends Entity {
    // Tenant GUID the enrollment profile belongs to.
    accountId?: NullableOption<string>;
    // Date time the enrollment profile was created.
    createdDateTime?: string;
    // Description for the enrollment profile.
    description?: NullableOption<string>;
    // Display name for the enrollment profile.
    displayName?: NullableOption<string>;
    // Total number of Android devices that have enrolled using this enrollment profile.
    enrolledDeviceCount?: number;
    /**
     * The enrollment mode of devices that use this enrollment profile. Possible values are: corporateOwnedDedicatedDevice,
     * corporateOwnedFullyManaged, corporateOwnedWorkProfile.
     */
    enrollmentMode?: AndroidDeviceOwnerEnrollmentMode;
    /**
     * The enrollment token type for an enrollment profile. Possible values are: default,
     * corporateOwnedDedicatedDeviceWithAzureADSharedMode.
     */
    enrollmentTokenType?: AndroidDeviceOwnerEnrollmentTokenType;
    // Date time the enrollment profile was last modified.
    lastModifiedDateTime?: string;
    // String used to generate a QR code for the token.
    qrCodeContent?: NullableOption<string>;
    // String used to generate a QR code for the token.
    qrCodeImage?: NullableOption<MimeContent>;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // Date time the most recently created token was created.
    tokenCreationDateTime?: string;
    // Date time the most recently created token will expire.
    tokenExpirationDateTime?: string;
    // Value of the most recently created token for this enrollment profile.
    tokenValue?: NullableOption<string>;
}
export interface VirtualEndpoint extends Entity {
    // Cloud PC audit event.
    auditEvents?: NullableOption<CloudPcAuditEvent[]>;
    // Cloud managed virtual desktops.
    cloudPCs?: NullableOption<CloudPC[]>;
    // The image resource on Cloud PC.
    deviceImages?: NullableOption<CloudPcDeviceImage[]>;
    /**
     * A defined collection of Azure resource information that can be used to establish on-premises network connectivity for
     * Cloud PCs.
     */
    onPremisesConnections?: NullableOption<CloudPcOnPremisesConnection[]>;
    // Cloud PC provisioning policy.
    provisioningPolicies?: NullableOption<CloudPcProvisioningPolicy[]>;
    // Cloud PC user settings.
    userSettings?: NullableOption<CloudPcUserSetting[]>;
}
export interface AndroidForWorkAppConfigurationSchema extends Entity {
    /**
     * UTF8 encoded byte array containing example JSON string conforming to this schema that demonstrates how to set the
     * configuration for this app
     */
    exampleJson?: NullableOption<number>;
    // Collection of items each representing a named configuration option in the schema
    schemaItems?: NullableOption<AndroidForWorkAppConfigurationSchemaItem[]>;
}
export interface AndroidForWorkEnrollmentProfile extends Entity {
    // Tenant GUID the enrollment profile belongs to.
    accountId?: NullableOption<string>;
    // Date time the enrollment profile was created.
    createdDateTime?: string;
    // Description for the enrollment profile.
    description?: NullableOption<string>;
    // Display name for the enrollment profile.
    displayName?: NullableOption<string>;
    // Total number of Android devices that have enrolled using this enrollment profile.
    enrolledDeviceCount?: number;
    // Date time the enrollment profile was last modified.
    lastModifiedDateTime?: string;
    // String used to generate a QR code for the token.
    qrCodeContent?: NullableOption<string>;
    // String used to generate a QR code for the token.
    qrCodeImage?: NullableOption<MimeContent>;
    // Date time the most recently created token will expire.
    tokenExpirationDateTime?: string;
    // Value of the most recently created token for this enrollment profile.
    tokenValue?: NullableOption<string>;
}
export interface AndroidForWorkSettings extends Entity {
    // Bind status of the tenant with the Google EMM API. Possible values are: notBound, bound, boundAndValidated, unbinding.
    bindStatus?: AndroidForWorkBindStatus;
    // Indicates if this account is flighting for Android Device Owner Management with CloudDPC.
    deviceOwnerManagementEnabled?: boolean;
    /**
     * Indicates which users can enroll devices in Android for Work device management. Possible values are: none, all,
     * targeted, targetedAsEnrollmentRestrictions.
     */
    enrollmentTarget?: AndroidForWorkEnrollmentTarget;
    // Last completion time for app sync
    lastAppSyncDateTime?: NullableOption<string>;
    /**
     * Last application sync result. Possible values are: success, credentialsNotValid, androidForWorkApiError,
     * managementServiceError, unknownError, none.
     */
    lastAppSyncStatus?: AndroidForWorkSyncStatus;
    // Last modification time for Android for Work settings
    lastModifiedDateTime?: NullableOption<string>;
    // Organization name used when onboarding Android for Work
    ownerOrganizationName?: NullableOption<string>;
    // Owner UPN that created the enterprise
    ownerUserPrincipalName?: NullableOption<string>;
    /**
     * Specifies which AAD groups can enroll devices in Android for Work device management if enrollmentTarget is set to
     * 'Targeted'
     */
    targetGroupIds?: NullableOption<string[]>;
}
export interface AndroidManagedStoreAccountEnterpriseSettings extends Entity {
    // Company codes for AndroidManagedStoreAccountEnterpriseSettings
    androidDeviceOwnerFullyManagedEnrollmentEnabled?: boolean;
    // Bind status of the tenant with the Google EMM API. Possible values are: notBound, bound, boundAndValidated, unbinding.
    bindStatus?: AndroidManagedStoreAccountBindStatus;
    // Company codes for AndroidManagedStoreAccountEnterpriseSettings
    companyCodes?: NullableOption<AndroidEnrollmentCompanyCode[]>;
    // Indicates if this account is flighting for Android Device Owner Management with CloudDPC.
    deviceOwnerManagementEnabled?: boolean;
    /**
     * Indicates which users can enroll devices in Android Enterprise device management. Possible values are: none, all,
     * targeted, targetedAsEnrollmentRestrictions.
     */
    enrollmentTarget?: AndroidManagedStoreAccountEnrollmentTarget;
    // Last completion time for app sync
    lastAppSyncDateTime?: NullableOption<string>;
    /**
     * Last application sync result. Possible values are: success, credentialsNotValid, androidForWorkApiError,
     * managementServiceError, unknownError, none.
     */
    lastAppSyncStatus?: AndroidManagedStoreAccountAppSyncStatus;
    // Last modification time for Android enterprise settings
    lastModifiedDateTime?: NullableOption<string>;
    // Initial scope tags for MGP apps
    managedGooglePlayInitialScopeTagIds?: NullableOption<string[]>;
    // Organization name used when onboarding Android Enterprise
    ownerOrganizationName?: NullableOption<string>;
    // Owner UPN that created the enterprise
    ownerUserPrincipalName?: NullableOption<string>;
    /**
     * Specifies which AAD groups can enroll devices in Android for Work device management if enrollmentTarget is set to
     * 'Targeted'
     */
    targetGroupIds?: NullableOption<string[]>;
}
export interface AndroidManagedStoreAppConfigurationSchema extends Entity {
    /**
     * UTF8 encoded byte array containing example JSON string conforming to this schema that demonstrates how to set the
     * configuration for this app
     */
    exampleJson?: NullableOption<number>;
    /**
     * Collection of items each representing a named configuration option in the schema. It contains a flat list of all
     * configuration.
     */
    nestedSchemaItems?: NullableOption<AndroidManagedStoreAppConfigurationSchemaItem[]>;
    /**
     * Collection of items each representing a named configuration option in the schema. It only contains the root-level
     * configuration.
     */
    schemaItems?: NullableOption<AndroidManagedStoreAppConfigurationSchemaItem[]>;
}
export interface AuditEvent extends Entity {
    // Friendly name of the activity.
    activity?: NullableOption<string>;
    // The date time in UTC when the activity was performed.
    activityDateTime?: string;
    // The HTTP operation type of the activity.
    activityOperationType?: NullableOption<string>;
    // The result of the activity.
    activityResult?: NullableOption<string>;
    // The type of activity that was being performed.
    activityType?: NullableOption<string>;
    // AAD user and application that are associated with the audit event.
    actor?: NullableOption<AuditActor>;
    // Audit category.
    category?: NullableOption<string>;
    // Component name.
    componentName?: NullableOption<string>;
    // The client request Id that is used to correlate activity within the system.
    correlationId?: string;
    // Event display name.
    displayName?: NullableOption<string>;
    // Resources being modified.
    resources?: NullableOption<AuditResource[]>;
}
export interface DeviceAndAppManagementAssignmentFilter extends Entity {
    // Creation time of the Assignment Filter.
    createdDateTime?: string;
    // Description of the Assignment Filter.
    description?: NullableOption<string>;
    // DisplayName of the Assignment Filter.
    displayName?: string;
    // Last modified time of the Assignment Filter.
    lastModifiedDateTime?: string;
    /**
     * Platform type of the devices on which the Assignment Filter will be applicable. Possible values are: android,
     * androidForWork, iOS, macOS, windowsPhone81, windows81AndLater, windows10AndLater, androidWorkProfile, unknown.
     */
    platform?: DevicePlatformType;
    // RoleScopeTags of the Assignment Filter.
    roleScopeTags?: NullableOption<string[]>;
    // Rule definition of the Assignment Filter.
    rule?: string;
}
export interface ChromeOSOnboardingSettings extends Entity {
    // The ChromebookTenant's LastDirectorySyncDateTime
    lastDirectorySyncDateTime?: NullableOption<string>;
    // The ChromebookTenant's LastModifiedDateTime
    lastModifiedDateTime?: string;
    // The ChromebookTenant's OnboardingStatus. Possible values are: unknown, inprogress, onboarded, failed.
    onboardingStatus?: OnboardingStatus;
    // The ChromebookTenant's OwnerUserPrincipalName
    ownerUserPrincipalName?: NullableOption<string>;
}
export interface TermsAndConditions extends Entity {
    /**
     * Administrator-supplied explanation of the terms and conditions, typically describing what it means to accept the terms
     * and conditions set out in the T&amp;C policy. This is shown to the user on prompts to accept the T&amp;C policy.
     */
    acceptanceStatement?: NullableOption<string>;
    /**
     * Administrator-supplied body text of the terms and conditions, typically the terms themselves. This is shown to the user
     * on prompts to accept the T&amp;C policy.
     */
    bodyText?: NullableOption<string>;
    // DateTime the object was created.
    createdDateTime?: string;
    // Administrator-supplied description of the T&amp;C policy.
    description?: NullableOption<string>;
    // Administrator-supplied name for the T&amp;C policy.
    displayName?: string;
    // DateTime the object was last modified.
    lastModifiedDateTime?: string;
    // DateTime the object was last modified.
    modifiedDateTime?: string;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    /**
     * Administrator-supplied title of the terms and conditions. This is shown to the user on prompts to accept the T&amp;C
     * policy.
     */
    title?: NullableOption<string>;
    /**
     * Integer indicating the current version of the terms. Incremented when an administrator makes a change to the terms and
     * wishes to require users to re-accept the modified T&amp;C policy.
     */
    version?: number;
    // The list of acceptance statuses for this T&amp;C policy.
    acceptanceStatuses?: NullableOption<TermsAndConditionsAcceptanceStatus[]>;
    // The list of assignments for this T&amp;C policy.
    assignments?: NullableOption<TermsAndConditionsAssignment[]>;
    // The list of group assignments for this T&amp;C policy.
    groupAssignments?: NullableOption<TermsAndConditionsGroupAssignment[]>;
}
export interface AdvancedThreatProtectionOnboardingStateSummary extends Entity {
    // Number of compliant devices
    compliantDeviceCount?: number;
    // Number of conflict devices
    conflictDeviceCount?: number;
    // Number of error devices
    errorDeviceCount?: number;
    // Number of NonCompliant devices
    nonCompliantDeviceCount?: number;
    // Number of not applicable devices
    notApplicableDeviceCount?: number;
    // Number of not assigned devices
    notAssignedDeviceCount?: number;
    // Number of remediated devices
    remediatedDeviceCount?: number;
    // Number of unknown devices
    unknownDeviceCount?: number;
    // Not yet documented
    advancedThreatProtectionOnboardingDeviceSettingStates?: NullableOption<AdvancedThreatProtectionOnboardingDeviceSettingState[]>;
}
export interface CartToClassAssociation extends Entity {
    // Identifiers of classrooms to be associated with device carts.
    classroomIds?: NullableOption<string[]>;
    // DateTime the object was created.
    createdDateTime?: string;
    // Admin provided description of the CartToClassAssociation.
    description?: NullableOption<string>;
    // Identifiers of device carts to be associated with classes.
    deviceCartIds?: NullableOption<string[]>;
    // Admin provided name of the device configuration.
    displayName?: NullableOption<string>;
    // DateTime the object was last modified.
    lastModifiedDateTime?: string;
    // Version of the CartToClassAssociation.
    version?: number;
}
export interface DeviceCompliancePolicy extends Entity {
    // DateTime the object was created.
    createdDateTime?: string;
    // Admin provided description of the Device Configuration.
    description?: NullableOption<string>;
    // Admin provided name of the device configuration.
    displayName?: string;
    // DateTime the object was last modified.
    lastModifiedDateTime?: string;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // Version of the device configuration.
    version?: number;
    // The collection of assignments for this compliance policy.
    assignments?: NullableOption<DeviceCompliancePolicyAssignment[]>;
    // Compliance Setting State Device Summary
    deviceSettingStateSummaries?: NullableOption<SettingStateDeviceSummary[]>;
    // List of DeviceComplianceDeviceStatus.
    deviceStatuses?: NullableOption<DeviceComplianceDeviceStatus[]>;
    // Device compliance devices status overview
    deviceStatusOverview?: NullableOption<DeviceComplianceDeviceOverview>;
    // The list of scheduled action for this rule
    scheduledActionsForRule?: NullableOption<DeviceComplianceScheduledActionForRule[]>;
    // List of DeviceComplianceUserStatus.
    userStatuses?: NullableOption<DeviceComplianceUserStatus[]>;
    // Device compliance users status overview
    userStatusOverview?: NullableOption<DeviceComplianceUserOverview>;
}
export interface DeviceCompliancePolicyDeviceStateSummary extends Entity {
    // Number of compliant devices
    compliantDeviceCount?: number;
    // Number of devices that have compliance managed by System Center Configuration Manager
    configManagerCount?: number;
    // Number of conflict devices
    conflictDeviceCount?: number;
    // Number of error devices
    errorDeviceCount?: number;
    // Number of devices that are in grace period
    inGracePeriodCount?: number;
    // Number of NonCompliant devices
    nonCompliantDeviceCount?: number;
    // Number of not applicable devices
    notApplicableDeviceCount?: number;
    // Number of remediated devices
    remediatedDeviceCount?: number;
    // Number of unknown devices
    unknownDeviceCount?: number;
}
export interface DeviceCompliancePolicySettingStateSummary extends Entity {
    // Number of compliant devices
    compliantDeviceCount?: number;
    // Number of conflict devices
    conflictDeviceCount?: number;
    // Number of error devices
    errorDeviceCount?: number;
    // Number of NonCompliant devices
    nonCompliantDeviceCount?: number;
    // Number of not applicable devices
    notApplicableDeviceCount?: number;
    /**
     * Setting platform. Possible values are: android, androidForWork, iOS, macOS, windowsPhone81, windows81AndLater,
     * windows10AndLater, androidWorkProfile, windows10XProfile, androidAOSP, all.
     */
    platformType?: PolicyPlatformType;
    // Number of remediated devices
    remediatedDeviceCount?: number;
    // The setting class name and property name.
    setting?: NullableOption<string>;
    // Name of the setting.
    settingName?: NullableOption<string>;
    // Number of unknown devices
    unknownDeviceCount?: number;
    // Not yet documented
    deviceComplianceSettingStates?: NullableOption<DeviceComplianceSettingState[]>;
}
export interface DeviceConfigurationConflictSummary extends Entity {
    // The set of policies in conflict with the given setting
    conflictingDeviceConfigurations?: NullableOption<SettingSource[]>;
    // The set of settings in conflict with the given policies
    contributingSettings?: NullableOption<string[]>;
    // The count of checkins impacted by the conflicting policies and settings
    deviceCheckinsImpacted?: number;
}
export interface DeviceConfigurationDeviceStateSummary extends Entity {
    // Number of compliant devices
    compliantDeviceCount?: number;
    // Number of conflict devices
    conflictDeviceCount?: number;
    // Number of error devices
    errorDeviceCount?: number;
    // Number of NonCompliant devices
    nonCompliantDeviceCount?: number;
    // Number of not applicable devices
    notApplicableDeviceCount?: number;
    // Number of remediated devices
    remediatedDeviceCount?: number;
    // Number of unknown devices
    unknownDeviceCount?: number;
}
export interface RestrictedAppsViolation extends Entity {
    // Device configuration profile unique identifier, must be Guid
    deviceConfigurationId?: string;
    // Device configuration profile name
    deviceConfigurationName?: NullableOption<string>;
    // Device name
    deviceName?: NullableOption<string>;
    // Managed device unique identifier, must be Guid
    managedDeviceId?: string;
    /**
     * Platform type. Possible values are: android, androidForWork, iOS, macOS, windowsPhone81, windows81AndLater,
     * windows10AndLater, androidWorkProfile, windows10XProfile, androidAOSP, all.
     */
    platformType?: PolicyPlatformType;
    // List of violated restricted apps
    restrictedApps?: ManagedDeviceReportedApp[];
    // Restricted apps state. Possible values are: prohibitedApps, notApprovedApps.
    restrictedAppsState?: RestrictedAppsState;
    // User unique identifier, must be Guid
    userId?: string;
    // User name
    userName?: NullableOption<string>;
}
export interface DeviceConfiguration extends Entity {
    // DateTime the object was created.
    createdDateTime?: string;
    // Admin provided description of the Device Configuration.
    description?: NullableOption<string>;
    // The device mode applicability rule for this Policy.
    deviceManagementApplicabilityRuleDeviceMode?: NullableOption<DeviceManagementApplicabilityRuleDeviceMode>;
    // The OS edition applicability for this Policy.
    deviceManagementApplicabilityRuleOsEdition?: NullableOption<DeviceManagementApplicabilityRuleOsEdition>;
    // The OS version applicability rule for this Policy.
    deviceManagementApplicabilityRuleOsVersion?: NullableOption<DeviceManagementApplicabilityRuleOsVersion>;
    // Admin provided name of the device configuration.
    displayName?: string;
    // DateTime the object was last modified.
    lastModifiedDateTime?: string;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    /**
     * Indicates whether or not the underlying Device Configuration supports the assignment of scope tags. Assigning to the
     * ScopeTags property is not allowed when this value is false and entities will not be visible to scoped users. This
     * occurs for Legacy policies created in Silverlight and can be resolved by deleting and recreating the policy in the
     * Azure Portal. This property is read-only.
     */
    supportsScopeTags?: boolean;
    // Version of the device configuration.
    version?: number;
    // The list of assignments for the device configuration profile.
    assignments?: NullableOption<DeviceConfigurationAssignment[]>;
    // Device Configuration Setting State Device Summary
    deviceSettingStateSummaries?: NullableOption<SettingStateDeviceSummary[]>;
    // Device configuration installation status by device.
    deviceStatuses?: NullableOption<DeviceConfigurationDeviceStatus[]>;
    // Device Configuration devices status overview
    deviceStatusOverview?: NullableOption<DeviceConfigurationDeviceOverview>;
    // The list of group assignments for the device configuration profile.
    groupAssignments?: NullableOption<DeviceConfigurationGroupAssignment[]>;
    // Device configuration installation status by user.
    userStatuses?: NullableOption<DeviceConfigurationUserStatus[]>;
    // Device Configuration users status overview
    userStatusOverview?: NullableOption<DeviceConfigurationUserOverview>;
}
export interface ManagedAllDeviceCertificateState extends Entity {
    // Certificate expiry date
    certificateExpirationDateTime?: string;
    // Enhanced Key Usage
    certificateExtendedKeyUsages?: NullableOption<string>;
    // Issuance date
    certificateIssuanceDateTime?: string;
    // Issuer
    certificateIssuerName?: NullableOption<string>;
    // Key Usage
    certificateKeyUsages?: NullableOption<number>;
    // Revoke status. Possible values are: none, pending, issued, failed, revoked.
    certificateRevokeStatus?: CertificateRevocationStatus;
    // The time the revoke status was last changed
    certificateRevokeStatusLastChangeDateTime?: string;
    // Serial number
    certificateSerialNumber?: NullableOption<string>;
    // Certificate subject name
    certificateSubjectName?: NullableOption<string>;
    // Thumbprint
    certificateThumbprint?: NullableOption<string>;
    // Device display name
    managedDeviceDisplayName?: NullableOption<string>;
    // User principal name
    userPrincipalName?: NullableOption<string>;
}
export interface DeviceConfigurationUserStateSummary extends Entity {
    // Number of compliant users
    compliantUserCount?: number;
    // Number of conflict users
    conflictUserCount?: number;
    // Number of error users
    errorUserCount?: number;
    // Number of NonCompliant users
    nonCompliantUserCount?: number;
    // Number of not applicable users
    notApplicableUserCount?: number;
    // Number of remediated users
    remediatedUserCount?: number;
    // Number of unknown users
    unknownUserCount?: number;
}
// tslint:disable-next-line: interface-name
export interface IosUpdateDeviceStatus extends Entity {
    // The DateTime when device compliance grace period expires
    complianceGracePeriodExpirationDateTime?: string;
    // Device name of the DevicePolicyStatus.
    deviceDisplayName?: NullableOption<string>;
    // The device id that is being reported.
    deviceId?: NullableOption<string>;
    // The device model that is being reported
    deviceModel?: NullableOption<string>;
    /**
     * The installation status of the policy report. Possible values are: success, available, idle, unknown, mdmClientCrashed,
     * timeout, downloading, downloadFailed, downloadRequiresComputer, downloadInsufficientSpace, downloadInsufficientPower,
     * downloadInsufficientNetwork, installing, installInsufficientSpace, installInsufficientPower,
     * installPhoneCallInProgress, installFailed, notSupportedOperation, sharedDeviceUserLoggedInError, updateError,
     * deviceOsHigherThanDesiredOsVersion, updateScanFailed.
     */
    installStatus?: IosUpdatesInstallStatus;
    // Last modified date time of the policy report.
    lastReportedDateTime?: string;
    // The device version that is being reported.
    osVersion?: NullableOption<string>;
    // Platform of the device that is being reported
    platform?: number;
    /**
     * Compliance status of the policy report. Possible values are: unknown, notApplicable, compliant, remediated,
     * nonCompliant, error, conflict, notAssigned.
     */
    status?: ComplianceStatus;
    // The User id that is being reported.
    userId?: NullableOption<string>;
    // The User Name that is being reported
    userName?: NullableOption<string>;
    // UserPrincipalName.
    userPrincipalName?: NullableOption<string>;
}
export interface MacOSSoftwareUpdateAccountSummary extends Entity {
    // The device ID.
    deviceId?: NullableOption<string>;
    // The device name.
    deviceName?: NullableOption<string>;
    // The name of the report
    displayName?: string;
    // Number of failed updates on the device.
    failedUpdateCount?: number;
    // Last date time the report for this device was updated.
    lastUpdatedDateTime?: string;
    // The OS version.
    osVersion?: NullableOption<string>;
    // Number of successful updates on the device.
    successfulUpdateCount?: number;
    // Number of total updates on the device.
    totalUpdateCount?: number;
    // The user ID.
    userId?: NullableOption<string>;
    // The user principal name
    userPrincipalName?: NullableOption<string>;
    // Summary of the updates by category.
    categorySummaries?: NullableOption<MacOSSoftwareUpdateCategorySummary[]>;
}
export interface ManagedDeviceEncryptionState extends Entity {
    /**
     * Advanced BitLocker State. Possible values are: success, noUserConsent, osVolumeUnprotected, osVolumeTpmRequired,
     * osVolumeTpmOnlyRequired, osVolumeTpmPinRequired, osVolumeTpmStartupKeyRequired, osVolumeTpmPinStartupKeyRequired,
     * osVolumeEncryptionMethodMismatch, recoveryKeyBackupFailed, fixedDriveNotEncrypted, fixedDriveEncryptionMethodMismatch,
     * loggedOnUserNonAdmin, windowsRecoveryEnvironmentNotConfigured, tpmNotAvailable, tpmNotReady, networkError.
     */
    advancedBitLockerStates?: NullableOption<AdvancedBitLockerState>;
    // Device name
    deviceName?: NullableOption<string>;
    /**
     * Platform of the device. Possible values are: desktop, windowsRT, winMO6, nokia, windowsPhone, mac, winCE, winEmbedded,
     * iPhone, iPad, iPod, android, iSocConsumer, unix, macMDM, holoLens, surfaceHub, androidForWork, androidEnterprise,
     * blackberry, palm, unknown.
     */
    deviceType?: DeviceTypes;
    /**
     * Encryption policy setting state. Possible values are: unknown, notApplicable, compliant, remediated, nonCompliant,
     * error, conflict, notAssigned.
     */
    encryptionPolicySettingState?: ComplianceStatus;
    // Encryption readiness state. Possible values are: notReady, ready.
    encryptionReadinessState?: EncryptionReadinessState;
    // Device encryption state. Possible values are: notEncrypted, encrypted.
    encryptionState?: EncryptionState;
    // FileVault State. Possible values are: success, driveEncryptedByUser, userDeferredEncryption, escrowNotEnabled.
    fileVaultStates?: NullableOption<FileVaultState>;
    // Operating system version of the device
    osVersion?: NullableOption<string>;
    // Policy Details
    policyDetails?: NullableOption<EncryptionReportPolicyDetails[]>;
    // Device TPM Version
    tpmSpecificationVersion?: NullableOption<string>;
    // User name
    userPrincipalName?: NullableOption<string>;
}
export interface NdesConnector extends Entity {
    // The friendly name of the Ndes Connector.
    displayName?: NullableOption<string>;
    // Last connection time for the Ndes Connector
    lastConnectionDateTime?: string;
    // Ndes Connector Status. Possible values are: none, active, inactive.
    state?: NdesConnectorState;
}
export interface SoftwareUpdateStatusSummary extends Entity {
    // Number of compliant devices.
    compliantDeviceCount?: number;
    // Number of compliant users.
    compliantUserCount?: number;
    // Number of conflict devices.
    conflictDeviceCount?: number;
    // Number of conflict users.
    conflictUserCount?: number;
    // The name of the policy.
    displayName?: NullableOption<string>;
    // Number of devices had error.
    errorDeviceCount?: number;
    // Number of users had error.
    errorUserCount?: number;
    // Number of non compliant devices.
    nonCompliantDeviceCount?: number;
    // Number of non compliant users.
    nonCompliantUserCount?: number;
    // Number of not applicable devices.
    notApplicableDeviceCount?: number;
    // Number of not applicable users.
    notApplicableUserCount?: number;
    // Number of remediated devices.
    remediatedDeviceCount?: number;
    // Number of remediated users.
    remediatedUserCount?: number;
    // Number of unknown devices.
    unknownDeviceCount?: number;
    // Number of unknown users.
    unknownUserCount?: number;
}
export interface DeviceManagementConfigurationCategory extends Entity {
    // List of child ids of the category.
    childCategoryIds?: NullableOption<string[]>;
    // Description of the item
    description?: NullableOption<string>;
    // Display name of the item
    displayName?: NullableOption<string>;
    // Help text of the item
    helpText?: NullableOption<string>;
    // Name of the item
    name?: NullableOption<string>;
    // Parent id of the category.
    parentCategoryId?: NullableOption<string>;
    // Platforms types, which settings in the category have. Possible values are: none, macOS, windows10X, windows10.
    platforms?: DeviceManagementConfigurationPlatforms;
    // Root id of the category.
    rootCategoryId?: NullableOption<string>;
    /**
     * Indicates that the category contains settings that are used for Compliance or Configuration. Possible values are: none,
     * configuration.
     */
    settingUsage?: DeviceManagementConfigurationSettingUsage;
    /**
     * Technologies types, which settings in the category have. Possible values are: none, mdm, windows10XManagement,
     * configManager, microsoftSense.
     */
    technologies?: DeviceManagementConfigurationTechnologies;
}
export interface DeviceManagementConfigurationPolicy extends Entity {
    // Policy creation date and time. This property is read-only.
    createdDateTime?: string;
    // Policy creation source
    creationSource?: NullableOption<string>;
    // Policy description
    description?: NullableOption<string>;
    // Policy assignment status. This property is read-only.
    isAssigned?: boolean;
    // Policy last modification date and time. This property is read-only.
    lastModifiedDateTime?: string;
    // Policy name
    name?: NullableOption<string>;
    // Platforms for this policy. Possible values are: none, macOS, windows10X, windows10.
    platforms?: DeviceManagementConfigurationPlatforms;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // Number of settings. This property is read-only.
    settingCount?: number;
    // Technologies for this policy. Possible values are: none, mdm, windows10XManagement, configManager, microsoftSense.
    technologies?: DeviceManagementConfigurationTechnologies;
    // Template reference information
    templateReference?: NullableOption<DeviceManagementConfigurationPolicyTemplateReference>;
    // Policy assignments
    assignments?: NullableOption<DeviceManagementConfigurationPolicyAssignment[]>;
    // Policy settings
    settings?: NullableOption<DeviceManagementConfigurationSetting[]>;
}
export interface DeviceManagementConfigurationPolicyTemplate extends Entity {
    // Allow unmanaged setting templates
    allowUnmanagedSettings?: boolean;
    // Template base identifier
    baseId?: NullableOption<string>;
    // Template description
    description?: NullableOption<string>;
    // Template display name
    displayName?: NullableOption<string>;
    // Description of template version
    displayVersion?: NullableOption<string>;
    /**
     * Indicate current lifecycle state of template. Possible values are: invalid, draft, active, superseded, deprecated,
     * retired.
     */
    lifecycleState?: DeviceManagementTemplateLifecycleState;
    // Platforms for this template. Possible values are: none, macOS, windows10X, windows10.
    platforms?: DeviceManagementConfigurationPlatforms;
    // Number of setting templates. Valid values 0 to 2147483647. This property is read-only.
    settingTemplateCount?: number;
    // Technologies for this template. Possible values are: none, mdm, windows10XManagement, configManager, microsoftSense.
    technologies?: DeviceManagementConfigurationTechnologies;
    /**
     * TemplateFamily for this template. Possible values are: none, endpointSecurityAntivirus, endpointSecurityDiskEncryption,
     * endpointSecurityFirewall, endpointSecurityEndpointDetectionAndResponse, endpointSecurityAttackSurfaceReduction,
     * endpointSecurityAccountProtection, endpointSecurityApplicationControl.
     */
    templateFamily?: DeviceManagementConfigurationTemplateFamily;
    // Template version. Valid values 1 to 2147483647. This property is read-only.
    version?: number;
    // Setting templates
    settingTemplates?: NullableOption<DeviceManagementConfigurationSettingTemplate[]>;
}
export interface DeviceManagementConfigurationSettingDefinition extends Entity {
    // Read/write access mode of the setting. Possible values are: none, add, copy, delete, get, replace, execute.
    accessTypes?: DeviceManagementConfigurationSettingAccessTypes;
    // Details which device setting is applicable on
    applicability?: NullableOption<DeviceManagementConfigurationSettingApplicability>;
    // Base CSP Path
    baseUri?: NullableOption<string>;
    // Specifies the area group under which the setting is configured in a specified configuration service provider (CSP)
    categoryId?: NullableOption<string>;
    // Description of the item
    description?: NullableOption<string>;
    // Display name of the item
    displayName?: NullableOption<string>;
    // Help text of the item
    helpText?: NullableOption<string>;
    // List of links more info for the setting can be found at
    infoUrls?: NullableOption<string[]>;
    // Tokens which to search settings on
    keywords?: NullableOption<string[]>;
    // Name of the item
    name?: NullableOption<string>;
    // Indicates whether the setting is required or not
    occurrence?: NullableOption<DeviceManagementConfigurationSettingOccurrence>;
    // Offset CSP Path from Base
    offsetUri?: NullableOption<string>;
    // List of referred setting information.
    referredSettingInformationList?: NullableOption<DeviceManagementConfigurationReferredSettingInformation[]>;
    // Root setting definition if the setting is a child setting.
    rootDefinitionId?: NullableOption<string>;
    // Setting type, for example, configuration and compliance. Possible values are: none, configuration.
    settingUsage?: DeviceManagementConfigurationSettingUsage;
    /**
     * Setting control type representation in the UX. Possible values are: default, dropdown, smallTextBox, largeTextBox,
     * toggle, multiheaderGrid, contextPane.
     */
    uxBehavior?: DeviceManagementConfigurationControlType;
    // Item Version
    version?: NullableOption<string>;
    // Setting visibility scope to UX. Possible values are: none, settingsCatalog, template.
    visibility?: DeviceManagementConfigurationSettingVisibility;
}
export interface DeviceManagementReusablePolicySetting extends Entity {
    // reusable setting creation date and time. This property is read-only.
    createdDateTime?: string;
    // reusable setting description supplied by user.
    description?: NullableOption<string>;
    // reusable setting display name supplied by user.
    displayName?: string;
    // date and time when reusable setting was last modified. This property is read-only.
    lastModifiedDateTime?: string;
    /**
     * count of configuration policies referencing the current reusable setting. Valid values 0 to 2147483647. This property
     * is read-only.
     */
    referencingConfigurationPolicyCount?: number;
    // setting definition id associated with this reusable setting.
    settingDefinitionId?: NullableOption<string>;
    // reusable setting configuration instance
    settingInstance?: NullableOption<DeviceManagementConfigurationSettingInstance>;
    // version number for reusable setting. Valid values 0 to 2147483647. This property is read-only.
    version?: number;
    // configuration policies referencing the current reusable setting
    referencingConfigurationPolicies?: NullableOption<DeviceManagementConfigurationPolicy[]>;
}
export interface DeviceManagementConfigurationSettingTemplate extends Entity {
    // Setting Instance Template
    settingInstanceTemplate?: DeviceManagementConfigurationSettingInstanceTemplate;
    // List of related Setting Definitions
    settingDefinitions?: NullableOption<DeviceManagementConfigurationSettingDefinition[]>;
}
export interface ComplianceManagementPartner extends Entity {
    // User groups which enroll Android devices through partner.
    androidEnrollmentAssignments?: NullableOption<ComplianceManagementPartnerAssignment[]>;
    // Partner onboarded for Android devices.
    androidOnboarded?: boolean;
    // Partner display name
    displayName?: NullableOption<string>;
    // User groups which enroll ios devices through partner.
    iosEnrollmentAssignments?: NullableOption<ComplianceManagementPartnerAssignment[]>;
    // Partner onboarded for ios devices.
    iosOnboarded?: boolean;
    // Timestamp of last heartbeat after admin onboarded to the compliance management partner
    lastHeartbeatDateTime?: string;
    // User groups which enroll Mac devices through partner.
    macOsEnrollmentAssignments?: NullableOption<ComplianceManagementPartnerAssignment[]>;
    // Partner onboarded for Mac devices.
    macOsOnboarded?: boolean;
    // Partner state of this tenant. Possible values are: unknown, unavailable, enabled, terminated, rejected, unresponsive.
    partnerState?: DeviceManagementPartnerTenantState;
    // User groups which enroll Windows devices through partner.
    windowsEnrollmentAssignments?: NullableOption<ComplianceManagementPartnerAssignment[]>;
    // Partner onboarded for Windows devices.
    windowsOnboarded?: boolean;
}
export interface OnPremisesConditionalAccessSettings extends Entity {
    // Indicates if on premises conditional access is enabled for this organization
    enabled?: boolean;
    /**
     * User groups that will be exempt by on premises conditional access. All users in these groups will be exempt from the
     * conditional access policy.
     */
    excludedGroups?: string[];
    /**
     * User groups that will be targeted by on premises conditional access. All users in these groups will be required to have
     * mobile device managed and compliant for mail access.
     */
    includedGroups?: string[];
    // Override the default access rule when allowing a device to ensure access is granted.
    overrideDefaultRule?: boolean;
}
export interface DeviceCategory extends Entity {
    // Optional description for the device category.
    description?: NullableOption<string>;
    // Display name for the device category.
    displayName?: NullableOption<string>;
    // Optional role scope tags for the device category.
    roleScopeTagIds?: NullableOption<string[]>;
}
export interface DeviceManagementPartner extends Entity {
    // Partner display name
    displayName?: NullableOption<string>;
    // User groups that specifies whether enrollment is through partner.
    groupsRequiringPartnerEnrollment?: NullableOption<DeviceManagementPartnerAssignment[]>;
    // Whether device management partner is configured or not
    isConfigured?: boolean;
    // Timestamp of last heartbeat after admin enabled option Connect to Device management Partner
    lastHeartbeatDateTime?: string;
    // Partner App type. Possible values are: unknown, singleTenantApp, multiTenantApp.
    partnerAppType?: DeviceManagementPartnerAppType;
    // Partner state of this tenant. Possible values are: unknown, unavailable, enabled, terminated, rejected, unresponsive.
    partnerState?: DeviceManagementPartnerTenantState;
    // Partner Single tenant App id
    singleTenantAppId?: NullableOption<string>;
    // DateTime in UTC when PartnerDevices will be marked as NonCompliant. This will become obselete soon.
    whenPartnerDevicesWillBeMarkedAsNonCompliant?: NullableOption<string>;
    // DateTime in UTC when PartnerDevices will be marked as NonCompliant
    whenPartnerDevicesWillBeMarkedAsNonCompliantDateTime?: NullableOption<string>;
    // DateTime in UTC when PartnerDevices will be removed. This will become obselete soon.
    whenPartnerDevicesWillBeRemoved?: NullableOption<string>;
    // DateTime in UTC when PartnerDevices will be removed
    whenPartnerDevicesWillBeRemovedDateTime?: NullableOption<string>;
}
export interface DeviceManagementExchangeConnector extends Entity {
    // The name of the server hosting the Exchange Connector.
    connectorServerName?: NullableOption<string>;
    // An alias assigned to the Exchange server
    exchangeAlias?: NullableOption<string>;
    // The type of Exchange Connector Configured. Possible values are: onPremises, hosted, serviceToService, dedicated.
    exchangeConnectorType?: DeviceManagementExchangeConnectorType;
    // Exchange Organization to the Exchange server
    exchangeOrganization?: NullableOption<string>;
    // Last sync time for the Exchange Connector
    lastSyncDateTime?: string;
    // Email address used to configure the Service To Service Exchange Connector.
    primarySmtpAddress?: NullableOption<string>;
    // The name of the Exchange server.
    serverName?: NullableOption<string>;
    // Exchange Connector Status. Possible values are: none, connectionPending, connected, disconnected.
    status?: DeviceManagementExchangeConnectorStatus;
    // The version of the ExchangeConnectorAgent
    version?: NullableOption<string>;
}
export interface DeviceManagementExchangeOnPremisesPolicy extends Entity {
    // The list of device access rules in Exchange. The access rules apply globally to the entire Exchange organization
    accessRules?: NullableOption<DeviceManagementExchangeAccessRule[]>;
    /**
     * Default access state in Exchange. This rule applies globally to the entire Exchange organization. Possible values are:
     * none, allow, block, quarantine.
     */
    defaultAccessLevel?: DeviceManagementExchangeAccessLevel;
    // The list of device classes known to Exchange
    knownDeviceClasses?: NullableOption<DeviceManagementExchangeDeviceClass[]>;
    // Notification text that will be sent to users quarantined by this policy. This is UTF8 encoded byte array HTML.
    notificationContent?: NullableOption<number>;
    /**
     * The Exchange on premises conditional access settings. On premises conditional access will require devices to be both
     * enrolled and compliant for mail access
     */
    conditionalAccessSettings?: NullableOption<OnPremisesConditionalAccessSettings>;
}
export interface MobileThreatDefenseConnector extends Entity {
    /**
     * For IOS devices, allows the admin to configure whether the data sync partner may also collect metadata about installed
     * applications from Intune
     */
    allowPartnerToCollectIOSApplicationMetadata?: boolean;
    // For Android, set whether Intune must receive data from the data sync partner prior to marking a device compliant
    androidDeviceBlockedOnMissingPartnerData?: boolean;
    // For Android, set whether data from the data sync partner should be used during compliance evaluations
    androidEnabled?: boolean;
    /**
     * For Android, set whether data from the data sync partner should be used during Mobile Application Management (MAM)
     * evaluations. Only one partner per platform may be enabled for Mobile Application Management (MAM) evaluation.
     */
    androidMobileApplicationManagementEnabled?: boolean;
    // For IOS, set whether Intune must receive data from the data sync partner prior to marking a device compliant
    iosDeviceBlockedOnMissingPartnerData?: boolean;
    // For IOS, get or set whether data from the data sync partner should be used during compliance evaluations
    iosEnabled?: boolean;
    /**
     * For IOS, get or set whether data from the data sync partner should be used during Mobile Application Management (MAM)
     * evaluations. Only one partner per platform may be enabled for Mobile Application Management (MAM) evaluation.
     */
    iosMobileApplicationManagementEnabled?: boolean;
    // DateTime of last Heartbeat recieved from the Data Sync Partner
    lastHeartbeatDateTime?: string;
    // For Mac, get or set whether Intune must receive data from the data sync partner prior to marking a device compliant
    macDeviceBlockedOnMissingPartnerData?: boolean;
    // For Mac, get or set whether data from the data sync partner should be used during compliance evaluations
    macEnabled?: boolean;
    // Data Sync Partner state for this account. Possible values are: unavailable, available, enabled, unresponsive.
    partnerState?: MobileThreatPartnerTenantState;
    // Get or Set days the per tenant tolerance to unresponsiveness for this partner integration
    partnerUnresponsivenessThresholdInDays?: number;
    /**
     * Get or set whether to block devices on the enabled platforms that do not meet the minimum version requirements of the
     * Data Sync Partner
     */
    partnerUnsupportedOsVersionBlocked?: boolean;
    // For Windows, set whether Intune must receive data from the data sync partner prior to marking a device compliant
    windowsDeviceBlockedOnMissingPartnerData?: boolean;
    // For Windows, get or set whether data from the data sync partner should be used during compliance evaluations
    windowsEnabled?: boolean;
}
export interface DeviceManagementSettingCategory extends Entity {
    // The category name
    displayName?: NullableOption<string>;
    // The category contains top level required setting
    hasRequiredSetting?: NullableOption<boolean>;
    // The setting definitions this category contains
    settingDefinitions?: NullableOption<DeviceManagementSettingDefinition[]>;
}
export interface DeviceManagementIntent extends Entity {
    // The user given description
    description?: NullableOption<string>;
    // The user given display name
    displayName?: string;
    // Signifies whether or not the intent is assigned to users
    isAssigned?: boolean;
    // When the intent was last modified
    lastModifiedDateTime?: string;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // The ID of the template this intent was created from (if any)
    templateId?: NullableOption<string>;
    // Collection of assignments
    assignments?: NullableOption<DeviceManagementIntentAssignment[]>;
    // Collection of setting categories within the intent
    categories?: NullableOption<DeviceManagementIntentSettingCategory[]>;
    /**
     * Collection of settings and their states and counts of devices that belong to corresponding state for all settings
     * within the intent
     */
    deviceSettingStateSummaries?: NullableOption<DeviceManagementIntentDeviceSettingStateSummary[]>;
    // Collection of states of all devices that the intent is applied to
    deviceStates?: NullableOption<DeviceManagementIntentDeviceState[]>;
    /**
     * A summary of device states and counts of devices that belong to corresponding state for all devices that the intent is
     * applied to
     */
    deviceStateSummary?: NullableOption<DeviceManagementIntentDeviceStateSummary>;
    // Collection of all settings to be applied
    settings?: NullableOption<DeviceManagementSettingInstance[]>;
    // Collection of states of all users that the intent is applied to
    userStates?: NullableOption<DeviceManagementIntentUserState[]>;
    /**
     * A summary of user states and counts of users that belong to corresponding state for all users that the intent is
     * applied to
     */
    userStateSummary?: NullableOption<DeviceManagementIntentUserStateSummary>;
}
export interface DeviceManagementSettingDefinition extends Entity {
    // Collection of constraints for the setting value
    constraints?: NullableOption<DeviceManagementConstraint[]>;
    // Collection of dependencies on other settings
    dependencies?: NullableOption<DeviceManagementSettingDependency[]>;
    // The setting's description
    description?: NullableOption<string>;
    // The setting's display name
    displayName?: string;
    // Url to setting documentation
    documentationUrl?: NullableOption<string>;
    // subtitle of the setting header for more details about the category/section
    headerSubtitle?: NullableOption<string>;
    // title of the setting header represents a category/section of a setting/settings
    headerTitle?: NullableOption<string>;
    // If the setting is top level, it can be configured without the need to be wrapped in a collection or complex setting
    isTopLevel?: boolean;
    // Keywords associated with the setting
    keywords?: NullableOption<string[]>;
    // Placeholder text as an example of valid input
    placeholderText?: NullableOption<string>;
    // The data type of the value. Possible values are: integer, boolean, string, complex, collection, abstractComplex.
    valueType?: DeviceManangementIntentValueType;
}
export interface DeviceManagementTemplate extends Entity {
    // The template's description
    description?: NullableOption<string>;
    // The template's display name
    displayName?: string;
    // Number of Intents created from this template.
    intentCount?: number;
    // The template is deprecated or not. Intents cannot be created from a deprecated template.
    isDeprecated?: boolean;
    /**
     * The template's platform. Possible values are: android, androidForWork, iOS, macOS, windowsPhone81, windows81AndLater,
     * windows10AndLater, androidWorkProfile, windows10XProfile, all.
     */
    platformType?: PolicyPlatformType;
    // When the template was published
    publishedDateTime?: string;
    /**
     * The template's subtype. Possible values are: none, firewall, diskEncryption, attackSurfaceReduction,
     * endpointDetectionReponse, accountProtection, antivirus, firewallSharedAppList, firewallSharedIpList,
     * firewallSharedPortlist.
     */
    templateSubtype?: DeviceManagementTemplateSubtype;
    /**
     * The template's type. Possible values are: securityBaseline, specializedDevices,
     * advancedThreatProtectionSecurityBaseline, deviceConfiguration, custom, securityTemplate, microsoftEdgeSecurityBaseline,
     * microsoftOffice365ProPlusSecurityBaseline, deviceCompliance, deviceConfigurationForOffice365, cloudPC,
     * firewallSharedSettings.
     */
    templateType?: DeviceManagementTemplateType;
    // The template's version information
    versionInfo?: NullableOption<string>;
    // Collection of setting categories within the template
    categories?: NullableOption<DeviceManagementTemplateSettingCategory[]>;
    // Collection of templates this template can migrate to
    migratableTo?: NullableOption<DeviceManagementTemplate[]>;
    // Collection of all settings this template has
    settings?: NullableOption<DeviceManagementSettingInstance[]>;
}
export interface ApplePushNotificationCertificate extends Entity {
    // Apple Id of the account used to create the MDM push certificate.
    appleIdentifier?: NullableOption<string>;
    // Not yet documented
    certificate?: NullableOption<string>;
    // Certificate serial number. This property is read-only.
    certificateSerialNumber?: NullableOption<string>;
    // The reason the certificate upload failed.
    certificateUploadFailureReason?: NullableOption<string>;
    // The certificate upload status.
    certificateUploadStatus?: NullableOption<string>;
    // The expiration date and time for Apple push notification certificate.
    expirationDateTime?: string;
    // Last modified date and time for Apple push notification certificate.
    lastModifiedDateTime?: string;
    // Topic Id.
    topicIdentifier?: NullableOption<string>;
}
export interface CloudPCConnectivityIssue extends Entity {
    // The Intune DeviceId of the device the connection is associated with.
    deviceId?: NullableOption<string>;
    // The error code of the connectivity issue.
    errorCode?: NullableOption<string>;
    // The time that the connection initiated. The time is shown in ISO 8601 format and Coordinated Universal Time (UTC) time.
    errorDateTime?: string;
    // The detailed description of what went wrong.
    errorDescription?: NullableOption<string>;
    // The recommended action to fix the corresponding error.
    recommendedAction?: NullableOption<string>;
    // The unique id of user who initialize the connection.
    userId?: NullableOption<string>;
}
export interface ComanagementEligibleDevice extends Entity {
    /**
     * ClientRegistrationStatus. Possible values are: notRegistered, registered, revoked, keyConflict, approvalPending,
     * certificateReset, notRegisteredPendingEnrollment, unknown.
     */
    clientRegistrationStatus?: DeviceRegistrationState;
    // DeviceName
    deviceName?: NullableOption<string>;
    /**
     * DeviceType. Possible values are: desktop, windowsRT, winMO6, nokia, windowsPhone, mac, winCE, winEmbedded, iPhone,
     * iPad, iPod, android, iSocConsumer, unix, macMDM, holoLens, surfaceHub, androidForWork, androidEnterprise, windows10x,
     * androidnGMS, chromeOS, linux, blackberry, palm, unknown, cloudPC.
     */
    deviceType?: DeviceType;
    // EntitySource
    entitySource?: number;
    /**
     * ManagementAgents. Possible values are: eas, mdm, easMdm, intuneClient, easIntuneClient, configurationManagerClient,
     * configurationManagerClientMdm, configurationManagerClientMdmEas, unknown, jamf, googleCloudDevicePolicyController,
     * microsoft365ManagedMdm, msSense, intuneAosp.
     */
    managementAgents?: ManagementAgentType;
    /**
     * ManagementState. Possible values are: managed, retirePending, retireFailed, wipePending, wipeFailed, unhealthy,
     * deletePending, retireIssued, wipeIssued, wipeCanceled, retireCanceled, discovered.
     */
    managementState?: ManagementState;
    // Manufacturer
    manufacturer?: NullableOption<string>;
    // MDMStatus
    mdmStatus?: NullableOption<string>;
    // Model
    model?: NullableOption<string>;
    // OSDescription
    osDescription?: NullableOption<string>;
    // OSVersion
    osVersion?: NullableOption<string>;
    // OwnerType. Possible values are: unknown, company, personal.
    ownerType?: OwnerType;
    // ReferenceId
    referenceId?: NullableOption<string>;
    // SerialNumber
    serialNumber?: NullableOption<string>;
    /**
     * ComanagementEligibleStatus. Possible values are: comanaged, eligible, eligibleButNotAzureAdJoined, needsOsUpdate,
     * ineligible.
     */
    status?: ComanagementEligibleType;
    // UPN
    upn?: NullableOption<string>;
    // UserEmail
    userEmail?: NullableOption<string>;
    // UserId
    userId?: NullableOption<string>;
    // UserName
    userName?: NullableOption<string>;
}
export interface DataSharingConsent extends Entity {
    // The time consent was granted for this account
    grantDateTime?: string;
    // The granted state for the data sharing consent
    granted?: boolean;
    // The Upn of the user that granted consent for this account
    grantedByUpn?: NullableOption<string>;
    // The UserId of the user that granted consent for this account
    grantedByUserId?: NullableOption<string>;
    // The display name of the service work flow
    serviceDisplayName?: NullableOption<string>;
    // The TermsUrl for the data sharing consent
    termsUrl?: NullableOption<string>;
}
export interface DetectedApp extends Entity {
    // The number of devices that have installed this application
    deviceCount?: number;
    // Name of the discovered application. Read-only
    displayName?: NullableOption<string>;
    // Discovered application size in bytes. Read-only
    sizeInByte?: number;
    // Version of the discovered application. Read-only
    version?: NullableOption<string>;
    // The devices that have the discovered application installed
    managedDevices?: NullableOption<ManagedDevice[]>;
}
export interface DeviceComplianceScript extends Entity {
    // The timestamp of when the device compliance script was created. This property is read-only.
    createdDateTime?: string;
    // Description of the device compliance script
    description?: NullableOption<string>;
    // The entire content of the detection powershell script
    detectionScriptContent?: NullableOption<number>;
    // Name of the device compliance script
    displayName?: NullableOption<string>;
    // Indicate whether the script signature needs be checked
    enforceSignatureCheck?: boolean;
    // The timestamp of when the device compliance script was modified. This property is read-only.
    lastModifiedDateTime?: string;
    // Name of the device compliance script publisher
    publisher?: NullableOption<string>;
    // List of Scope Tag IDs for the device compliance script
    roleScopeTagIds?: NullableOption<string[]>;
    // Indicate whether PowerShell script(s) should run as 32-bit
    runAs32Bit?: boolean;
    // Indicates the type of execution context. Possible values are: system, user.
    runAsAccount?: RunAsAccountType;
    // Version of the device compliance script
    version?: NullableOption<string>;
    // The list of group assignments for the device compliance script
    assignments?: NullableOption<DeviceHealthScriptAssignment[]>;
    // List of run states for the device compliance script across all devices
    deviceRunStates?: NullableOption<DeviceComplianceScriptDeviceState[]>;
    // High level run summary for device compliance script.
    runSummary?: NullableOption<DeviceComplianceScriptRunSummary>;
}
export interface DeviceCustomAttributeShellScript extends Entity {
    // The date and time the device management script was created. This property is read-only.
    createdDateTime?: string;
    // The name of the custom attribute.
    customAttributeName?: NullableOption<string>;
    // The expected type of the custom attribute's value. Possible values are: integer, string, dateTime.
    customAttributeType?: DeviceCustomAttributeValueType;
    // Optional description for the device management script.
    description?: NullableOption<string>;
    // Name of the device management script.
    displayName?: NullableOption<string>;
    // Script file name.
    fileName?: NullableOption<string>;
    // The date and time the device management script was last modified. This property is read-only.
    lastModifiedDateTime?: string;
    // List of Scope Tag IDs for this PowerShellScript instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // Indicates the type of execution context. Possible values are: system, user.
    runAsAccount?: RunAsAccountType;
    // The script content.
    scriptContent?: NullableOption<number>;
    // The list of group assignments for the device management script.
    assignments?: NullableOption<DeviceManagementScriptAssignment[]>;
    // List of run states for this script across all devices.
    deviceRunStates?: NullableOption<DeviceManagementScriptDeviceState[]>;
    // The list of group assignments for the device management script.
    groupAssignments?: NullableOption<DeviceManagementScriptGroupAssignment[]>;
    // Run summary for device management script.
    runSummary?: NullableOption<DeviceManagementScriptRunSummary>;
    // List of run states for this script across all users.
    userRunStates?: NullableOption<DeviceManagementScriptUserState[]>;
}
export interface DeviceHealthScript extends Entity {
    // The timestamp of when the device health script was created. This property is read-only.
    createdDateTime?: string;
    // Description of the device health script
    description?: NullableOption<string>;
    // The entire content of the detection powershell script
    detectionScriptContent?: NullableOption<number>;
    // List of ComplexType DetectionScriptParameters objects.
    detectionScriptParameters?: NullableOption<DeviceHealthScriptParameter[]>;
    // Name of the device health script
    displayName?: NullableOption<string>;
    // Indicate whether the script signature needs be checked
    enforceSignatureCheck?: boolean;
    // Highest available version for a Microsoft Proprietary script
    highestAvailableVersion?: NullableOption<string>;
    // Determines if this is Microsoft Proprietary Script. Proprietary scripts are read-only
    isGlobalScript?: boolean;
    // The timestamp of when the device health script was modified. This property is read-only.
    lastModifiedDateTime?: string;
    // Name of the device health script publisher
    publisher?: NullableOption<string>;
    // The entire content of the remediation powershell script
    remediationScriptContent?: NullableOption<number>;
    // List of ComplexType RemediationScriptParameters objects.
    remediationScriptParameters?: NullableOption<DeviceHealthScriptParameter[]>;
    // List of Scope Tag IDs for the device health script
    roleScopeTagIds?: NullableOption<string[]>;
    // Indicate whether PowerShell script(s) should run as 32-bit
    runAs32Bit?: boolean;
    // Indicates the type of execution context. Possible values are: system, user.
    runAsAccount?: RunAsAccountType;
    // Version of the device health script
    version?: NullableOption<string>;
    // The list of group assignments for the device health script
    assignments?: NullableOption<DeviceHealthScriptAssignment[]>;
    // List of run states for the device health script across all devices
    deviceRunStates?: NullableOption<DeviceHealthScriptDeviceState[]>;
    // High level run summary for device health script.
    runSummary?: NullableOption<DeviceHealthScriptRunSummary>;
}
export interface DeviceManagementScript extends Entity {
    // The date and time the device management script was created. This property is read-only.
    createdDateTime?: string;
    // Optional description for the device management script.
    description?: NullableOption<string>;
    // Name of the device management script.
    displayName?: NullableOption<string>;
    // Indicate whether the script signature needs be checked.
    enforceSignatureCheck?: boolean;
    // Script file name.
    fileName?: NullableOption<string>;
    // The date and time the device management script was last modified. This property is read-only.
    lastModifiedDateTime?: string;
    // List of Scope Tag IDs for this PowerShellScript instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // A value indicating whether the PowerShell script should run as 32-bit
    runAs32Bit?: boolean;
    // Indicates the type of execution context. Possible values are: system, user.
    runAsAccount?: RunAsAccountType;
    // The script content.
    scriptContent?: NullableOption<number>;
    // The list of group assignments for the device management script.
    assignments?: NullableOption<DeviceManagementScriptAssignment[]>;
    // List of run states for this script across all devices.
    deviceRunStates?: NullableOption<DeviceManagementScriptDeviceState[]>;
    // The list of group assignments for the device management script.
    groupAssignments?: NullableOption<DeviceManagementScriptGroupAssignment[]>;
    // Run summary for device management script.
    runSummary?: NullableOption<DeviceManagementScriptRunSummary>;
    // List of run states for this script across all users.
    userRunStates?: NullableOption<DeviceManagementScriptUserState[]>;
}
export interface DeviceShellScript extends Entity {
    // Does not notify the user a script is being executed
    blockExecutionNotifications?: boolean;
    // The date and time the device management script was created. This property is read-only.
    createdDateTime?: string;
    // Optional description for the device management script.
    description?: NullableOption<string>;
    // Name of the device management script.
    displayName?: NullableOption<string>;
    // The interval for script to run. If not defined the script will run once
    executionFrequency?: string;
    // Script file name.
    fileName?: NullableOption<string>;
    // The date and time the device management script was last modified. This property is read-only.
    lastModifiedDateTime?: string;
    // Number of times for the script to be retried if it fails
    retryCount?: number;
    // List of Scope Tag IDs for this PowerShellScript instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // Indicates the type of execution context. Possible values are: system, user.
    runAsAccount?: RunAsAccountType;
    // The script content.
    scriptContent?: NullableOption<number>;
    // The list of group assignments for the device management script.
    assignments?: NullableOption<DeviceManagementScriptAssignment[]>;
    // List of run states for this script across all devices.
    deviceRunStates?: NullableOption<DeviceManagementScriptDeviceState[]>;
    // The list of group assignments for the device management script.
    groupAssignments?: NullableOption<DeviceManagementScriptGroupAssignment[]>;
    // Run summary for device management script.
    runSummary?: NullableOption<DeviceManagementScriptRunSummary>;
    // List of run states for this script across all users.
    userRunStates?: NullableOption<DeviceManagementScriptUserState[]>;
}
export interface ManagedDeviceOverview extends Entity {
    // Distribution of Exchange Access State in Intune
    deviceExchangeAccessStateSummary?: NullableOption<DeviceExchangeAccessStateSummary>;
    // Device operating system summary.
    deviceOperatingSystemSummary?: NullableOption<DeviceOperatingSystemSummary>;
    // The number of devices enrolled in both MDM and EAS
    dualEnrolledDeviceCount?: number;
    // Total enrolled device count. Does not include PC devices managed via Intune PC Agent
    enrolledDeviceCount?: number;
    // Last modified date time of device overview
    lastModifiedDateTime?: string;
    // Models and Manufactures meatadata for managed devices in the account
    managedDeviceModelsAndManufacturers?: NullableOption<ManagedDeviceModelsAndManufacturers>;
    // The number of devices enrolled in MDM
    mdmEnrolledCount?: number;
}
export interface RemoteActionAudit extends Entity {
    /**
     * The action name. Possible values are: unknown, factoryReset, removeCompanyData, resetPasscode, remoteLock,
     * enableLostMode, disableLostMode, locateDevice, rebootNow, recoverPasscode, cleanWindowsDevice,
     * logoutSharedAppleDeviceActiveUser, quickScan, fullScan, windowsDefenderUpdateSignatures,
     * factoryResetKeepEnrollmentData, updateDeviceAccount, automaticRedeployment, shutDown, rotateBitLockerKeys,
     * rotateFileVaultKey, getFileVaultKey, setDeviceName, activateDeviceEsim.
     */
    action?: RemoteAction;
    // Action state. Possible values are: none, pending, canceled, active, done, failed, notSupported.
    actionState?: ActionState;
    // Intune device name.
    deviceDisplayName?: NullableOption<string>;
    // IMEI of the device.
    deviceIMEI?: NullableOption<string>;
    // Upn of the device owner.
    deviceOwnerUserPrincipalName?: NullableOption<string>;
    // User who initiated the device action, format is UPN.
    initiatedByUserPrincipalName?: NullableOption<string>;
    // Action target.
    managedDeviceId?: NullableOption<string>;
    // Time when the action was issued, given in UTC.
    requestDateTime?: string;
    // [deprecated] Please use InitiatedByUserPrincipalName instead.
    userName?: NullableOption<string>;
}
export interface UserExperienceAnalyticsAppHealthApplicationPerformance extends Entity {
    // The number of devices where the app has been active. Valid values -2147483648 to 2147483647
    activeDeviceCount?: number;
    // The number of crashes for the app. Valid values -2147483648 to 2147483647
    appCrashCount?: number;
    // The friendly name of the application.
    appDisplayName?: NullableOption<string>;
    // The number of hangs for the app. Valid values -2147483648 to 2147483647
    appHangCount?: number;
    // The health score of the app. Valid values -1.79769313486232E+308 to 1.79769313486232E+308
    appHealthScore?: number;
    // The overall health status of the app.
    appHealthStatus?: NullableOption<string>;
    // The name of the application.
    appName?: NullableOption<string>;
    // The publisher of the application.
    appPublisher?: NullableOption<string>;
    // The total usage time of the application in minutes. Valid values -2147483648 to 2147483647
    appUsageDuration?: number;
    // The mean time to failure for the app in minutes. Valid values -2147483648 to 2147483647
    meanTimeToFailureInMinutes?: number;
}
export interface UserExperienceAnalyticsAppHealthAppPerformanceByAppVersion extends Entity {
    // The number of crashes for the app. Valid values -2147483648 to 2147483647
    appCrashCount?: number;
    // The friendly name of the application.
    appDisplayName?: NullableOption<string>;
    // The name of the application.
    appName?: NullableOption<string>;
    // The publisher of the application.
    appPublisher?: NullableOption<string>;
    // The total usage time of the application in minutes. Valid values -2147483648 to 2147483647
    appUsageDuration?: number;
    // The version of the application.
    appVersion?: NullableOption<string>;
    // The mean time to failure for the app in minutes. Valid values -2147483648 to 2147483647
    meanTimeToFailureInMinutes?: number;
}
export interface UserExperienceAnalyticsAppHealthAppPerformanceByAppVersionDetails extends Entity {
    // The number of crashes for the app. Valid values -2147483648 to 2147483647
    appCrashCount?: number;
    // The friendly name of the application.
    appDisplayName?: NullableOption<string>;
    // The name of the application.
    appName?: NullableOption<string>;
    // The publisher of the application.
    appPublisher?: NullableOption<string>;
    // The version of the application.
    appVersion?: NullableOption<string>;
    /**
     * The total number of devices that have reported one or more application crashes for this application and version. Valid
     * values -2147483648 to 2147483647
     */
    deviceCountWithCrashes?: number;
    // Is the version of application the latest version for that app that is in use.
    isLatestUsedVersion?: boolean;
    // Is the version of application the most used version for that app.
    isMostUsedVersion?: boolean;
}
export interface UserExperienceAnalyticsAppHealthAppPerformanceByAppVersionDeviceId extends Entity {
    // The number of crashes for the app. Valid values -2147483648 to 2147483647
    appCrashCount?: number;
    // The friendly name of the application.
    appDisplayName?: NullableOption<string>;
    // The name of the application.
    appName?: NullableOption<string>;
    // The publisher of the application.
    appPublisher?: NullableOption<string>;
    // The version of the application.
    appVersion?: NullableOption<string>;
    // The name of the device.
    deviceDisplayName?: NullableOption<string>;
    // The id of the device.
    deviceId?: NullableOption<string>;
    // The date and time when the statistics were last computed.
    processedDateTime?: string;
}
export interface UserExperienceAnalyticsAppHealthAppPerformanceByOSVersion extends Entity {
    // The number of devices where the app has been active. Valid values -2147483648 to 2147483647
    activeDeviceCount?: number;
    // The number of crashes for the app. Valid values -2147483648 to 2147483647
    appCrashCount?: number;
    // The friendly name of the application.
    appDisplayName?: NullableOption<string>;
    // The name of the application.
    appName?: NullableOption<string>;
    // The publisher of the application.
    appPublisher?: NullableOption<string>;
    // The total usage time of the application in minutes. Valid values -2147483648 to 2147483647
    appUsageDuration?: number;
    // The mean time to failure for the app in minutes. Valid values -2147483648 to 2147483647
    meanTimeToFailureInMinutes?: number;
    // The os build number of the application.
    osBuildNumber?: NullableOption<string>;
    // The os version of the application.
    osVersion?: NullableOption<string>;
}
export interface UserExperienceAnalyticsAppHealthDeviceModelPerformance extends Entity {
    // The number of active devices for the model. Valid values -2147483648 to 2147483647
    activeDeviceCount?: number;
    // The manufacturer name of the device.
    deviceManufacturer?: NullableOption<string>;
    // The model name of the device.
    deviceModel?: NullableOption<string>;
    // The mean time to failure for the model device in minutes. Valid values -2147483648 to 2147483647
    meanTimeToFailureInMinutes?: number;
    // The app health score of the device model. Valid values -1.79769313486232E+308 to 1.79769313486232E+308
    modelAppHealthScore?: number;
    // The overall app health status of the device model.
    modelAppHealthStatus?: NullableOption<string>;
}
export interface UserExperienceAnalyticsAppHealthDevicePerformance extends Entity {
    // The number of app crashes for the device. Valid values -2147483648 to 2147483647
    appCrashCount?: number;
    // The number of app hangs for the device. Valid values -2147483648 to 2147483647
    appHangCount?: number;
    // The number of distinct app crashes for the device. Valid values -2147483648 to 2147483647
    crashedAppCount?: number;
    // The app health score of the device. Valid values -1.79769313486232E+308 to 1.79769313486232E+308
    deviceAppHealthScore?: number;
    // The overall app health status of the device.
    deviceAppHealthStatus?: NullableOption<string>;
    // The name of the device.
    deviceDisplayName?: NullableOption<string>;
    // The id of the device.
    deviceId?: NullableOption<string>;
    // The manufacturer name of the device.
    deviceManufacturer?: NullableOption<string>;
    // The model name of the device.
    deviceModel?: NullableOption<string>;
    // The mean time to failure for the device in minutes. Valid values -2147483648 to 2147483647
    meanTimeToFailureInMinutes?: number;
    // The date and time when the statistics were last computed.
    processedDateTime?: string;
}
export interface UserExperienceAnalyticsAppHealthDevicePerformanceDetails extends Entity {
    // The friendly name of the application for which the event occurred.
    appDisplayName?: NullableOption<string>;
    // The publisher of the application.
    appPublisher?: NullableOption<string>;
    // The version of the application.
    appVersion?: NullableOption<string>;
    // The name of the device.
    deviceDisplayName?: NullableOption<string>;
    // The id of the device.
    deviceId?: NullableOption<string>;
    // The time the event occurred.
    eventDateTime?: string;
    // The type of the event.
    eventType?: NullableOption<string>;
}
export interface UserExperienceAnalyticsAppHealthOSVersionPerformance extends Entity {
    // The number of active devices for the OS version. Valid values -2147483648 to 2147483647
    activeDeviceCount?: number;
    // The mean time to failure for the OS version in minutes. Valid values -2147483648 to 2147483647
    meanTimeToFailureInMinutes?: number;
    // The OS build number installed on the device.
    osBuildNumber?: NullableOption<string>;
    // The OS version installed on the device.
    osVersion?: NullableOption<string>;
    // The app health score of the OS version. Valid values -1.79769313486232E+308 to 1.79769313486232E+308
    osVersionAppHealthScore?: number;
    // The overall app health status of the OS version.
    osVersionAppHealthStatus?: NullableOption<string>;
}
export interface UserExperienceAnalyticsCategory extends Entity {
    // The insights for the user experience analytics category.
    insights?: NullableOption<UserExperienceAnalyticsInsight[]>;
    // The metric values for the user experience analytics category.
    metricValues?: NullableOption<UserExperienceAnalyticsMetric[]>;
}
export interface UserExperienceAnalyticsBaseline extends Entity {
    // The date the custom baseline was created.
    createdDateTime?: string;
    // The name of the user experience analytics baseline.
    displayName?: NullableOption<string>;
    // Signifies if the current baseline is the commercial median baseline or a custom baseline.
    isBuiltIn?: boolean;
    // The user experience analytics app health metrics.
    appHealthMetrics?: NullableOption<UserExperienceAnalyticsCategory>;
    // The user experience analytics best practices metrics.
    bestPracticesMetrics?: NullableOption<UserExperienceAnalyticsCategory>;
    // The user experience analytics device boot performance metrics.
    deviceBootPerformanceMetrics?: NullableOption<UserExperienceAnalyticsCategory>;
    // The user experience analytics reboot analytics metrics.
    rebootAnalyticsMetrics?: NullableOption<UserExperienceAnalyticsCategory>;
    // The user experience analytics resource performance metrics.
    resourcePerformanceMetrics?: NullableOption<UserExperienceAnalyticsCategory>;
    // The user experience analytics work from anywhere metrics.
    workFromAnywhereMetrics?: NullableOption<UserExperienceAnalyticsCategory>;
}
export interface UserExperienceAnalyticsMetricHistory extends Entity {
    // The user experience analytics device id.
    deviceId?: NullableOption<string>;
    // The user experience analytics metric date time.
    metricDateTime?: string;
    // The user experience analytics metric type.
    metricType?: NullableOption<string>;
    // User experience analytics metric.
    userExperienceAnalyticsMetric?: NullableOption<UserExperienceAnalyticsMetric>;
}
export interface UserExperienceAnalyticsDevicePerformance extends Entity {
    // Average (mean) number of Blue Screens per device in the last 14 days. Valid values 0 to 9999999
    averageBlueScreens?: number;
    // Average (mean) number of Restarts per device in the last 14 days. Valid values 0 to 9999999
    averageRestarts?: number;
    // Number of Blue Screens in the last 14 days. Valid values 0 to 9999999
    blueScreenCount?: number;
    // The user experience analytics device boot score.
    bootScore?: number;
    // The user experience analytics device core boot time in milliseconds.
    coreBootTimeInMs?: number;
    // The user experience analytics device core login time in milliseconds.
    coreLoginTimeInMs?: number;
    // User experience analytics summarized device count.
    deviceCount?: number;
    // The user experience analytics device name.
    deviceName?: NullableOption<string>;
    // The user experience analytics device disk type. Possible values are: unkown, hdd, ssd.
    diskType?: DiskType;
    // The user experience analytics device group policy boot time in milliseconds.
    groupPolicyBootTimeInMs?: number;
    // The user experience analytics device group policy login time in milliseconds.
    groupPolicyLoginTimeInMs?: number;
    /**
     * The health state of the user experience analytics device. Possible values are: unknown, insufficientData,
     * needsAttention, meetingGoals.
     */
    healthStatus?: UserExperienceAnalyticsHealthState;
    // The user experience analytics device login score.
    loginScore?: number;
    // The user experience analytics device manufacturer.
    manufacturer?: NullableOption<string>;
    // The user experience analytics device model.
    model?: NullableOption<string>;
    // The user experience analytics device Operating System version.
    operatingSystemVersion?: NullableOption<string>;
    // The user experience analytics responsive desktop time in milliseconds.
    responsiveDesktopTimeInMs?: number;
    // Number of Restarts in the last 14 days. Valid values 0 to 9999999
    restartCount?: number;
    /**
     * The user experience analytics device startup performance score. Valid values -1.79769313486232E+308 to
     * 1.79769313486232E+308
     */
    startupPerformanceScore?: number;
}
export interface UserExperienceAnalyticsDeviceScores extends Entity {
    /**
     * The user experience analytics device app reliability score. Valid values -1.79769313486232E+308 to
     * 1.79769313486232E+308
     */
    appReliabilityScore?: number;
    // The user experience analytics device name.
    deviceName?: NullableOption<string>;
    // The user experience analytics device score. Valid values -1.79769313486232E+308 to 1.79769313486232E+308
    endpointAnalyticsScore?: number;
    // The health state of the user experience analytics device.
    healthStatus?: UserExperienceAnalyticsHealthState;
    // The user experience analytics device manufacturer.
    manufacturer?: NullableOption<string>;
    // The user experience analytics device model.
    model?: NullableOption<string>;
    /**
     * The user experience analytics device startup performance score. Valid values -1.79769313486232E+308 to
     * 1.79769313486232E+308
     */
    startupPerformanceScore?: number;
}
export interface UserExperienceAnalyticsDeviceStartupHistory extends Entity {
    // The user experience analytics device core boot time in milliseconds.
    coreBootTimeInMs?: number;
    // The user experience analytics device core login time in milliseconds.
    coreLoginTimeInMs?: number;
    // The user experience analytics device id.
    deviceId?: NullableOption<string>;
    // The user experience analytics device feature update time in milliseconds.
    featureUpdateBootTimeInMs?: number;
    // The User experience analytics Device group policy boot time in milliseconds.
    groupPolicyBootTimeInMs?: number;
    // The User experience analytics Device group policy login time in milliseconds.
    groupPolicyLoginTimeInMs?: number;
    // The user experience analytics device boot record is a feature update.
    isFeatureUpdate?: boolean;
    // The user experience analytics device first login.
    isFirstLogin?: boolean;
    // The user experience analytics device boot record's operating system version.
    operatingSystemVersion?: NullableOption<string>;
    // The user experience analytics responsive desktop time in milliseconds.
    responsiveDesktopTimeInMs?: number;
    /**
     * OS restart category. Possible values are: unknown, restartWithUpdate, restartWithoutUpdate, blueScreen,
     * shutdownWithUpdate, shutdownWithoutUpdate, longPowerButtonPress, bootError, update.
     */
    restartCategory?: UserExperienceAnalyticsOperatingSystemRestartCategory;
    // OS restart fault bucket. The fault bucket is used to find additional information about a system crash.
    restartFaultBucket?: NullableOption<string>;
    // OS restart stop code. This shows the bug check code which can be used to look up the blue screen reason.
    restartStopCode?: NullableOption<string>;
    // The user experience analytics device boot start time.
    startTime?: string;
    // The user experience analytics device total boot time in milliseconds.
    totalBootTimeInMs?: number;
    // The user experience analytics device total login time in milliseconds.
    totalLoginTimeInMs?: number;
}
export interface UserExperienceAnalyticsDeviceStartupProcess extends Entity {
    // The user experience analytics device id.
    managedDeviceId?: NullableOption<string>;
    // User experience analytics device startup process name.
    processName?: NullableOption<string>;
    // The user experience analytics device startup process product name.
    productName?: NullableOption<string>;
    // The User experience analytics device startup process publisher.
    publisher?: NullableOption<string>;
    // User experience analytics device startup process impact in milliseconds.
    startupImpactInMs?: number;
}
export interface UserExperienceAnalyticsDeviceStartupProcessPerformance extends Entity {
    // User experience analytics device startup process summarized count.
    deviceCount?: number;
    // User experience analytics device startup process median impact in milliseconds.
    medianImpactInMs?: number;
    // User experience analytics device startup process name.
    processName?: NullableOption<string>;
    // The user experience analytics device startup process product name.
    productName?: NullableOption<string>;
    // The User experience analytics device startup process publisher.
    publisher?: NullableOption<string>;
    // User experience analytics device startup process total impact in milliseconds.
    totalImpactInMs?: number;
}
export interface UserExperienceAnalyticsDeviceWithoutCloudIdentity extends Entity {
    // Azure Active Directory Device Id
    azureAdDeviceId?: NullableOption<string>;
    // The tenant attach device's name.
    deviceName?: NullableOption<string>;
}
export interface UserExperienceAnalyticsImpactingProcess extends Entity {
    // The category of impacting process.
    category?: NullableOption<string>;
    // The description of process.
    description?: NullableOption<string>;
    // The unique identifier of the impacted device.
    deviceId?: NullableOption<string>;
    // The impact value of the process. Valid values 0 to 1.79769313486232E+308
    impactValue?: number;
    // The process name.
    processName?: NullableOption<string>;
    // The publisher of the process.
    publisher?: NullableOption<string>;
}
export interface UserExperienceAnalyticsNotAutopilotReadyDevice extends Entity {
    // The intune device's autopilotProfileAssigned.
    autoPilotProfileAssigned?: boolean;
    // The intune device's autopilotRegistered.
    autoPilotRegistered?: boolean;
    // The intune device's azure Ad joinType.
    azureAdJoinType?: NullableOption<string>;
    // The intune device's azureAdRegistered.
    azureAdRegistered?: NullableOption<boolean>;
    // The intune device's name.
    deviceName?: NullableOption<string>;
    // The intune device's managed by.
    managedBy?: NullableOption<string>;
    // The intune device's manufacturer.
    manufacturer?: NullableOption<string>;
    // The intune device's model.
    model?: NullableOption<string>;
    // The intune device's serial number.
    serialNumber?: NullableOption<string>;
}
export interface UserExperienceAnalyticsOverview extends Entity {
    // The user experience analytics insights.
    insights?: NullableOption<UserExperienceAnalyticsInsight[]>;
}
export interface UserExperienceAnalyticsRegressionSummary extends Entity {
    // The metric values for the user experience analytics Manufacturer regression.
    manufacturerRegression?: NullableOption<UserExperienceAnalyticsMetric[]>;
    // The metric values for the user experience analytics model regression.
    modelRegression?: NullableOption<UserExperienceAnalyticsMetric[]>;
    // The metric values for the user experience analytics operating system regression.
    operatingSystemRegression?: NullableOption<UserExperienceAnalyticsMetric[]>;
}
export interface UserExperienceAnalyticsRemoteConnection extends Entity {
    // The sign in failure percentage of Cloud PC Device. Valid values 0 to 100
    cloudPcFailurePercentage?: number;
    // The round tip time of Cloud PC Device. Valid values 0 to 1.79769313486232E+308
    cloudPcRoundTripTime?: number;
    // The sign in time of Cloud PC Device. Valid values 0 to 1.79769313486232E+308
    cloudPcSignInTime?: number;
    // The core boot time of Cloud PC Device. Valid values 0 to 1.79769313486232E+308
    coreBootTime?: number;
    // The core sign in time of Cloud PC Device. Valid values 0 to 1.79769313486232E+308
    coreSignInTime?: number;
    // The count of remote connection. Valid values 0 to 2147483647
    deviceCount?: number;
    // The id of the device.
    deviceId?: NullableOption<string>;
    // The name of the device.
    deviceName?: NullableOption<string>;
    // The user experience analytics manufacturer.
    manufacturer?: NullableOption<string>;
    // The user experience analytics device model.
    model?: NullableOption<string>;
    // The remote sign in time of Cloud PC Device. Valid values 0 to 1.79769313486232E+308
    remoteSignInTime?: number;
    // The user experience analytics userPrincipalName.
    userPrincipalName?: NullableOption<string>;
    // The user experience analytics virtual network.
    virtualNetwork?: NullableOption<string>;
}
export interface UserExperienceAnalyticsResourcePerformance extends Entity {
    // AverageSpikeTimeScore of a device or a model type. Valid values 0 to 100
    averageSpikeTimeScore?: number;
    // CPU spike time in percentage. Valid values 0 to 100
    cpuSpikeTimePercentage?: number;
    // Threshold of cpuSpikeTimeScore. Valid values 0 to 100
    cpuSpikeTimePercentageThreshold?: number;
    // The user experience analytics device CPU spike time score. Valid values 0 to 100
    cpuSpikeTimeScore?: number;
    // User experience analytics summarized device count.
    deviceCount?: number;
    // The id of the device.
    deviceId?: NullableOption<string>;
    // The name of the device.
    deviceName?: NullableOption<string>;
    // Resource performance score of a specific device. Valid values 0 to 100
    deviceResourcePerformanceScore?: number;
    // The user experience analytics device manufacturer.
    manufacturer?: NullableOption<string>;
    // The user experience analytics device model.
    model?: NullableOption<string>;
    // RAM spike time in percentage. Valid values 0 to 100
    ramSpikeTimePercentage?: number;
    // Threshold of ramSpikeTimeScore. Valid values 0 to 100
    ramSpikeTimePercentageThreshold?: number;
    // The user experience analytics device RAM spike time score. Valid values 0 to 100
    ramSpikeTimeScore?: number;
}
export interface UserExperienceAnalyticsScoreHistory extends Entity {
    // The user experience analytics device startup date time.
    startupDateTime?: string;
}
export interface UserExperienceAnalyticsWorkFromAnywhereHardwareReadinessMetric extends Entity {
    // The percentage of devices for which OS check has failed. Valid values -1.79769313486232E+308 to 1.79769313486232E+308
    osCheckFailedPercentage?: number;
    /**
     * The percentage of devices for which processor hardware 64-bit architecture check has failed. Valid values
     * -1.79769313486232E+308 to 1.79769313486232E+308
     */
    processor64BitCheckFailedPercentage?: number;
    /**
     * The percentage of devices for which processor hardware core count check has failed. Valid values -1.79769313486232E+308
     * to 1.79769313486232E+308
     */
    processorCoreCountCheckFailedPercentage?: number;
    /**
     * The percentage of devices for which processor hardware family check has failed. Valid values -1.79769313486232E+308 to
     * 1.79769313486232E+308
     */
    processorFamilyCheckFailedPercentage?: number;
    /**
     * The percentage of devices for which processor hardware speed check has failed. Valid values -1.79769313486232E+308 to
     * 1.79769313486232E+308
     */
    processorSpeedCheckFailedPercentage?: number;
    /**
     * The percentage of devices for which RAM hardware check has failed. Valid values -1.79769313486232E+308 to
     * 1.79769313486232E+308
     */
    ramCheckFailedPercentage?: number;
    /**
     * The percentage of devices for which secure boot hardware check has failed. Valid values -1.79769313486232E+308 to
     * 1.79769313486232E+308
     */
    secureBootCheckFailedPercentage?: number;
    /**
     * The percentage of devices for which storage hardware check has failed. Valid values -1.79769313486232E+308 to
     * 1.79769313486232E+308
     */
    storageCheckFailedPercentage?: number;
    // The count of total devices in an organization. Valid values -2147483648 to 2147483647
    totalDeviceCount?: number;
    /**
     * The percentage of devices for which Trusted Platform Module (TPM) hardware check has failed. Valid values
     * -1.79769313486232E+308 to 1.79769313486232E+308
     */
    tpmCheckFailedPercentage?: number;
    // The count of devices in an organization eligible for windows upgrade. Valid values -2147483648 to 2147483647
    upgradeEligibleDeviceCount?: number;
}
export interface UserExperienceAnalyticsWorkFromAnywhereMetric extends Entity {
    // The work from anywhere metric devices.
    metricDevices?: NullableOption<UserExperienceAnalyticsWorkFromAnywhereDevice[]>;
}
export interface WindowsMalwareInformation extends Entity {
    // Information URL to learn more about the malware
    additionalInformationUrl?: NullableOption<string>;
    /**
     * Category of the malware. Possible values are: invalid, adware, spyware, passwordStealer, trojanDownloader, worm,
     * backdoor, remoteAccessTrojan, trojan, emailFlooder, keylogger, dialer, monitoringSoftware, browserModifier, cookie,
     * browserPlugin, aolExploit, nuker, securityDisabler, jokeProgram, hostileActiveXControl, softwareBundler,
     * stealthNotifier, settingsModifier, toolBar, remoteControlSoftware, trojanFtp, potentialUnwantedSoftware, icqExploit,
     * trojanTelnet, exploit, filesharingProgram, malwareCreationTool, remote_Control_Software, tool, trojanDenialOfService,
     * trojanDropper, trojanMassMailer, trojanMonitoringSoftware, trojanProxyServer, virus, known, unknown, spp, behavior,
     * vulnerability, policy, enterpriseUnwantedSoftware, ransom, hipsRule.
     */
    category?: NullableOption<WindowsMalwareCategory>;
    // Malware name
    displayName?: NullableOption<string>;
    // The last time the malware is detected
    lastDetectionDateTime?: NullableOption<string>;
    // Severity of the malware. Possible values are: unknown, low, moderate, high, severe.
    severity?: NullableOption<WindowsMalwareSeverity>;
    // List of devices affected by current malware with the malware state on each device
    deviceMalwareStates?: NullableOption<MalwareStateForWindowsDevice[]>;
}
export interface DeviceManagementDerivedCredentialSettings extends Entity {
    // The display name for the profile.
    displayName?: string;
    // The URL that will be accessible to end users as they retrieve a derived credential using the Company Portal.
    helpUrl?: NullableOption<string>;
    // The derived credential provider to use.
    issuer?: DeviceManagementDerivedCredentialIssuer;
    /**
     * The methods used to inform the end user to open Company Portal to deliver Wi-Fi, VPN, or email profiles that use
     * certificates to the device.
     */
    notificationType?: DeviceManagementDerivedCredentialNotificationType;
}
export interface DeviceManagementResourceAccessProfileBase extends Entity {
    // DateTime profile was created
    creationDateTime?: NullableOption<string>;
    // Profile description
    description?: NullableOption<string>;
    // Profile display name
    displayName?: string;
    // DateTime profile was last modified
    lastModifiedDateTime?: NullableOption<string>;
    // Scope Tags
    roleScopeTagIds?: NullableOption<string[]>;
    // Version of the profile
    version?: number;
    // The list of assignments for the device configuration profile.
    assignments?: NullableOption<DeviceManagementResourceAccessProfileAssignment[]>;
}
export interface AppleUserInitiatedEnrollmentProfile extends Entity {
    // List of available enrollment type options
    availableEnrollmentTypeOptions?: NullableOption<AppleOwnerTypeEnrollmentType[]>;
    // Profile creation time
    createdDateTime?: string;
    // The default profile enrollment type. Possible values are: unknown, device, user.
    defaultEnrollmentType?: AppleUserInitiatedEnrollmentType;
    // Description of the profile
    description?: NullableOption<string>;
    // Name of the profile
    displayName?: NullableOption<string>;
    // Profile last modified time
    lastModifiedDateTime?: string;
    /**
     * The platform of the Device. Possible values are: android, androidForWork, iOS, macOS, windowsPhone81,
     * windows81AndLater, windows10AndLater, androidWorkProfile, unknown.
     */
    platform?: DevicePlatformType;
    // Priority, 0 is highest
    priority?: number;
    // The list of assignments for this profile.
    assignments?: NullableOption<AppleEnrollmentProfileAssignment[]>;
}
export interface DepOnboardingSetting extends Entity {
    // The Apple ID used to obtain the current token.
    appleIdentifier?: NullableOption<string>;
    // Consent granted for data sharing with Apple Dep Service
    dataSharingConsentGranted?: boolean;
    // When the service was onboarded.
    lastModifiedDateTime?: string;
    // When the service last syned with Intune
    lastSuccessfulSyncDateTime?: string;
    // Error code reported by Apple during last dep sync.
    lastSyncErrorCode?: number;
    // When Intune last requested a sync.
    lastSyncTriggeredDateTime?: string;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // Whether or not the Dep token sharing is enabled with the School Data Sync service.
    shareTokenWithSchoolDataSyncService?: boolean;
    // Gets synced device count
    syncedDeviceCount?: number;
    // When the token will expire.
    tokenExpirationDateTime?: string;
    // Friendly Name for Dep Token
    tokenName?: NullableOption<string>;
    // Gets or sets the Dep Token Type. Possible values are: none, dep, appleSchoolManager.
    tokenType?: DepTokenType;
    // Default iOS Enrollment Profile
    defaultIosEnrollmentProfile?: NullableOption<DepIOSEnrollmentProfile>;
    // Default MacOs Enrollment Profile
    defaultMacOsEnrollmentProfile?: NullableOption<DepMacOSEnrollmentProfile>;
    // The enrollment profiles.
    enrollmentProfiles?: NullableOption<EnrollmentProfile[]>;
    // The imported Apple device identities.
    importedAppleDeviceIdentities?: NullableOption<ImportedAppleDeviceIdentity[]>;
}
// tslint:disable-next-line: interface-name
export interface ImportedDeviceIdentity extends Entity {
    // Created Date Time of the device
    createdDateTime?: string;
    // The description of the device
    description?: NullableOption<string>;
    // The state of the device in Intune. Possible values are: unknown, enrolled, pendingReset, failed, notContacted, blocked.
    enrollmentState?: EnrollmentState;
    // Imported Device Identifier
    importedDeviceIdentifier?: NullableOption<string>;
    // Type of Imported Device Identity. Possible values are: unknown, imei, serialNumber.
    importedDeviceIdentityType?: ImportedDeviceIdentityType;
    // Last Contacted Date Time of the device
    lastContactedDateTime?: string;
    // Last Modified DateTime of the description
    lastModifiedDateTime?: string;
    // The platform of the Device. Possible values are: unknown, ios, android, windows, windowsMobile, macOS.
    platform?: Platform;
}
// tslint:disable-next-line: interface-name
export interface ImportedWindowsAutopilotDeviceIdentity extends Entity {
    // UPN of the user the device will be assigned
    assignedUserPrincipalName?: NullableOption<string>;
    // Group Tag of the Windows autopilot device.
    groupTag?: NullableOption<string>;
    // Hardware Blob of the Windows autopilot device.
    hardwareIdentifier?: NullableOption<number>;
    // The Import Id of the Windows autopilot device.
    importId?: NullableOption<string>;
    // Product Key of the Windows autopilot device.
    productKey?: NullableOption<string>;
    // Serial number of the Windows autopilot device.
    serialNumber?: NullableOption<string>;
    // Current state of the imported device.
    state?: NullableOption<ImportedWindowsAutopilotDeviceIdentityState>;
}
export interface WindowsAutopilotDeploymentProfile extends Entity {
    // Profile creation time
    createdDateTime?: string;
    // Description of the profile
    description?: NullableOption<string>;
    /**
     * The template used to name the AutoPilot Device. This can be a custom text and can also contain either the serial number
     * of the device, or a randomly generated number. The total length of the text generated by the template can be no more
     * than 15 characters.
     */
    deviceNameTemplate?: NullableOption<string>;
    // The AutoPilot device type that this profile is applicable to. Possible values are: windowsPc, surfaceHub2.
    deviceType?: WindowsAutopilotDeviceType;
    // Name of the profile
    displayName?: NullableOption<string>;
    // Enable Autopilot White Glove for the profile.
    enableWhiteGlove?: boolean;
    // Enrollment status screen setting
    enrollmentStatusScreenSettings?: NullableOption<WindowsEnrollmentStatusScreenSettings>;
    // HardwareHash Extraction for the profile
    extractHardwareHash?: boolean;
    // Language configured on the device
    language?: NullableOption<string>;
    // Profile last modified time
    lastModifiedDateTime?: string;
    // AzureAD management app ID used during client device-based enrollment discovery
    managementServiceAppId?: NullableOption<string>;
    // Out of box experience setting
    outOfBoxExperienceSettings?: NullableOption<OutOfBoxExperienceSettings>;
    // Scope tags for the profile.
    roleScopeTagIds?: NullableOption<string[]>;
    // The list of assigned devices for the profile.
    assignedDevices?: NullableOption<WindowsAutopilotDeviceIdentity[]>;
    // The list of group assignments for the profile.
    assignments?: NullableOption<WindowsAutopilotDeploymentProfileAssignment[]>;
}
export interface WindowsAutopilotDeviceIdentity extends Entity {
    // Addressable user name.
    addressableUserName?: NullableOption<string>;
    // AAD Device ID - to be deprecated
    azureActiveDirectoryDeviceId?: NullableOption<string>;
    // AAD Device ID
    azureAdDeviceId?: NullableOption<string>;
    // Profile set time of the Windows autopilot device.
    deploymentProfileAssignedDateTime?: string;
    /**
     * Profile assignment detailed status of the Windows autopilot device. Possible values are: none,
     * hardwareRequirementsNotMet, surfaceHubProfileNotSupported, holoLensProfileNotSupported, windowsPcProfileNotSupported.
     */
    deploymentProfileAssignmentDetailedStatus?: WindowsAutopilotProfileAssignmentDetailedStatus;
    /**
     * Profile assignment status of the Windows autopilot device. Possible values are: unknown, assignedInSync,
     * assignedOutOfSync, assignedUnkownSyncState, notAssigned, pending, failed.
     */
    deploymentProfileAssignmentStatus?: WindowsAutopilotProfileAssignmentStatus;
    // Display Name
    displayName?: NullableOption<string>;
    /**
     * Intune enrollment state of the Windows autopilot device. Possible values are: unknown, enrolled, pendingReset, failed,
     * notContacted, blocked.
     */
    enrollmentState?: EnrollmentState;
    // Group Tag of the Windows autopilot device.
    groupTag?: NullableOption<string>;
    // Intune Last Contacted Date Time of the Windows autopilot device.
    lastContactedDateTime?: string;
    // Managed Device ID
    managedDeviceId?: NullableOption<string>;
    // Oem manufacturer of the Windows autopilot device.
    manufacturer?: NullableOption<string>;
    // Model name of the Windows autopilot device.
    model?: NullableOption<string>;
    // Product Key of the Windows autopilot device.
    productKey?: NullableOption<string>;
    // Purchase Order Identifier of the Windows autopilot device.
    purchaseOrderIdentifier?: NullableOption<string>;
    // Resource Name.
    resourceName?: NullableOption<string>;
    // Serial number of the Windows autopilot device.
    serialNumber?: NullableOption<string>;
    // SKU Number
    skuNumber?: NullableOption<string>;
    // System Family
    systemFamily?: NullableOption<string>;
    // User Principal Name.
    userPrincipalName?: NullableOption<string>;
    // Deployment profile currently assigned to the Windows autopilot device.
    deploymentProfile?: NullableOption<WindowsAutopilotDeploymentProfile>;
    // Deployment profile intended to be assigned to the Windows autopilot device.
    intendedDeploymentProfile?: NullableOption<WindowsAutopilotDeploymentProfile>;
}
export interface WindowsAutopilotSettings extends Entity {
    // Last data sync date time with DDS service.
    lastManualSyncTriggerDateTime?: string;
    // Last data sync date time with DDS service.
    lastSyncDateTime?: string;
    /**
     * Indicates the status of sync with Device data sync (DDS) service. Possible values are: unknown, inProgress, completed,
     * failed.
     */
    syncStatus?: WindowsAutopilotSyncStatus;
}
export interface ManagementCondition extends Entity {
    // The applicable platforms for this management condition.
    applicablePlatforms?: DevicePlatformType[];
    // The time the management condition was created. Generated service side.
    createdDateTime?: NullableOption<string>;
    // The admin defined description of the management condition.
    description?: NullableOption<string>;
    // The admin defined name of the management condition.
    displayName?: string;
    // ETag of the management condition. Updated service side.
    eTag?: NullableOption<string>;
    // The time the management condition was last modified. Updated service side.
    modifiedDateTime?: NullableOption<string>;
    // Unique name for the management condition. Used in management condition expressions.
    uniqueName?: string;
    // The management condition statements associated to the management condition.
    managementConditionStatements?: NullableOption<ManagementConditionStatement[]>;
}
export interface ManagementConditionStatement extends Entity {
    /**
     * This is calculated from looking the management conditions associated to the management condition statement and finding
     * the intersection of applicable platforms.
     */
    applicablePlatforms?: DevicePlatformType[];
    // The time the management condition statement was created. Generated service side.
    createdDateTime?: NullableOption<string>;
    // The admin defined description of the management condition statement.
    description?: NullableOption<string>;
    // The admin defined name of the management condition statement.
    displayName?: string;
    // ETag of the management condition statement. Updated service side.
    eTag?: NullableOption<string>;
    /**
     * The management condition statement expression used to evaluate if a management condition statement was
     * activated/deactivated.
     */
    expression?: NullableOption<ManagementConditionExpression>;
    // The time the management condition statement was last modified. Updated service side.
    modifiedDateTime?: NullableOption<string>;
    // The management conditions associated to the management condition statement.
    managementConditions?: NullableOption<ManagementCondition[]>;
}
export interface GroupPolicyMigrationReport extends Entity {
    // The date and time at which the GroupPolicyMigrationReport was created.
    createdDateTime?: string;
    // The name of Group Policy Object from the GPO Xml Content
    displayName?: NullableOption<string>;
    // The date and time at which the GroupPolicyMigrationReport was created.
    groupPolicyCreatedDateTime?: string;
    // The date and time at which the GroupPolicyMigrationReport was last modified.
    groupPolicyLastModifiedDateTime?: string;
    // The Group Policy Object GUID from GPO Xml content
    groupPolicyObjectId?: string;
    // The date and time at which the GroupPolicyMigrationReport was last modified.
    lastModifiedDateTime?: string;
    /**
     * The Intune coverage for the associated Group Policy Object file. Possible values are: none, partial, complete, error,
     * notApplicable.
     */
    migrationReadiness?: GroupPolicyMigrationReadiness;
    // The distinguished name of the OU.
    ouDistinguishedName?: NullableOption<string>;
    // The number of Group Policy Settings supported by Intune.
    supportedSettingsCount?: number;
    // The Percentage of Group Policy Settings supported by Intune.
    supportedSettingsPercent?: number;
    // The Targeted in AD property from GPO Xml Content
    targetedInActiveDirectory?: boolean;
    // The total number of Group Policy Settings from GPO file.
    totalSettingsCount?: number;
    // A list of group policy settings to MDM/Intune mappings.
    groupPolicySettingMappings?: NullableOption<GroupPolicySettingMapping[]>;
    // A list of unsupported group policy extensions inside the Group Policy Object.
    unsupportedGroupPolicyExtensions?: NullableOption<UnsupportedGroupPolicyExtension[]>;
}
export interface GroupPolicyObjectFile extends Entity {
    // The Group Policy Object file content.
    content?: string;
    // The date and time at which the GroupPolicy was first uploaded.
    createdDateTime?: string;
    // The Group Policy Object GUID from GPO Xml content
    groupPolicyObjectId?: string;
    // The date and time at which the GroupPolicyObjectFile was last modified.
    lastModifiedDateTime?: string;
    // The distinguished name of the OU.
    ouDistinguishedName?: string;
}
export interface GroupPolicyCategory extends Entity {
    // The string id of the category's display name
    displayName?: NullableOption<string>;
    // Defines if the category is a root category
    isRoot?: boolean;
    // The date and time the entity was last modified.
    lastModifiedDateTime?: string;
    // The children categories
    children?: NullableOption<GroupPolicyCategory[]>;
    // The id of the definition file the category came from
    definitionFile?: NullableOption<GroupPolicyDefinitionFile>;
    // The immediate GroupPolicyDefinition children of the category
    definitions?: NullableOption<GroupPolicyDefinition[]>;
    // The parent category
    parent?: NullableOption<GroupPolicyCategory>;
}
export interface GroupPolicyConfiguration extends Entity {
    // The date and time the object was created.
    createdDateTime?: string;
    // User provided description for the resource object.
    description?: NullableOption<string>;
    // User provided name for the resource object.
    displayName?: string;
    // The date and time the entity was last modified.
    lastModifiedDateTime?: string;
    // The list of scope tags for the configuration.
    roleScopeTagIds?: NullableOption<string[]>;
    // The list of group assignments for the configuration.
    assignments?: NullableOption<GroupPolicyConfigurationAssignment[]>;
    // The list of enabled or disabled group policy definition values for the configuration.
    definitionValues?: NullableOption<GroupPolicyDefinitionValue[]>;
}
export interface GroupPolicyDefinitionFile extends Entity {
    // The localized description of the policy settings in the ADMX file. The default value is empty.
    description?: NullableOption<string>;
    // The localized friendly name of the ADMX file.
    displayName?: NullableOption<string>;
    // The supported language codes for the ADMX file.
    languageCodes?: NullableOption<string[]>;
    // The date and time the entity was last modified.
    lastModifiedDateTime?: string;
    // Specifies the type of group policy. Possible values are: admxBacked, admxIngested.
    policyType?: GroupPolicyType;
    // The revision version associated with the file.
    revision?: NullableOption<string>;
    // Specifies the URI used to identify the namespace within the ADMX file.
    targetNamespace?: NullableOption<string>;
    // Specifies the logical name that refers to the namespace within the ADMX file.
    targetPrefix?: NullableOption<string>;
    // The group policy definitions associated with the file.
    definitions?: NullableOption<GroupPolicyDefinition[]>;
}
export interface GroupPolicyDefinition extends Entity {
    // The localized full category path for the policy.
    categoryPath?: NullableOption<string>;
    // Identifies the type of groups the policy can be applied to. Possible values are: user, machine.
    classType?: GroupPolicyDefinitionClassType;
    // The localized policy name.
    displayName?: NullableOption<string>;
    // The localized explanation or help text associated with the policy. The default value is empty.
    explainText?: NullableOption<string>;
    // The category id of the parent category
    groupPolicyCategoryId?: string;
    // The date and time the entity was last modified.
    lastModifiedDateTime?: string;
    // Specifies the type of group policy. Possible values are: admxBacked, admxIngested.
    policyType?: GroupPolicyType;
    // Localized string used to specify what operating system or application version is affected by the policy.
    supportedOn?: NullableOption<string>;
    // The group policy category associated with the definition.
    category?: NullableOption<GroupPolicyCategory>;
    // The group policy file associated with the definition.
    definitionFile?: NullableOption<GroupPolicyDefinitionFile>;
    // The group policy presentations associated with the definition.
    presentations?: NullableOption<GroupPolicyPresentation[]>;
}
export interface GroupPolicyUploadedDefinitionFile extends GroupPolicyDefinitionFile {
    // The contents of the uploaded ADMX file.
    content?: NullableOption<number>;
    // The default language of the uploaded ADMX file.
    defaultLanguageCode?: NullableOption<string>;
    // The file name of the uploaded ADML file.
    fileName?: NullableOption<string>;
    // The list of ADML files associated with the uploaded ADMX file.
    groupPolicyUploadedLanguageFiles?: NullableOption<GroupPolicyUploadedLanguageFile[]>;
    /**
     * The upload status of the uploaded ADMX file. Possible values are: none, uploadInProgress, available, assigned,
     * removalInProgress, uploadFailed, removalFailed.
     */
    status?: GroupPolicyUploadedDefinitionFileStatus;
    // The uploaded time of the uploaded ADMX file.
    uploadDateTime?: string;
    // The list of operations on the uploaded ADMX file.
    groupPolicyOperations?: NullableOption<GroupPolicyOperation[]>;
}
export interface MicrosoftTunnelConfiguration extends Entity {
    // Additional settings that may be applied to the server
    advancedSettings?: NullableOption<KeyValuePair[]>;
    // The Default Domain appendix that will be used by the clients
    defaultDomainSuffix?: NullableOption<string>;
    // The MicrosoftTunnelConfiguration's description
    description?: NullableOption<string>;
    // The MicrosoftTunnelConfiguration's display name
    displayName?: NullableOption<string>;
    // The DNS servers that will be used by the clients
    dnsServers?: NullableOption<string[]>;
    // When the MicrosoftTunnelConfiguration was last updated
    lastUpdateDateTime?: string;
    // The port that both TCP and UPD will listen over on the server
    listenPort?: NullableOption<number>;
    // The subnet that will be used to allocate virtual address for the clients
    network?: NullableOption<string>;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // Subsets of the routes that will not be routed by the server
    routesExclude?: NullableOption<string[]>;
    // The routs that will be routed by the server
    routesInclude?: NullableOption<string[]>;
    // The domains that will be resolved using the provided dns servers
    splitDNS?: NullableOption<string[]>;
}
export interface MicrosoftTunnelHealthThreshold extends Entity {
    // The default threshold for being healthy
    defaultHealthyThreshold?: number;
    // The default threshold for being unhealthy
    defaultUnhealthyThreshold?: number;
    // The threshold for being healthy
    healthyThreshold?: number;
    // The threshold for being unhealthy
    unhealthyThreshold?: number;
}
export interface MicrosoftTunnelServerLogCollectionResponse extends Entity {
    // The end time of the logs collected
    endDateTime?: string;
    // The time when the log collection is expired
    expiryDateTime?: string;
    // The time when the log collection was requested
    requestDateTime?: string;
    // ID of the server the log collection is requested upon
    serverId?: NullableOption<string>;
    // The size of the logs in bytes
    sizeInBytes?: number;
    // The start time of the logs collected
    startDateTime?: string;
    // The status of log collection. Possible values are: pending, completed, failed.
    status?: MicrosoftTunnelLogCollectionStatus;
}
export interface MicrosoftTunnelSite extends Entity {
    // The MicrosoftTunnelSite's description
    description?: NullableOption<string>;
    // The MicrosoftTunnelSite's display name
    displayName?: NullableOption<string>;
    // The MicrosoftTunnelSite's public domain name or IP address
    publicAddress?: NullableOption<string>;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // The site's automatic upgrade setting. True for automatic upgrades, false for manual control
    upgradeAutomatically?: boolean;
    // True if an upgrade is available
    upgradeAvailable?: boolean;
    // The site's upgrade window end time of day
    upgradeWindowEndTime?: NullableOption<string>;
    // The site's upgrade window start time of day
    upgradeWindowStartTime?: NullableOption<string>;
    // The site's timezone represented as a minute offset from UTC
    upgradeWindowUtcOffsetInMinutes?: NullableOption<number>;
    // The MicrosoftTunnelConfiguration that has been applied to this MicrosoftTunnelSite
    microsoftTunnelConfiguration?: NullableOption<MicrosoftTunnelConfiguration>;
    // A list of MicrosoftTunnelServers that are registered to this MicrosoftTunnelSite
    microsoftTunnelServers?: NullableOption<MicrosoftTunnelServer[]>;
}
export interface NotificationMessageTemplate extends Entity {
    /**
     * The Message Template Branding Options. Branding is defined in the Intune Admin Console. Possible values are: none,
     * includeCompanyLogo, includeCompanyName, includeContactInformation, includeCompanyPortalLink.
     */
    brandingOptions?: NotificationTemplateBrandingOptions;
    // The default locale to fallback onto when the requested locale is not available.
    defaultLocale?: NullableOption<string>;
    // Display name for the Notification Message Template.
    displayName?: string;
    // DateTime the object was last modified.
    lastModifiedDateTime?: string;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // The list of localized messages for this Notification Message Template.
    localizedNotificationMessages?: NullableOption<LocalizedNotificationMessage[]>;
}
export interface DeviceManagementDomainJoinConnector extends Entity {
    // The connector display name.
    displayName?: NullableOption<string>;
    // Last time connector contacted Intune.
    lastConnectionDateTime?: string;
    // The connector state. Possible values are: active, error, inactive.
    state?: DeviceManagementDomainJoinConnectorState;
    // The version of the connector.
    version?: string;
}
export interface ConfigManagerCollection extends Entity {
    // The collection identifier in SCCM.
    collectionIdentifier?: NullableOption<string>;
    // The created date.
    createdDateTime?: string;
    // The DisplayName.
    displayName?: NullableOption<string>;
    // The Hierarchy Identifier.
    hierarchyIdentifier?: NullableOption<string>;
    // The HierarchyName.
    hierarchyName?: NullableOption<string>;
    // The last modified date.
    lastModifiedDateTime?: string;
}
export interface ResourceOperation extends Entity {
    /**
     * Type of action this operation is going to perform. The actionName should be concise and limited to as few words as
     * possible.
     */
    actionName?: NullableOption<string>;
    /**
     * Description of the resource operation. The description is used in mouse-over text for the operation when shown in the
     * Azure Portal.
     */
    description?: NullableOption<string>;
    // Determines whether the Permission is validated for Scopes defined per Role Assignment.
    enabledForScopeValidation?: boolean;
    // Resource category to which this Operation belongs.
    resource?: NullableOption<string>;
    // Name of the Resource this operation is performed on.
    resourceName?: NullableOption<string>;
}
export interface RoleAssignment extends Entity {
    // Description of the Role Assignment.
    description?: NullableOption<string>;
    // The display or friendly name of the role Assignment.
    displayName?: NullableOption<string>;
    // List of ids of role scope member security groups. These are IDs from Azure Active Directory.
    resourceScopes?: NullableOption<string[]>;
    // List of ids of role scope member security groups. These are IDs from Azure Active Directory.
    scopeMembers?: NullableOption<string[]>;
    /**
     * Specifies the type of scope for a Role Assignment. Default type 'ResourceScope' allows assignment of ResourceScopes.
     * For 'AllDevices', 'AllLicensedUsers', and 'AllDevicesAndLicensedUsers', the ResourceScopes property should be left
     * empty. Possible values are: resourceScope, allDevices, allLicensedUsers, allDevicesAndLicensedUsers.
     */
    scopeType?: RoleAssignmentScopeType;
    // Role definition this assignment is part of.
    roleDefinition?: NullableOption<RoleDefinition>;
}
export interface DeviceAndAppManagementRoleAssignment extends RoleAssignment {
    // The list of ids of role member security groups. These are IDs from Azure Active Directory.
    members?: NullableOption<string[]>;
    // The set of Role Scope Tags defined on the Role Assignment.
    roleScopeTags?: NullableOption<RoleScopeTag[]>;
}
export interface RoleDefinition extends Entity {
    // Description of the Role definition.
    description?: NullableOption<string>;
    // Display Name of the Role definition.
    displayName?: NullableOption<string>;
    // Type of Role. Set to True if it is built-in, or set to False if it is a custom role definition.
    isBuiltIn?: boolean;
    // Type of Role. Set to True if it is built-in, or set to False if it is a custom role definition.
    isBuiltInRoleDefinition?: boolean;
    /**
     * List of Role Permissions this role is allowed to perform. These must match the actionName that is defined as part of
     * the rolePermission.
     */
    permissions?: NullableOption<RolePermission[]>;
    /**
     * List of Role Permissions this role is allowed to perform. These must match the actionName that is defined as part of
     * the rolePermission.
     */
    rolePermissions?: NullableOption<RolePermission[]>;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // List of Role assignments for this role definition.
    roleAssignments?: NullableOption<RoleAssignment[]>;
}
export interface RoleScopeTag extends Entity {
    // Description of the Role Scope Tag.
    description?: NullableOption<string>;
    // The display or friendly name of the Role Scope Tag.
    displayName?: NullableOption<string>;
    // Description of the Role Scope Tag.
    isBuiltIn?: boolean;
    // The list of assignments for this Role Scope Tag.
    assignments?: NullableOption<RoleScopeTagAutoAssignment[]>;
}
export interface RemoteAssistancePartner extends Entity {
    // Display name of the partner.
    displayName?: NullableOption<string>;
    // Timestamp of the last request sent to Intune by the TEM partner.
    lastConnectionDateTime?: string;
    // When the OnboardingStatus is Onboarding, This is the date time when the onboarding request expires.
    onboardingRequestExpiryDateTime?: string;
    /**
     * A friendly description of the current TeamViewer connector status. Possible values are: notOnboarded, onboarding,
     * onboarded.
     */
    onboardingStatus?: RemoteAssistanceOnboardingStatus;
    // URL of the partner's onboarding portal, where an administrator can configure their Remote Assistance service.
    onboardingUrl?: NullableOption<string>;
}
export interface RemoteAssistanceSettings extends Entity {
    /**
     * Indicates if sessions to unenrolled devices are allowed for the account. This setting is configurable by the admin.
     * Default value is false.
     */
    allowSessionsToUnenrolledDevices?: boolean;
    /**
     * The current state of remote assistance for the account. Possible values are: notConfigured, disabled, enabled. This
     * setting is configurable by the admin. Remote assistance settings that have not yet been configured by the admin have a
     * notConfigured state. Returned by default.
     */
    remoteAssistanceState?: RemoteAssistanceState;
}
export interface DeviceManagementReports extends Entity {
    // Entity representing the configuration of a cached report
    cachedReportConfigurations?: NullableOption<DeviceManagementCachedReportConfiguration[]>;
    // Entity representing a job to export a report
    exportJobs?: NullableOption<DeviceManagementExportJob[]>;
    // Entity representing a schedule for which reports are delivered
    reportSchedules?: NullableOption<DeviceManagementReportSchedule[]>;
}
export interface EmbeddedSIMActivationCodePool extends Entity {
    // The total count of activation codes which belong to this pool.
    activationCodeCount?: number;
    /**
     * The activation codes which belong to this pool. This navigation property is used to post activation codes to Intune but
     * cannot be used to read activation codes from Intune.
     */
    activationCodes?: EmbeddedSIMActivationCode[];
    // The time the embedded SIM activation code pool was created. Generated service side.
    createdDateTime?: string;
    // The admin defined name of the embedded SIM activation code pool.
    displayName?: string;
    // The time the embedded SIM activation code pool was last modified. Updated service side.
    modifiedDateTime?: string;
    // Navigational property to a list of targets to which this pool is assigned.
    assignments?: NullableOption<EmbeddedSIMActivationCodePoolAssignment[]>;
    // Navigational property to a list of device states for this pool.
    deviceStates?: NullableOption<EmbeddedSIMDeviceState[]>;
}
export interface TelecomExpenseManagementPartner extends Entity {
    // Whether the partner's AAD app has been authorized to access Intune.
    appAuthorized?: boolean;
    // Display name of the TEM partner.
    displayName?: NullableOption<string>;
    // Whether Intune's connection to the TEM service is currently enabled or disabled.
    enabled?: boolean;
    // Timestamp of the last request sent to Intune by the TEM partner.
    lastConnectionDateTime?: string;
    // URL of the TEM partner's administrative control panel, where an administrator can configure their TEM service.
    url?: NullableOption<string>;
}
export interface DeviceManagementAutopilotEvent extends Entity {
    // Time spent in user ESP.
    accountSetupDuration?: string;
    /**
     * Deployment status for the enrollment status page account setup phase. Possible values are: unknown, success,
     * inProgress, failure, successWithTimeout, notAttempted, disabled.
     */
    accountSetupStatus?: WindowsAutopilotDeploymentState;
    // Autopilot deployment duration including enrollment.
    deploymentDuration?: string;
    // Deployment end time.
    deploymentEndDateTime?: string;
    // Deployment start time.
    deploymentStartDateTime?: string;
    /**
     * Deployment state like Success, Failure, InProgress, SuccessWithTimeout. Possible values are: unknown, success,
     * inProgress, failure, successWithTimeout, notAttempted, disabled.
     */
    deploymentState?: WindowsAutopilotDeploymentState;
    // Total deployment duration from enrollment to Desktop screen.
    deploymentTotalDuration?: string;
    // Device id associated with the object
    deviceId?: NullableOption<string>;
    // Time spent in device enrollment.
    devicePreparationDuration?: string;
    // Device registration date.
    deviceRegisteredDateTime?: string;
    // Device serial number.
    deviceSerialNumber?: NullableOption<string>;
    // Time spent in device ESP.
    deviceSetupDuration?: string;
    /**
     * Deployment status for the enrollment status page device setup phase. Possible values are: unknown, success, inProgress,
     * failure, successWithTimeout, notAttempted, disabled.
     */
    deviceSetupStatus?: WindowsAutopilotDeploymentState;
    // Enrollment failure details.
    enrollmentFailureDetails?: NullableOption<string>;
    // Device enrollment start date.
    enrollmentStartDateTime?: string;
    /**
     * Enrollment state like Enrolled, Failed. Possible values are: unknown, enrolled, pendingReset, failed, notContacted,
     * blocked.
     */
    enrollmentState?: EnrollmentState;
    /**
     * Enrollment type. Possible values are: unknown, azureADJoinedWithAutopilotProfile, offlineDomainJoined,
     * azureADJoinedUsingDeviceAuthWithAutopilotProfile, azureADJoinedUsingDeviceAuthWithoutAutopilotProfile,
     * azureADJoinedWithOfflineAutopilotProfile, azureADJoinedWithWhiteGlove, offlineDomainJoinedWithWhiteGlove,
     * offlineDomainJoinedWithOfflineAutopilotProfile.
     */
    enrollmentType?: WindowsAutopilotEnrollmentType;
    // Time when the event occurred .
    eventDateTime?: string;
    // Managed device name.
    managedDeviceName?: NullableOption<string>;
    // Device operating system version.
    osVersion?: NullableOption<string>;
    // Count of applications targeted.
    targetedAppCount?: number;
    // Count of policies targeted.
    targetedPolicyCount?: number;
    // User principal name used to enroll the device.
    userPrincipalName?: NullableOption<string>;
    // Enrollment Status Page profile name
    windows10EnrollmentCompletionPageConfigurationDisplayName?: NullableOption<string>;
    // Enrollment Status Page profile ID
    windows10EnrollmentCompletionPageConfigurationId?: NullableOption<string>;
    // Autopilot profile name.
    windowsAutopilotDeploymentProfileDisplayName?: NullableOption<string>;
    // Policy and application status details for this device.
    policyStatusDetails?: NullableOption<DeviceManagementAutopilotPolicyStatusDetail[]>;
}
export interface WindowsFeatureUpdateProfile extends Entity {
    // The date time that the profile was created.
    createdDateTime?: string;
    // Friendly display name of the quality update profile deployable content
    deployableContentDisplayName?: NullableOption<string>;
    // The description of the profile which is specified by the user.
    description?: NullableOption<string>;
    // The display name of the profile.
    displayName?: string;
    // The last supported date for a feature update
    endOfSupportDate?: NullableOption<string>;
    /**
     * The feature update version that will be deployed to the devices targeted by this profile. The version could be any
     * supported version for example 1709, 1803 or 1809 and so on.
     */
    featureUpdateVersion?: string;
    // The date time that the profile was last modified.
    lastModifiedDateTime?: string;
    // List of Scope Tags for this Feature Update entity.
    roleScopeTagIds?: NullableOption<string[]>;
    // The list of group assignments of the profile.
    assignments?: NullableOption<WindowsFeatureUpdateProfileAssignment[]>;
    // The list of device states this profile targeted to
    deviceUpdateStates?: NullableOption<WindowsUpdateState[]>;
}
export interface WindowsQualityUpdateProfile extends Entity {
    // The date time that the profile was created.
    createdDateTime?: string;
    // Friendly display name of the quality update profile deployable content
    deployableContentDisplayName?: NullableOption<string>;
    // The description of the profile which is specified by the user.
    description?: NullableOption<string>;
    // The display name for the profile.
    displayName?: string;
    // Expedited update settings.
    expeditedUpdateSettings?: NullableOption<ExpeditedWindowsQualityUpdateSettings>;
    // The date time that the profile was last modified.
    lastModifiedDateTime?: string;
    // Friendly release date to display for a Quality Update release
    releaseDateDisplayName?: NullableOption<string>;
    // List of Scope Tags for this Quality Update entity.
    roleScopeTagIds?: NullableOption<string[]>;
    // The list of group assignments of the profile.
    assignments?: NullableOption<WindowsQualityUpdateProfileAssignment[]>;
}
export interface WindowsUpdateCatalogItem extends Entity {
    // The display name for the catalog item.
    displayName?: string;
    // The last supported date for a catalog item
    endOfSupportDate?: NullableOption<string>;
    // The date the catalog item was released
    releaseDateTime?: string;
}
// tslint:disable-next-line: interface-name
export interface IntuneBrandingProfile extends Entity {
    // Collection of blocked actions on the company portal as per platform and device ownership types.
    companyPortalBlockedActions?: NullableOption<CompanyPortalBlockedAction[]>;
    // E-mail address of the person/organization responsible for IT support
    contactITEmailAddress?: NullableOption<string>;
    // Name of the person/organization responsible for IT support
    contactITName?: NullableOption<string>;
    // Text comments regarding the person/organization responsible for IT support
    contactITNotes?: NullableOption<string>;
    // Phone number of the person/organization responsible for IT support
    contactITPhoneNumber?: NullableOption<string>;
    // Time when the BrandingProfile was created
    createdDateTime?: string;
    // Text comments regarding what the admin has access to on the device
    customCanSeePrivacyMessage?: NullableOption<string>;
    // Text comments regarding what the admin doesn't have access to on the device
    customCantSeePrivacyMessage?: NullableOption<string>;
    // Text comments regarding what the admin doesn't have access to on the device
    customPrivacyMessage?: NullableOption<string>;
    /**
     * Applies to telemetry sent from all clients to the Intune service. When disabled, all proactive troubleshooting and
     * issue warnings within the client are turned off, and telemetry settings appear inactive or hidden to the device user.
     */
    disableClientTelemetry?: boolean;
    // Company/organization name that is displayed to end users
    displayName?: NullableOption<string>;
    /**
     * Customized device enrollment flow displayed to the end user . Possible values are: availableWithPrompts,
     * availableWithoutPrompts, unavailable.
     */
    enrollmentAvailability?: EnrollmentAvailabilityOptions;
    // Boolean that represents whether the profile is used as default or not
    isDefaultProfile?: boolean;
    // Boolean that represents whether the adminsistrator has disabled the 'Factory Reset' action on corporate owned devices.
    isFactoryResetDisabled?: boolean;
    // Boolean that represents whether the adminsistrator has disabled the 'Remove Device' action on corporate owned devices.
    isRemoveDeviceDisabled?: boolean;
    // Customized image displayed in Company Portal apps landing page
    landingPageCustomizedImage?: NullableOption<MimeContent>;
    // Time when the BrandingProfile was last modified
    lastModifiedDateTime?: string;
    // Logo image displayed in Company Portal apps which have a light background behind the logo
    lightBackgroundLogo?: NullableOption<MimeContent>;
    // Display name of the company/organization’s IT helpdesk site
    onlineSupportSiteName?: NullableOption<string>;
    // URL to the company/organization’s IT helpdesk site
    onlineSupportSiteUrl?: NullableOption<string>;
    // URL to the company/organization’s privacy policy
    privacyUrl?: NullableOption<string>;
    // Description of the profile
    profileDescription?: NullableOption<string>;
    // Name of the profile
    profileName?: NullableOption<string>;
    // List of scope tags assigned to the branding profile
    roleScopeTagIds?: NullableOption<string[]>;
    /**
     * Boolean that indicates if a push notification is sent to users when their device ownership type changes from personal
     * to corporate
     */
    sendDeviceOwnershipChangePushNotification?: boolean;
    // Boolean that indicates if AzureAD Enterprise Apps will be shown in Company Portal
    showAzureADEnterpriseApps?: boolean;
    // Boolean that represents whether the administrator-supplied display name will be shown next to the logo image or not
    showDisplayNameNextToLogo?: boolean;
    // Boolean that represents whether the administrator-supplied logo images are shown or not
    showLogo?: boolean;
    // Boolean that indicates if Office WebApps will be shown in Company Portal
    showOfficeWebApps?: boolean;
    // Primary theme color used in the Company Portal applications and web portal
    themeColor?: NullableOption<RgbColor>;
    // Logo image displayed in Company Portal apps which have a theme color background behind the logo
    themeColorLogo?: NullableOption<MimeContent>;
    // The list of group assignments for the branding profile
    assignments?: NullableOption<IntuneBrandingProfileAssignment[]>;
}
export interface WindowsInformationProtectionAppLearningSummary extends Entity {
    // Application Name
    applicationName?: NullableOption<string>;
    // Application Type. Possible values are: universal, desktop.
    applicationType?: ApplicationType;
    // Device Count
    deviceCount?: number;
}
export interface WindowsInformationProtectionNetworkLearningSummary extends Entity {
    // Device Count
    deviceCount?: number;
    // Website url
    url?: NullableOption<string>;
}
export interface UserPFXCertificate extends Entity {
    // Date/time when this PFX certificate was imported.
    createdDateTime?: string;
    // Encrypted PFX blob.
    encryptedPfxBlob?: NullableOption<number>;
    // Encrypted PFX password.
    encryptedPfxPassword?: NullableOption<string>;
    // Certificate's validity expiration date/time.
    expirationDateTime?: string;
    /**
     * Certificate's intended purpose from the point-of-view of deployment. Possible values are: unassigned, smimeEncryption,
     * smimeSigning, vpn, wifi.
     */
    intendedPurpose?: UserPfxIntendedPurpose;
    // Name of the key (within the provider) used to encrypt the blob.
    keyName?: NullableOption<string>;
    // Date/time when this PFX certificate was last modified.
    lastModifiedDateTime?: string;
    /**
     * Padding scheme used by the provider during encryption/decryption. Possible values are: none, pkcs1, oaepSha1,
     * oaepSha256, oaepSha384, oaepSha512.
     */
    paddingScheme?: UserPfxPaddingScheme;
    // Crypto provider used to encrypt this blob.
    providerName?: NullableOption<string>;
    // Certificate's validity start date/time.
    startDateTime?: string;
    // SHA-1 thumbprint of the PFX certificate.
    thumbprint?: NullableOption<string>;
    // User Principal Name of the PFX certificate.
    userPrincipalName?: NullableOption<string>;
}
export interface AssignmentFilterEvaluationStatusDetails extends Entity {
    // PayloadId on which filter has been applied.
    payloadId?: NullableOption<string>;
}
export interface DeviceCompliancePolicyState extends Entity {
    // The name of the policy for this policyBase
    displayName?: NullableOption<string>;
    // Platform type that the policy applies to
    platformType?: PolicyPlatformType;
    // Count of how many setting a policy holds
    settingCount?: number;
    settingStates?: NullableOption<DeviceCompliancePolicySettingState[]>;
    // The compliance state of the policy
    state?: ComplianceStatus;
    // User unique identifier, must be Guid
    userId?: NullableOption<string>;
    // User Principal Name
    userPrincipalName?: NullableOption<string>;
    // The version of the policy
    version?: number;
}
export interface DeviceConfigurationState extends Entity {
    // The name of the policy for this policyBase
    displayName?: NullableOption<string>;
    // Platform type that the policy applies to
    platformType?: PolicyPlatformType;
    // Count of how many setting a policy holds
    settingCount?: number;
    settingStates?: NullableOption<DeviceConfigurationSettingState[]>;
    // The compliance state of the policy
    state?: ComplianceStatus;
    // User unique identifier, must be Guid
    userId?: NullableOption<string>;
    // User Principal Name
    userPrincipalName?: NullableOption<string>;
    // The version of the policy
    version?: number;
}
export interface ManagedDeviceMobileAppConfigurationState extends Entity {
    // The name of the policy for this policyBase
    displayName?: NullableOption<string>;
    // Platform type that the policy applies to
    platformType?: PolicyPlatformType;
    // Count of how many setting a policy holds
    settingCount?: number;
    settingStates?: NullableOption<ManagedDeviceMobileAppConfigurationSettingState[]>;
    // The compliance state of the policy
    state?: ComplianceStatus;
    // User unique identifier, must be Guid
    userId?: NullableOption<string>;
    // User Principal Name
    userPrincipalName?: NullableOption<string>;
    // The version of the policy
    version?: number;
}
export interface SecurityBaselineState extends Entity {
    // The display name of the security baseline
    displayName?: string;
    // The security baseline template id
    securityBaselineTemplateId?: NullableOption<string>;
    // Security baseline compliance state
    state?: SecurityBaselineComplianceState;
    // User Principal Name
    userPrincipalName?: NullableOption<string>;
    // The security baseline state for different settings for a device
    settingStates?: NullableOption<SecurityBaselineSettingState[]>;
}
export interface DeviceLogCollectionResponse extends Entity {
    // The error code, if any. Valid values -9.22337203685478E+18 to 9.22337203685478E+18
    errorCode?: number;
    // The DateTime of the expiration of the logs
    expirationDateTimeUTC?: NullableOption<string>;
    // The UPN for who initiated the request
    initiatedByUserPrincipalName?: NullableOption<string>;
    // The device Id
    managedDeviceId?: string;
    // The DateTime the request was received
    receivedDateTimeUTC?: NullableOption<string>;
    // The DateTime of the request
    requestedDateTimeUTC?: NullableOption<string>;
    // The size of the logs. Valid values -1.79769313486232E+308 to 1.79769313486232E+308
    size?: number;
    // The status of the log collection request
    status?: NullableOption<string>;
}
export interface WindowsProtectionState extends Entity {
    // Current anti malware version
    antiMalwareVersion?: NullableOption<string>;
    /**
     * Computer's state (like clean or pending full scan or pending reboot etc). Possible values are: clean, fullScanPending,
     * rebootPending, manualStepsPending, offlineScanPending, critical.
     */
    deviceState?: NullableOption<WindowsDeviceHealthState>;
    // Current endpoint protection engine's version
    engineVersion?: NullableOption<string>;
    // Full scan overdue or not?
    fullScanOverdue?: NullableOption<boolean>;
    // Full scan required or not?
    fullScanRequired?: NullableOption<boolean>;
    // Indicates whether the device is a virtual machine.
    isVirtualMachine?: NullableOption<boolean>;
    // Last quick scan datetime
    lastFullScanDateTime?: NullableOption<string>;
    // Last full scan signature version
    lastFullScanSignatureVersion?: NullableOption<string>;
    // Last quick scan datetime
    lastQuickScanDateTime?: NullableOption<string>;
    // Last quick scan signature version
    lastQuickScanSignatureVersion?: NullableOption<string>;
    // Last device health status reported time
    lastReportedDateTime?: NullableOption<string>;
    // Anti malware is enabled or not
    malwareProtectionEnabled?: NullableOption<boolean>;
    // Network inspection system enabled or not?
    networkInspectionSystemEnabled?: NullableOption<boolean>;
    /**
     * Product Status of Windows Defender Antivirus. Possible values are: noStatus, serviceNotRunning,
     * serviceStartedWithoutMalwareProtection, pendingFullScanDueToThreatAction, pendingRebootDueToThreatAction,
     * pendingManualStepsDueToThreatAction, avSignaturesOutOfDate, asSignaturesOutOfDate,
     * noQuickScanHappenedForSpecifiedPeriod, noFullScanHappenedForSpecifiedPeriod, systemInitiatedScanInProgress,
     * systemInitiatedCleanInProgress, samplesPendingSubmission, productRunningInEvaluationMode,
     * productRunningInNonGenuineMode, productExpired, offlineScanRequired, serviceShutdownAsPartOfSystemShutdown,
     * threatRemediationFailedCritically, threatRemediationFailedNonCritically, noStatusFlagsSet, platformOutOfDate,
     * platformUpdateInProgress, platformAboutToBeOutdated, signatureOrPlatformEndOfLifeIsPastOrIsImpending,
     * windowsSModeSignaturesInUseOnNonWin10SInstall.
     */
    productStatus?: NullableOption<WindowsDefenderProductStatus>;
    // Quick scan overdue or not?
    quickScanOverdue?: NullableOption<boolean>;
    // Real time protection is enabled or not?
    realTimeProtectionEnabled?: NullableOption<boolean>;
    // Reboot required or not?
    rebootRequired?: NullableOption<boolean>;
    // Signature out of date or not?
    signatureUpdateOverdue?: NullableOption<boolean>;
    // Current malware definitions version
    signatureVersion?: NullableOption<string>;
    // Indicates whether the Windows Defender tamper protection feature is enabled.
    tamperProtectionEnabled?: NullableOption<boolean>;
    // Device malware list
    detectedMalwareState?: NullableOption<WindowsDeviceMalwareState[]>;
}
export interface RbacApplicationMultiple extends Entity {
    resourceNamespaces?: NullableOption<UnifiedRbacResourceNamespace[]>;
    roleAssignments?: NullableOption<UnifiedRoleAssignmentMultiple[]>;
    roleDefinitions?: NullableOption<UnifiedRoleDefinition[]>;
}
export interface UnifiedRbacResourceNamespace extends Entity {
    name?: string;
    resourceActions?: NullableOption<UnifiedRbacResourceAction[]>;
}
export interface UnifiedRoleAssignmentMultiple extends Entity {
    /**
     * Ids of the app specific scopes when the assignment scopes are app specific. The scopes of an assignment determines the
     * set of resources for which the principal has been granted access. Directory scopes are shared scopes stored in the
     * directory that are understood by multiple applications. Use / for tenant-wide scope. App scopes are scopes that are
     * defined and understood by this application only.
     */
    appScopeIds?: NullableOption<string[]>;
    condition?: NullableOption<string>;
    // Description of the role assignment.
    description?: NullableOption<string>;
    /**
     * Ids of the directory objects representing the scopes of the assignment. The scopes of an assignment determine the set
     * of resources for which the principals have been granted access. Directory scopes are shared scopes stored in the
     * directory that are understood by multiple applications. App scopes are scopes that are defined and understood by this
     * application only.
     */
    directoryScopeIds?: NullableOption<string[]>;
    // Name of the role assignment. Required.
    displayName?: NullableOption<string>;
    // Identifiers of the principals to which the assignment is granted. Supports $filter (any operator only).
    principalIds?: NullableOption<string[]>;
    // Identifier of the unifiedRoleDefinition the assignment is for.
    roleDefinitionId?: string;
    /**
     * Read-only collection with details of the app specific scopes when the assignment scopes are app specific. Containment
     * entity. Read-only.
     */
    appScopes?: NullableOption<AppScope[]>;
    /**
     * Read-only collection referencing the directory objects that are scope of the assignment. Provided so that callers can
     * get the directory objects using $expand at the same time as getting the role assignment. Read-only. Supports $expand.
     */
    directoryScopes?: NullableOption<DirectoryObject[]>;
    /**
     * Read-only collection referencing the assigned principals. Provided so that callers can get the principals using $expand
     * at the same time as getting the role assignment. Read-only. Supports $expand.
     */
    principals?: NullableOption<DirectoryObject[]>;
    /**
     * Specifies the roleDefinition that the assignment is for. Provided so that callers can get the role definition using
     * $expand at the same time as getting the role assignment. Supports $filter (eq operator on id, isBuiltIn, and
     * displayName, and startsWith operator on displayName) and $expand.
     */
    roleDefinition?: NullableOption<UnifiedRoleDefinition>;
}
export interface UnifiedRoleDefinition extends Entity {
    // The description for the unifiedRoleDefinition. Read-only when isBuiltIn is true.
    description?: NullableOption<string>;
    /**
     * The display name for the unifiedRoleDefinition. Read-only when isBuiltIn is true. Required. Supports $filter (eq and
     * startsWith operators only).
     */
    displayName?: NullableOption<string>;
    /**
     * Flag indicating if the unifiedRoleDefinition is part of the default set included with the product or custom. Read-only.
     * Supports $filter (eq operator only).
     */
    isBuiltIn?: NullableOption<boolean>;
    /**
     * Flag indicating if the role is enabled for assignment. If false the role is not available for assignment. Read-only
     * when isBuiltIn is true.
     */
    isEnabled?: NullableOption<boolean>;
    /**
     * List of scopes permissions granted by the role definition apply to. Currently only / is supported. Read-only when
     * isBuiltIn is true. DO NOT USE. This will be deprecated soon. Attach scope to role assignment
     */
    resourceScopes?: string[];
    // List of permissions included in the role. Read-only when isBuiltIn is true. Required.
    rolePermissions?: UnifiedRolePermission[];
    /**
     * Custom template identifier that can be set when isBuiltIn is false. This identifier is typically used if one needs an
     * identifier to be the same across different directories. Read-only when isBuiltIn is true.
     */
    templateId?: NullableOption<string>;
    // Indicates version of the unifiedRoleDefinition. Read-only when isBuiltIn is true.
    version?: NullableOption<string>;
    /**
     * Read-only collection of role definitions that the given role definition inherits from. Only Azure AD built-in roles
     * support this attribute.
     */
    inheritsPermissionsFrom?: NullableOption<UnifiedRoleDefinition[]>;
}
export interface RoleManagement {
    directory?: NullableOption<RbacApplication>;
    cloudPC?: NullableOption<RbacApplicationMultiple>;
    // The RbacApplication for Entitlement Management
    entitlementManagement?: NullableOption<RbacApplication>;
    // The RbacApplication for Device Management
    deviceManagement?: NullableOption<RbacApplicationMultiple>;
}
export interface RbacApplication extends Entity {
    resourceNamespaces?: NullableOption<UnifiedRbacResourceNamespace[]>;
    roleAssignments?: NullableOption<UnifiedRoleAssignment[]>;
    roleDefinitions?: NullableOption<UnifiedRoleDefinition[]>;
    roleAssignmentApprovals?: NullableOption<Approval[]>;
    roleAssignmentScheduleInstances?: NullableOption<UnifiedRoleAssignmentScheduleInstance[]>;
    roleAssignmentScheduleRequests?: NullableOption<UnifiedRoleAssignmentScheduleRequest[]>;
    roleAssignmentSchedules?: NullableOption<UnifiedRoleAssignmentSchedule[]>;
    roleEligibilityScheduleInstances?: NullableOption<UnifiedRoleEligibilityScheduleInstance[]>;
    roleEligibilityScheduleRequests?: NullableOption<UnifiedRoleEligibilityScheduleRequest[]>;
    roleEligibilitySchedules?: NullableOption<UnifiedRoleEligibilitySchedule[]>;
}
export interface UnifiedRbacResourceAction extends Entity {
    actionVerb?: NullableOption<string>;
    description?: NullableOption<string>;
    name?: string;
    resourceScopeId?: NullableOption<string>;
    resourceScope?: NullableOption<UnifiedRbacResourceScope>;
}
export interface UnifiedRbacResourceScope extends Entity {
    displayName?: NullableOption<string>;
    scope?: string;
    type?: NullableOption<string>;
}
export interface Command extends Entity {
    appServiceName?: NullableOption<string>;
    error?: NullableOption<string>;
    packageFamilyName?: NullableOption<string>;
    payload?: NullableOption<PayloadRequest>;
    permissionTicket?: NullableOption<string>;
    postBackUri?: NullableOption<string>;
    status?: NullableOption<string>;
    type?: NullableOption<string>;
    responsepayload?: NullableOption<PayloadResponse>;
}
export interface Compliance {
    ediscovery?: NullableOption<Ediscovery.Ediscoveryroot>;
}
export interface Channel extends Entity {
    // Read only. Timestamp at which the channel was created.
    createdDateTime?: NullableOption<string>;
    // Optional textual description for the channel.
    description?: NullableOption<string>;
    // Channel name as it will appear to the user in Microsoft Teams.
    displayName?: string;
    // The email address for sending messages to the channel. Read-only.
    email?: NullableOption<string>;
    /**
     * Indicates whether the channel should automatically be marked 'favorite' for all members of the team. Can only be set
     * programmatically with Create team. Default: false.
     */
    isFavoriteByDefault?: NullableOption<boolean>;
    /**
     * The type of the channel. Can be set during creation and can't be changed. The possible values are: standard, private,
     * unknownFutureValue, shared. The default value is standard. Note that you must use the Prefer:
     * include-unknown-enum-members request header to get the following value in this evolvable enum: shared.
     */
    membershipType?: NullableOption<ChannelMembershipType>;
    // Settings to configure channel moderation to control who can start new posts and reply to posts in that channel.
    moderationSettings?: NullableOption<ChannelModerationSettings>;
    /**
     * A hyperlink that will go 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.
     */
    webUrl?: NullableOption<string>;
    // Metadata for the location where the channel's files are stored.
    filesFolder?: NullableOption<DriveItem>;
    // A collection of membership records associated with the channel.
    members?: NullableOption<ConversationMember[]>;
    // A collection of all the messages in the channel. A navigation property. Nullable.
    messages?: NullableOption<ChatMessage[]>;
    // A collection of all the tabs in the channel. A navigation property.
    tabs?: NullableOption<TeamsTab[]>;
}
export interface TeamsAppInstallation extends Entity {
    // The app that is installed.
    teamsApp?: NullableOption<TeamsApp>;
    // The details of this version of the app.
    teamsAppDefinition?: NullableOption<TeamsAppDefinition>;
}
export interface ConversationMember extends Entity {
    // The display name of the user.
    displayName?: NullableOption<string>;
    // The roles for that user.
    roles?: NullableOption<string[]>;
    /**
     * The timestamp denoting how far back a conversation's history is shared with the conversation member. This property is
     * settable only for members of a chat.
     */
    visibleHistoryStartDateTime?: NullableOption<string>;
}
export interface TeamsAsyncOperation extends Entity {
    // Number of times the operation was attempted before being marked successful or failed.
    attemptsCount?: number;
    // Time when the operation was created.
    createdDateTime?: string;
    // Any error that causes the async operation to fail.
    error?: NullableOption<OperationError>;
    // Time when the async operation was last updated.
    lastActionDateTime?: string;
    // Denotes the type of operation being described.
    operationType?: TeamsAsyncOperationType;
    // Operation status.
    status?: TeamsAsyncOperationStatus;
    // The ID of the object that's created or modified as result of this async operation, typically a team.
    targetResourceId?: NullableOption<string>;
    /**
     * 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.
     */
    targetResourceLocation?: NullableOption<string>;
}
export interface ResourceSpecificPermissionGrant extends DirectoryObject {
    // ID of the service principal of the Azure AD app that has been granted access. Read-only.
    clientAppId?: NullableOption<string>;
    // ID of the Azure AD app that has been granted access. Read-only.
    clientId?: NullableOption<string>;
    // The name of the resource-specific permission. Read-only.
    permission?: NullableOption<string>;
    // The type of permission. Possible values are: Application, Delegated. Read-only.
    permissionType?: NullableOption<string>;
    // ID of the Azure AD app that is hosting the resource. Read-only.
    resourceAppId?: NullableOption<string>;
}
export interface TeamworkTag extends Entity {
    // Tag description as it will appear to the user in Microsoft Teams.
    description?: NullableOption<string>;
    // Tag name as it will appear to the user in Microsoft Teams.
    displayName?: NullableOption<string>;
    // The number of users assigned to the tag.
    memberCount?: NullableOption<number>;
    // The type of tag. Default is standard.
    tagType?: NullableOption<TeamworkTagType>;
    // ID of the team in which the tag is defined.
    teamId?: NullableOption<string>;
    // Users assigned to the tag.
    members?: NullableOption<TeamworkTagMember[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface TeamsTemplate extends Entity {}
export interface Schedule extends Entity {
    // Indicates whether the schedule is enabled for the team. Required.
    enabled?: NullableOption<boolean>;
    // Indicates whether offer shift requests are enabled for the schedule.
    offerShiftRequestsEnabled?: NullableOption<boolean>;
    // Indicates whether open shifts are enabled for the schedule.
    openShiftsEnabled?: NullableOption<boolean>;
    // The status of the schedule provisioning. The possible values are notStarted, running, completed, failed.
    provisionStatus?: NullableOption<OperationStatus>;
    // Additional information about why schedule provisioning failed.
    provisionStatusCode?: NullableOption<string>;
    // Indicates whether swap shifts requests are enabled for the schedule.
    swapShiftsRequestsEnabled?: NullableOption<boolean>;
    // Indicates whether time clock is enabled for the schedule.
    timeClockEnabled?: NullableOption<boolean>;
    timeClockSettings?: NullableOption<TimeClockSettings>;
    // Indicates whether time off requests are enabled for the schedule.
    timeOffRequestsEnabled?: NullableOption<boolean>;
    // Indicates the time zone of the schedule team using tz database format. Required.
    timeZone?: NullableOption<string>;
    workforceIntegrationIds?: NullableOption<string[]>;
    offerShiftRequests?: NullableOption<OfferShiftRequest[]>;
    openShiftChangeRequests?: NullableOption<OpenShiftChangeRequest[]>;
    openShifts?: NullableOption<OpenShift[]>;
    // The logical grouping of users in the schedule (usually by role).
    schedulingGroups?: NullableOption<SchedulingGroup[]>;
    // The shifts in the schedule.
    shifts?: NullableOption<Shift[]>;
    swapShiftsChangeRequests?: NullableOption<SwapShiftsChangeRequest[]>;
    timeCards?: NullableOption<TimeCard[]>;
    // The set of reasons for a time off in the schedule.
    timeOffReasons?: NullableOption<TimeOffReason[]>;
    timeOffRequests?: NullableOption<TimeOffRequest[]>;
    // The instances of times off in the schedule.
    timesOff?: NullableOption<TimeOff[]>;
}
export interface DirectorySetting extends Entity {
    // Display name of this group of settings, which comes from the associated template. Read-only.
    displayName?: NullableOption<string>;
    // Unique identifier for the template used to create this group of settings. Read-only.
    templateId?: NullableOption<string>;
    // Collection of name value pairs. Must contain and set all the settings defined in the template.
    values?: SettingValue[];
}
export interface Conversation extends Entity {
    // Indicates whether any of the posts within this Conversation has at least one attachment.
    hasAttachments?: boolean;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    lastDeliveredDateTime?: string;
    // A short summary from the body of the latest post in this converstaion.
    preview?: string;
    // The topic of the conversation. This property can be set when the conversation is created, but it cannot be updated.
    topic?: string;
    // All the users that sent a message to this Conversation.
    uniqueSenders?: string[];
    // A collection of all the conversation threads in the conversation. A navigation property. Read-only. Nullable.
    threads?: NullableOption<ConversationThread[]>;
}
export interface ConversationThread extends Entity {
    // The Cc: recipients for the thread. Returned only on $select.
    ccRecipients?: Recipient[];
    // Indicates whether any of the posts within this thread has at least one attachment. Returned by default.
    hasAttachments?: boolean;
    // Indicates if the thread is locked. Returned by default.
    isLocked?: boolean;
    /**
     * 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 is 2014-01-01T00:00:00Z. Returned by default.
     */
    lastDeliveredDateTime?: string;
    // A short summary from the body of the latest post in this conversation. Returned by default.
    preview?: string;
    /**
     * The topic of the conversation. This property can be set when the conversation is created, but it cannot be updated.
     * Returned by default.
     */
    topic?: string;
    // The To: recipients for the thread. Returned only on $select.
    toRecipients?: Recipient[];
    // All the users that sent a message to this thread. Returned by default.
    uniqueSenders?: string[];
    // Read-only. Nullable.
    posts?: NullableOption<Post[]>;
}
export interface GroupLifecyclePolicy extends Entity {
    /**
     * List of email address to send notifications for groups without owners. Multiple email address can be defined by
     * separating email address with a semicolon.
     */
    alternateNotificationEmails?: NullableOption<string>;
    /**
     * 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.
     */
    groupLifetimeInDays?: NullableOption<number>;
    // The group type for which the expiration policy applies. Possible values are All, Selected or None.
    managedGroupTypes?: NullableOption<string>;
}
export interface PlannerGroup extends Entity {
    // Read-only. Nullable. Returns the plannerPlans owned by the group.
    plans?: NullableOption<PlannerPlan[]>;
}
// tslint:disable-next-line: interface-name
export interface ItemAnalytics extends Entity {
    allTime?: NullableOption<ItemActivityStat>;
    itemActivityStats?: NullableOption<ItemActivityStat[]>;
    lastSevenDays?: NullableOption<ItemActivityStat>;
}
export interface ColumnDefinition extends Entity {
    // This column stores boolean values.
    boolean?: NullableOption<BooleanColumn>;
    // This column's data is calculated based on other columns.
    calculated?: NullableOption<CalculatedColumn>;
    // This column stores data from a list of choices.
    choice?: NullableOption<ChoiceColumn>;
    // For site columns, the name of the group this column belongs to. Helps organize related columns.
    columnGroup?: NullableOption<string>;
    // This column stores content approval status.
    contentApprovalStatus?: NullableOption<ContentApprovalStatusColumn>;
    // This column stores currency values.
    currency?: NullableOption<CurrencyColumn>;
    // This column stores DateTime values.
    dateTime?: NullableOption<DateTimeColumn>;
    // The default value for this column.
    defaultValue?: NullableOption<DefaultColumnValue>;
    // The user-facing description of the column.
    description?: NullableOption<string>;
    // The user-facing name of the column.
    displayName?: NullableOption<string>;
    // If true, no two list items may have the same value for this column.
    enforceUniqueValues?: NullableOption<boolean>;
    // This column stores a geolocation.
    geolocation?: NullableOption<GeolocationColumn>;
    // Specifies whether the column is displayed in the user interface.
    hidden?: NullableOption<boolean>;
    // This column stores hyperlink or picture values.
    hyperlinkOrPicture?: NullableOption<HyperlinkOrPictureColumn>;
    // Specifies whether the column values can used for sorting and searching.
    indexed?: NullableOption<boolean>;
    // Indicates whether this column can be deleted.
    isDeletable?: NullableOption<boolean>;
    // Indicates whether values in the column can be reordered. Read-only.
    isReorderable?: NullableOption<boolean>;
    // Specifies whether the column can be changed.
    isSealed?: NullableOption<boolean>;
    // This column's data is looked up from another source in the site.
    lookup?: NullableOption<LookupColumn>;
    /**
     * The API-facing name of the column as it appears in the [fields][] on a [listItem][]. For the user-facing name, see
     * displayName.
     */
    name?: NullableOption<string>;
    // This column stores number values.
    number?: NullableOption<NumberColumn>;
    // This column stores Person or Group values.
    personOrGroup?: NullableOption<PersonOrGroupColumn>;
    // If true, changes to this column will be propagated to lists that implement the column.
    propagateChanges?: NullableOption<boolean>;
    // Specifies whether the column values can be modified.
    readOnly?: NullableOption<boolean>;
    // Specifies whether the column value isn't optional.
    required?: NullableOption<boolean>;
    // This column stores taxonomy terms.
    term?: NullableOption<TermColumn>;
    // This column stores text values.
    text?: NullableOption<TextColumn>;
    // This column stores thumbnail values.
    thumbnail?: NullableOption<ThumbnailColumn>;
    // For site columns, the type of column. Read-only.
    type?: NullableOption<ColumnTypes>;
    // This column stores validation formula and message for the column.
    validation?: NullableOption<ColumnValidation>;
    // The source column for content type column.
    sourceColumn?: NullableOption<ColumnDefinition>;
}
export interface ContentType extends Entity {
    /**
     * List of canonical URLs for hub sites with which this content type is associated to. This will contain all hubsites
     * where this content type is queued to be enforced or is already enforced. Enforcing a content type means that the
     * content type will be applied to the lists in the enforced sites.
     */
    associatedHubsUrls?: NullableOption<string[]>;
    // The descriptive text for the item.
    description?: NullableOption<string>;
    // Document Set metadata.
    documentSet?: NullableOption<DocumentSet>;
    /**
     * Document template metadata. To make sure that documents have consistent content across a site and its subsites, you can
     * associate a Word, Excel, or PowerPoint template with a site content type.
     */
    documentTemplate?: NullableOption<DocumentSetContent>;
    // The name of the group this content type belongs to. Helps organize related content types.
    group?: NullableOption<string>;
    // Indicates whether the content type is hidden in the list's 'New' menu.
    hidden?: NullableOption<boolean>;
    /**
     * If this content type is inherited from another scope (like a site), provides a reference to the item where the content
     * type is defined.
     */
    inheritedFrom?: NullableOption<ItemReference>;
    // Specifies if a content type is a built-in content type.
    isBuiltIn?: NullableOption<boolean>;
    // The name of the content type.
    name?: NullableOption<string>;
    // Specifies the order in which the content type appears in the selection UI.
    order?: NullableOption<ContentTypeOrder>;
    // The unique identifier of the content type.
    parentId?: NullableOption<string>;
    /**
     * If true, any changes made to the content type will be pushed to inherited content types and lists that implement the
     * content type.
     */
    propagateChanges?: NullableOption<boolean>;
    // If true, the content type cannot be modified unless this value is first set to false.
    readOnly?: NullableOption<boolean>;
    /**
     * 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.
     */
    sealed?: NullableOption<boolean>;
    // Parent contentType from which this content type is derived.
    base?: NullableOption<ContentType>;
    // The collection of content types that are ancestors of this content type.
    baseTypes?: NullableOption<ContentType[]>;
    // The collection of columns that are required by this content type
    columnLinks?: NullableOption<ColumnLink[]>;
    // Column order information in a content type.
    columnPositions?: NullableOption<ColumnDefinition[]>;
    // The collection of column definitions for this contentType.
    columns?: NullableOption<ColumnDefinition[]>;
}
export interface List extends BaseItem {
    // The displayable title of the list.
    displayName?: NullableOption<string>;
    // Provides additional details about the list.
    list?: NullableOption<ListInfo>;
    // Returns identifiers useful for SharePoint REST compatibility. Read-only.
    sharepointIds?: NullableOption<SharepointIds>;
    // If present, indicates that this is a system-managed list. Read-only.
    system?: NullableOption<SystemFacet>;
    // The recent activities that took place within this list.
    activities?: NullableOption<ItemActivityOLD[]>;
    // The collection of field definitions for this list.
    columns?: NullableOption<ColumnDefinition[]>;
    // The collection of content types present in this list.
    contentTypes?: NullableOption<ContentType[]>;
    // Only present on document libraries. Allows access to the list as a [drive][] resource with [driveItems][driveItem].
    drive?: NullableOption<Drive>;
    // All items contained in the list.
    items?: NullableOption<ListItem[]>;
    // The set of subscriptions on the list.
    subscriptions?: NullableOption<Subscription[]>;
}
export interface SitePage extends BaseItem {
    // The content type of the page.
    contentType?: NullableOption<ContentTypeInfo>;
    pageLayoutType?: NullableOption<string>;
    publishingState?: NullableOption<PublicationFacet>;
    title?: NullableOption<string>;
    webParts?: NullableOption<WebPart[]>;
}
export interface Permission extends Entity {
    /**
     * 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.
     */
    expirationDateTime?: NullableOption<string>;
    // For user type permissions, the details of the users &amp; applications for this permission. Read-only.
    grantedTo?: NullableOption<IdentitySet>;
    // For link type permissions, the details of the users to whom permission was granted. Read-only.
    grantedToIdentities?: NullableOption<IdentitySet[]>;
    /**
     * This indicates whether password is set for this permission, it's only showing in response. Optional and Read-only and
     * for OneDrive Personal only.
     */
    hasPassword?: NullableOption<boolean>;
    // Provides a reference to the ancestor of the current permission, if it is inherited from an ancestor. Read-only.
    inheritedFrom?: NullableOption<ItemReference>;
    // Details of any associated sharing invitation for this permission. Read-only.
    invitation?: NullableOption<SharingInvitation>;
    // Provides the link details of the current permission, if it is a link type permissions. Read-only.
    link?: NullableOption<SharingLink>;
    // The type of permission, e.g. read. See below for the full list of roles. Read-only.
    roles?: NullableOption<string[]>;
    // A unique token that can be used to access this shared item via the [shares API][]. Read-only.
    shareId?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IdentityApiConnector extends Entity {
    /**
     * The object which describes the authentication configuration details for calling the API. Basic and PKCS 12 client
     * certificate are supported.
     */
    authenticationConfiguration?: NullableOption<ApiAuthenticationConfigurationBase>;
    // The name of the API connector.
    displayName?: NullableOption<string>;
    // The URL of the API endpoint to call.
    targetUrl?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IdentityUserFlow extends Entity {
    userFlowType?: UserFlowType;
    userFlowTypeVersion?: number;
}
export interface B2cIdentityUserFlow extends IdentityUserFlow {
    /**
     * Configuration for enabling an API connector for use as part of the user flow. You can only obtain the value of this
     * object using Get userFlowApiConnectorConfiguration.
     */
    apiConnectorConfiguration?: NullableOption<UserFlowApiConnectorConfiguration>;
    /**
     * Indicates the default language of the b2cIdentityUserFlow that is used when no ui_locale tag is specified in the
     * request. This field is RFC 5646 compliant.
     */
    defaultLanguageTag?: NullableOption<string>;
    /**
     * The property that determines whether language customization is enabled within the B2C user flow. Language customization
     * is not enabled by default for B2C user flows.
     */
    isLanguageCustomizationEnabled?: boolean;
    identityProviders?: NullableOption<IdentityProvider[]>;
    /**
     * The languages supported for customization within the user flow. Language customization is not enabled by default in B2C
     * user flows.
     */
    languages?: NullableOption<UserFlowLanguageConfiguration[]>;
    // The user attribute assignments included in the user flow.
    userAttributeAssignments?: NullableOption<IdentityUserFlowAttributeAssignment[]>;
    userFlowIdentityProviders?: NullableOption<IdentityProviderBase[]>;
}
// tslint:disable-next-line: interface-name
export interface IdentityProvider extends Entity {
    /**
     * The client ID for the application obtained when registering the application with the identity provider. This is a
     * required field. Required. Not nullable.
     */
    clientId?: NullableOption<string>;
    /**
     * The client secret for the application obtained when registering the application with the identity provider. This is
     * write-only. A read operation will return ****. This is a required field. Required. Not nullable.
     */
    clientSecret?: NullableOption<string>;
    // The display name of the identity provider. Not nullable.
    name?: NullableOption<string>;
    /**
     * The identity provider type is a required field. For B2B scenario: Google, Facebook. For B2C scenario: Microsoft,
     * Google, Amazon, LinkedIn, Facebook, GitHub, Twitter, Weibo,QQ, WeChat, OpenIDConnect. Not nullable.
     */
    type?: NullableOption<string>;
}
export interface UserFlowLanguageConfiguration extends Entity {
    // The language name to display. This property is read-only.
    displayName?: NullableOption<string>;
    // Indicates whether the language is enabled within the user flow.
    isEnabled?: boolean;
    /**
     * Collection of pages with the default content to display in a user flow for a specified language. This collection does
     * not allow any kind of modification.
     */
    defaultPages?: NullableOption<UserFlowLanguagePage[]>;
    /**
     * Collection of pages with the overrides messages to display in a user flow for a specified language. This collection
     * only allows to modify the content of the page, any other modification is not allowed (creation or deletion of pages).
     */
    overridesPages?: NullableOption<UserFlowLanguagePage[]>;
}
// tslint:disable-next-line: interface-name
export interface IdentityUserFlowAttributeAssignment extends Entity {
    // The display name of the identityUserFlowAttribute within a user flow.
    displayName?: NullableOption<string>;
    /**
     * Determines whether the identityUserFlowAttribute is optional. true means the user doesn't have to provide a value.
     * false means the user cannot complete sign-up without providing a value.
     */
    isOptional?: boolean;
    /**
     * Determines whether the identityUserFlowAttribute requires verification. This is only used for verifying the user's
     * phone number or email address.
     */
    requiresVerification?: boolean;
    /**
     * The input options for the user flow attribute. Only applicable when the userInputType is radioSingleSelect,
     * dropdownSingleSelect, or checkboxMultiSelect.
     */
    userAttributeValues?: NullableOption<UserAttributeValuesItem[]>;
    /**
     * The input type of the user flow attribute. Possible values are: textBox, dateTimeDropdown, radioSingleSelect,
     * dropdownSingleSelect, emailBox, checkboxMultiSelect.
     */
    userInputType?: IdentityUserFlowAttributeInputType;
    // The user attribute that you want to add to your user flow.
    userAttribute?: NullableOption<IdentityUserFlowAttribute>;
}
// tslint:disable-next-line: interface-name
export interface IdentityProviderBase extends Entity {
    // The display name of the identity provider.
    displayName?: NullableOption<string>;
}
export interface B2xIdentityUserFlow extends IdentityUserFlow {
    /**
     * Configuration for enabling an API connector for use as part of the self-service sign up user flow. You can only obtain
     * the value of this object using Get userFlowApiConnectorConfiguration.
     */
    apiConnectorConfiguration?: NullableOption<UserFlowApiConnectorConfiguration>;
    // The identity providers included in the user flow.
    identityProviders?: NullableOption<IdentityProvider[]>;
    /**
     * The languages supported for customization within the user flow. Language customization is enabled by default in
     * self-service sign up user flow. You cannot create custom languages in self-service sign up user flows.
     */
    languages?: NullableOption<UserFlowLanguageConfiguration[]>;
    // The user attribute assignments included in the user flow.
    userAttributeAssignments?: NullableOption<IdentityUserFlowAttributeAssignment[]>;
    userFlowIdentityProviders?: NullableOption<IdentityProviderBase[]>;
}
export interface BuiltInIdentityProvider extends IdentityProviderBase {
    // The identity provider type. For a B2B scenario, possible values: AADSignup, MicrosoftAccount, EmailOTP. Required.
    identityProviderType?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IdentityUserFlowAttribute extends Entity {
    /**
     * The data type of the user flow attribute. This cannot be modified after the custom user flow attribute is created. The
     * supported values for dataType are: string , boolean , int64 , stringCollection , dateTime.
     */
    dataType?: IdentityUserFlowAttributeDataType;
    // The description of the user flow attribute that's shown to the user at the time of sign-up.
    description?: NullableOption<string>;
    // The display name of the user flow attribute.
    displayName?: NullableOption<string>;
    /**
     * The type of the user flow attribute. This is a read-only attribute that is automatically set. Depending on the type of
     * attribute, the values for this property will be builtIn, custom, or required.
     */
    userFlowAttributeType?: IdentityUserFlowAttributeType;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IdentityBuiltInUserFlowAttribute extends IdentityUserFlowAttribute {}
// tslint:disable-next-line: interface-name
export interface IdentityContainer {
    conditionalAccess?: NullableOption<ConditionalAccessRoot>;
    apiConnectors?: NullableOption<IdentityApiConnector[]>;
    b2cUserFlows?: NullableOption<B2cIdentityUserFlow[]>;
    b2xUserFlows?: NullableOption<B2xIdentityUserFlow[]>;
    identityProviders?: NullableOption<IdentityProviderBase[]>;
    userFlowAttributes?: NullableOption<IdentityUserFlowAttribute[]>;
    userFlows?: NullableOption<IdentityUserFlow[]>;
    continuousAccessEvaluationPolicy?: NullableOption<ContinuousAccessEvaluationPolicy>;
}
export interface ConditionalAccessRoot extends Entity {
    authenticationContextClassReferences?: NullableOption<AuthenticationContextClassReference[]>;
    namedLocations?: NullableOption<NamedLocation[]>;
    policies?: NullableOption<ConditionalAccessPolicy[]>;
}
export interface ContinuousAccessEvaluationPolicy extends Entity {
    /**
     * Continuous access evaluation automatically blocks access to resources and applications in near real time when a user's
     * access is removed or a client IP address changes. Read-only.
     */
    description?: string;
    // The value is always Continuous Access Evaluation. Read-only.
    displayName?: string;
    // The collection of group identifiers in scope for evaluation. All groups are in scope when the collection is empty.
    groups?: string[];
    // true to indicate whether continuous access evaluation should be performed; otherwise false.
    isEnabled?: boolean;
    // The collection of user identifiers in scope for evaluation. All users are in scope when the collection is empty.
    users?: string[];
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IdentityCustomUserFlowAttribute extends IdentityUserFlowAttribute {}
export interface OpenIdConnectIdentityProvider extends IdentityProviderBase {
    /**
     * After the OIDC provider sends an ID token back to Azure AD, Azure AD needs to be able to map the claims from the
     * received token to the claims that Azure AD recognizes and uses. This complex type captures that mapping. Required.
     */
    claimsMapping?: NullableOption<ClaimsMapping>;
    // The client ID for the application obtained when registering the application with the identity provider. Required.
    clientId?: NullableOption<string>;
    /**
     * The client secret for the application obtained when registering the application with the identity provider. The
     * clientSecret has a dependency on responseType. When responseType is code, a secret is required for the auth code
     * exchange.When responseType is id_token the secret is not required because there is no code exchange. The id_token is
     * returned directly from the authorization response. This is write-only. A read operation returns ****.
     */
    clientSecret?: NullableOption<string>;
    /**
     * The domain hint can be used to skip directly to the sign-in page of the specified identity provider, instead of having
     * the user make a selection among the list of available identity providers.
     */
    domainHint?: NullableOption<string>;
    /**
     * The URL for the metadata document of the OpenID Connect identity provider. Every OpenID Connect identity provider
     * describes a metadata document that contains most of the information required to perform sign-in. This includes
     * information such as the URLs to use and the location of the service's public signing keys. The OpenID Connect metadata
     * document is always located at an endpoint that ends in .well-known/openid-configuration. Provide the metadata URL for
     * the OpenID Connect identity provider you add. Read-only. Required.
     */
    metadataUrl?: NullableOption<string>;
    /**
     * The response mode defines the method used to send data back from the custom identity provider to Azure AD B2C. Possible
     * values: form_post, query. Required.
     */
    responseMode?: OpenIdConnectResponseMode;
    /**
     * The response type describes the type of information sent back in the initial call to the authorization_endpoint of the
     * custom identity provider. Possible values: code , id_token , token. Required.
     */
    responseType?: OpenIdConnectResponseTypes;
    /**
     * Scope defines the information and permissions you are looking to gather from your custom identity provider. OpenID
     * Connect requests must contain the openid scope value in order to receive the ID token from the identity provider.
     * Without the ID token, users are not able to sign in to Azure AD B2C using the custom identity provider. Other scopes
     * can be appended, separated by a space. For more details about the scope limitations see RFC6749 Section 3.3. Required.
     */
    scope?: NullableOption<string>;
}
export interface OpenIdConnectProvider extends IdentityProvider {
    /**
     * After the OIDC provider sends an ID token back to Azure AD, Azure AD needs to be able to map the claims from the
     * received token to the claims that Azure AD recognizes and uses. This complex type captures that mapping. It is a
     * required property.
     */
    claimsMapping?: NullableOption<ClaimsMapping>;
    /**
     * The domain hint can be used to skip directly to the sign-in page of the specified identity provider, instead of having
     * the user make a selection among the list of available identity providers.
     */
    domainHint?: NullableOption<string>;
    /**
     * The URL for the metadata document of the OpenID Connect identity provider. Every OpenID Connect identity provider
     * describes a metadata document that contains most of the information required to perform sign-in. This includes
     * information such as the URLs to use and the location of the service's public signing keys. The OpenID Connect metadata
     * document is always located at an endpoint that ends in .well-known/openid-configuration . For the OpenID Connect
     * identity provider you are looking to add, you will need to provide the metadata URL. It is a required property and is
     * read only after creation.
     */
    metadataUrl?: NullableOption<string>;
    /**
     * The response mode defines the method that should be used to send the data back from the custom identity provider to
     * Azure AD B2C. The following response modes can be used: form_post, query. query response mode means the code or token
     * is returned as a query parameter. form_post response mode is recommended for the best security. The response is
     * transmitted via the HTTP POST method, with the code or token being encoded in the body using the
     * application/x-www-form-urlencoded format. It is a required property.
     */
    responseMode?: OpenIdConnectResponseMode;
    /**
     * response type describes what kind of information is sent back in the initial call to the authorization_endpoint of the
     * custom identity provider. The following response types can be used: code , id_token , token. It is a required property.
     */
    responseType?: OpenIdConnectResponseTypes;
    /**
     * Scope defines the information and permissions you are looking to gather from your custom identity provider. OpenID
     * Connect requests must contain the openid scope value in order to receive the ID token from the identity provider.
     * Without the ID token, users are not able to sign in to Azure AD B2C using the custom identity provider. Other scopes
     * can be appended separated by space. For more details about the scope limitations see RFC6749 Section 3.3. It is a
     * required property.
     */
    scope?: NullableOption<string>;
}
export interface SocialIdentityProvider extends IdentityProviderBase {
    /**
     * The client identifier for the application obtained when registering the application with the identity provider.
     * Required.
     */
    clientId?: NullableOption<string>;
    /**
     * The client secret for the application that is obtained when the application is registered with the identity provider.
     * This is write-only. A read operation returns ****. Required.
     */
    clientSecret?: NullableOption<string>;
    /**
     * For a B2B scenario, possible values: Google, Facebook. For a B2C scenario, possible values: Microsoft, Google, Amazon,
     * LinkedIn, Facebook, GitHub, Twitter, Weibo, QQ, WeChat. Required.
     */
    identityProviderType?: NullableOption<string>;
}
export interface TrustFramework {
    keySets?: NullableOption<TrustFrameworkKeySet[]>;
    policies?: NullableOption<TrustFrameworkPolicy[]>;
}
export interface TrustFrameworkKeySet extends Entity {
    // A collection of the keys.
    keys?: NullableOption<TrustFrameworkKey[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface TrustFrameworkPolicy extends Entity {}
// tslint:disable-next-line: no-empty-interface
export interface UserFlowLanguagePage extends Entity {}
export interface JobResponseBase extends Entity {
    creationDateTime?: NullableOption<string>;
    endDateTime?: NullableOption<string>;
    error?: NullableOption<ClassificationError>;
    startDateTime?: NullableOption<string>;
    status?: NullableOption<string>;
    tenantId?: NullableOption<string>;
    type?: NullableOption<string>;
}
export interface ClassificationJobResponse extends JobResponseBase {
    result?: NullableOption<DetectedSensitiveContentWrapper>;
}
export interface DataClassificationService extends Entity {
    exactMatchDataStores?: NullableOption<ExactMatchDataStore[]>;
    classifyFile?: NullableOption<FileClassificationRequest[]>;
    classifyFileJobs?: NullableOption<JobResponseBase[]>;
    classifyText?: NullableOption<TextClassificationRequest[]>;
    classifyTextJobs?: NullableOption<JobResponseBase[]>;
    evaluateDlpPoliciesJobs?: NullableOption<JobResponseBase[]>;
    evaluateLabelJobs?: NullableOption<JobResponseBase[]>;
    jobs?: NullableOption<JobResponseBase[]>;
    sensitiveTypes?: NullableOption<SensitiveType[]>;
    sensitivityLabels?: NullableOption<SensitivityLabel[]>;
    exactMatchUploadAgents?: NullableOption<ExactMatchUploadAgent[]>;
}
export interface ExactMatchDataStoreBase extends Entity {
    columns?: NullableOption<ExactDataMatchStoreColumn[]>;
    dataLastUpdatedDateTime?: NullableOption<string>;
    description?: NullableOption<string>;
    displayName?: NullableOption<string>;
}
export interface ExactMatchDataStore extends ExactMatchDataStoreBase {
    sessions?: NullableOption<ExactMatchSession[]>;
}
export interface FileClassificationRequest extends Entity {
    file?: NullableOption<any>;
    sensitiveTypeIds?: NullableOption<string[]>;
}
export interface TextClassificationRequest extends Entity {
    fileExtension?: NullableOption<string>;
    matchTolerancesToInclude?: NullableOption<MlClassificationMatchTolerance>;
    scopesToRun?: NullableOption<SensitiveTypeScope>;
    sensitiveTypeIds?: NullableOption<string[]>;
    text?: NullableOption<string>;
}
export interface SensitiveType extends Entity {
    classificationMethod?: NullableOption<ClassificationMethod>;
    description?: NullableOption<string>;
    name?: NullableOption<string>;
    publisherName?: NullableOption<string>;
    rulePackageId?: NullableOption<string>;
    rulePackageType?: NullableOption<string>;
    scope?: NullableOption<SensitiveTypeScope>;
    sensitiveTypeSource?: NullableOption<SensitiveTypeSource>;
    state?: NullableOption<string>;
}
export interface ExactMatchUploadAgent extends Entity {
    creationDateTime?: NullableOption<string>;
    description?: NullableOption<string>;
}
export interface DlpEvaluatePoliciesJobResponse extends JobResponseBase {
    result?: NullableOption<DlpPoliciesJobResult>;
}
export interface EvaluateLabelJobResponse extends JobResponseBase {
    result?: NullableOption<EvaluateLabelJobResultGroup>;
}
export interface AdministrativeUnit extends DirectoryObject {
    // An optional description for the administrative unit.
    description?: NullableOption<string>;
    // Display name for the administrative unit.
    displayName?: NullableOption<string>;
    /**
     * Controls whether the administrative unit and its members are hidden or public. Can be set to HiddenMembership or
     * Public. If not set, default behavior is Public. When set to HiddenMembership, only members of the administrative unit
     * can list other members of the administrative unit.
     */
    visibility?: NullableOption<string>;
    /**
     * Users and groups that are members of this Adminsitrative Unit. HTTP Methods: GET (list members), POST (add members),
     * DELETE (remove members).
     */
    members?: NullableOption<DirectoryObject[]>;
    /**
     * Scoped-role members of this Administrative Unit. HTTP Methods: GET (list scopedRoleMemberships), POST (add
     * scopedRoleMembership), DELETE (remove scopedRoleMembership).
     */
    scopedRoleMembers?: NullableOption<ScopedRoleMembership[]>;
    // The collection of open extensions defined for this Administrative Unit. Nullable.
    extensions?: NullableOption<Extension[]>;
}
export interface AllowedDataLocation extends Entity {
    appId?: NullableOption<string>;
    domain?: NullableOption<string>;
    isDefault?: NullableOption<boolean>;
    location?: NullableOption<string>;
}
export interface CertificateBasedAuthConfiguration extends Entity {
    // Collection of certificate authorities which creates a trusted certificate chain.
    certificateAuthorities?: CertificateAuthority[];
}
export interface Contract extends DirectoryObject {
    /**
     * Type of contract. Possible values are: SyndicationPartner, BreadthPartner, ResellerPartner. See more in the table
     * below.
     */
    contractType?: NullableOption<string>;
    /**
     * The unique identifier for the customer tenant referenced by this partnership. Corresponds to the id property of the
     * customer tenant's organization resource.
     */
    customerId?: NullableOption<string>;
    /**
     * A copy of the customer tenant's default domain name. The copy is made when the partnership with the customer is
     * established. It is not automatically updated if the customer tenant's default domain name changes.
     */
    defaultDomainName?: NullableOption<string>;
    /**
     * A copy of the customer tenant's display name. The copy is made when the partnership with the customer is established.
     * It is not automatically updated if the customer tenant's display name changes.
     */
    displayName?: NullableOption<string>;
}
export interface Directory extends Entity {
    administrativeUnits?: NullableOption<AdministrativeUnit[]>;
    // Recently deleted items. Read-only. Nullable.
    deletedItems?: NullableOption<DirectoryObject[]>;
    sharedEmailDomains?: NullableOption<SharedEmailDomain[]>;
    // Nullable.
    featureRolloutPolicies?: NullableOption<FeatureRolloutPolicy[]>;
}
export interface SharedEmailDomain extends Entity {
    provisioningStatus?: NullableOption<string>;
}
export interface DirectoryObjectPartnerReference extends DirectoryObject {
    // Description of the object returned. Read-only.
    description?: NullableOption<string>;
    // Name of directory object being returned, like group or application. Read-only.
    displayName?: NullableOption<string>;
    // The tenant identifier for the partner tenant. Read-only.
    externalPartnerTenantId?: NullableOption<string>;
    // The type of the referenced object in the partner tenant. Read-only.
    objectType?: NullableOption<string>;
}
export interface DirectoryRole extends DirectoryObject {
    // The description for the directory role. Read-only.
    description?: NullableOption<string>;
    // The display name for the directory role. Read-only.
    displayName?: NullableOption<string>;
    /**
     * The id of the directoryRoleTemplate that this role is based on. The property must be specified when activating a
     * directory role in a tenant with a POST operation. After the directory role has been activated, the property is read
     * only.
     */
    roleTemplateId?: NullableOption<string>;
    // Users that are members of this directory role. HTTP Methods: GET, POST, DELETE. Read-only. Nullable.
    members?: NullableOption<DirectoryObject[]>;
    // Members of this directory role that are scoped to administrative units. Read-only. Nullable.
    scopedMembers?: NullableOption<ScopedRoleMembership[]>;
}
export interface DirectoryRoleTemplate extends DirectoryObject {
    // The description to set for the directory role. Read-only.
    description?: NullableOption<string>;
    // The display name to set for the directory role. Read-only.
    displayName?: NullableOption<string>;
}
export interface DirectorySettingTemplate extends DirectoryObject {
    // Description of the template. Read-only.
    description?: NullableOption<string>;
    // Display name of the template. Read-only.
    displayName?: NullableOption<string>;
    /**
     * Collection of settingTemplateValues that list the set of available settings, defaults and types that make up this
     * template. Read-only.
     */
    values?: SettingTemplateValue[];
}
export interface Domain extends Entity {
    /**
     * Indicates the configured authentication type for the domain. The value is either Managed or Federated. Managed
     * indicates a cloud managed domain where Azure AD performs user authentication. Federated indicates authentication is
     * federated with an identity provider such as the tenant's on-premises Active Directory via Active Directory Federation
     * Services. This property is read-only and is not nullable.
     */
    authenticationType?: string;
    /**
     * This property is always null except when the verify action is used. When the verify action is used, a domain entity is
     * returned in the response. The availabilityStatus property of the domain entity in the response is either
     * AvailableImmediately or EmailVerifiedDomainTakeoverScheduled.
     */
    availabilityStatus?: NullableOption<string>;
    /**
     * The value of the property is false if the DNS record management of the domain has been delegated to Microsoft 365.
     * Otherwise, the value is true. Not nullable
     */
    isAdminManaged?: boolean;
    /**
     * true if this is the default domain that is used for user creation. There is only one default domain per company. Not
     * nullable
     */
    isDefault?: boolean;
    /**
     * true if this is the initial domain created by Microsoft Online Services (companyname.onmicrosoft.com). There is only
     * one initial domain per company. Not nullable
     */
    isInitial?: boolean;
    // true if the domain is a verified root domain. Otherwise, false if the domain is a subdomain or unverified. Not nullable
    isRoot?: boolean;
    // true if the domain has completed domain ownership verification. Not nullable
    isVerified?: boolean;
    /**
     * Specifies the number of days before a user receives notification that their password will expire. If the property is
     * not set, a default value of 14 days will be used.
     */
    passwordNotificationWindowInDays?: NullableOption<number>;
    /**
     * Specifies the length of time that a password is valid before it must be changed. If the property is not set, a default
     * value of 90 days will be used.
     */
    passwordValidityPeriodInDays?: NullableOption<number>;
    // Status of asynchronous operations scheduled for the domain.
    state?: NullableOption<DomainState>;
    /**
     * The capabilities assigned to the domain. Can include 0, 1 or more of following values: Email, Sharepoint,
     * EmailInternalRelayOnly, OfficeCommunicationsOnline,SharePointDefaultDomain, FullRedelegation, SharePointPublic,
     * OrgIdAuthentication, Yammer, Intune. The values which you can add/remove using Graph API include: Email,
     * OfficeCommunicationsOnline, Yammer. Not nullable
     */
    supportedServices?: string[];
    // Read-only, Nullable
    domainNameReferences?: NullableOption<DirectoryObject[]>;
    /**
     * DNS records the customer adds to the DNS zone file of the domain before the domain can be used by Microsoft Online
     * services. Read-only, Nullable
     */
    serviceConfigurationRecords?: NullableOption<DomainDnsRecord[]>;
    sharedEmailDomainInvitations?: NullableOption<SharedEmailDomainInvitation[]>;
    /**
     * DNS records that the customer adds to the DNS zone file of the domain before the customer can complete domain ownership
     * verification with Azure AD. Read-only, Nullable
     */
    verificationDnsRecords?: NullableOption<DomainDnsRecord[]>;
}
export interface DomainDnsRecord extends Entity {
    /**
     * If false, this record must be configured by the customer at the DNS host for Microsoft Online Services to operate
     * correctly with the domain.
     */
    isOptional?: boolean;
    // Value used when configuring the name of the DNS record at the DNS host.
    label?: string;
    // Indicates what type of DNS record this entity represents.The value can be one of the following: CName, Mx, Srv, TxtKey
    recordType?: NullableOption<string>;
    /**
     * Microsoft Online Service or feature that has a dependency on this DNS record.Can be one of the following values: null,
     * Email, Sharepoint, EmailInternalRelayOnly, OfficeCommunicationsOnline, SharePointDefaultDomain, FullRedelegation,
     * SharePointPublic, OrgIdAuthentication, Yammer, Intune
     */
    supportedService?: string;
    // Value to use when configuring the time-to-live (ttl) property of the DNS record at the DNS host. Not nullable
    ttl?: number;
}
export interface SharedEmailDomainInvitation extends Entity {
    expiryTime?: NullableOption<string>;
    invitationDomain?: NullableOption<string>;
    invitationStatus?: NullableOption<string>;
}
export interface DomainDnsCnameRecord extends DomainDnsRecord {
    // The canonical name of the CNAME record. Used to configure the CNAME record at the DNS host.
    canonicalName?: NullableOption<string>;
}
export interface DomainDnsMxRecord extends DomainDnsRecord {
    // Value used when configuring the answer/destination/value of the MX record at the DNS host.
    mailExchange?: string;
    // Value used when configuring the Preference/Priority property of the MX record at the DNS host.
    preference?: NullableOption<number>;
}
export interface DomainDnsSrvRecord extends DomainDnsRecord {
    // Value to use when configuring the Target property of the SRV record at the DNS host.
    nameTarget?: NullableOption<string>;
    // Value to use when configuring the port property of the SRV record at the DNS host.
    port?: NullableOption<number>;
    // Value to use when configuring the priority property of the SRV record at the DNS host.
    priority?: NullableOption<number>;
    // Value to use when configuring the protocol property of the SRV record at the DNS host.
    protocol?: NullableOption<string>;
    // Value to use when configuring the service property of the SRV record at the DNS host.
    service?: NullableOption<string>;
    // Value to use when configuring the weight property of the SRV record at the DNS host.
    weight?: NullableOption<number>;
}
export interface DomainDnsTxtRecord extends DomainDnsRecord {
    // Value used when configuring the text property at the DNS host.
    text?: string;
}
export interface DomainDnsUnavailableRecord extends DomainDnsRecord {
    // Provides the reason why the DomainDnsUnavailableRecord entity is returned.
    description?: NullableOption<string>;
}
export interface Organization extends DirectoryObject {
    // The collection of service plans associated with the tenant. Not nullable.
    assignedPlans?: AssignedPlan[];
    /**
     * Telephone number for the organization. Although this is a string collection, only one number can be set for this
     * property.
     */
    businessPhones?: string[];
    // City name of the address for the organization.
    city?: NullableOption<string>;
    // Country/region name of the address for the organization.
    country?: NullableOption<string>;
    // Country/region abbreviation for the organization.
    countryLetterCode?: NullableOption<string>;
    /**
     * Timestamp of when the organization was created. The value cannot be modified and is automatically populated when the
     * organization 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    createdDateTime?: NullableOption<string>;
    // The directory size quota information of an organization.
    directorySizeQuota?: NullableOption<DirectorySizeQuota>;
    // The display name for the tenant.
    displayName?: NullableOption<string>;
    /**
     * true if organization is Multi-Geo enabled; false if organization is not Multi-Geo enabled; null (default). Read-only.
     * For more information, see OneDrive Online Multi-Geo.
     */
    isMultipleDataLocationsForServicesEnabled?: NullableOption<boolean>;
    // Not nullable.
    marketingNotificationEmails?: string[];
    /**
     * The time and date at which the tenant was last 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 is
     * 2014-01-01T00:00:00Z.
     */
    onPremisesLastSyncDateTime?: NullableOption<string>;
    /**
     * 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; Nullable. null if this object has never been synced from an on-premises
     * directory (default).
     */
    onPremisesSyncEnabled?: NullableOption<boolean>;
    // Postal code of the address for the organization.
    postalCode?: NullableOption<string>;
    // The preferred language for the organization. Should follow ISO 639-1 Code; for example en.
    preferredLanguage?: NullableOption<string>;
    // The privacy profile of an organization.
    privacyProfile?: NullableOption<PrivacyProfile>;
    // Not nullable.
    provisionedPlans?: ProvisionedPlan[];
    securityComplianceNotificationMails?: string[];
    securityComplianceNotificationPhones?: string[];
    // State name of the address for the organization.
    state?: NullableOption<string>;
    // Street name of the address for organization.
    street?: NullableOption<string>;
    // Not nullable.
    technicalNotificationMails?: string[];
    // The collection of domains associated with this tenant. Not nullable.
    verifiedDomains?: VerifiedDomain[];
    // Certificate connector setting.
    certificateConnectorSetting?: NullableOption<CertificateConnectorSetting>;
    // Mobile device management authority. Possible values are: unknown, intune, sccm, office365.
    mobileDeviceManagementAuthority?: MdmAuthority;
    branding?: NullableOption<OrganizationalBranding>;
    /**
     * Navigation property to manage certificate-based authentication configuration. Only a single instance of
     * certificateBasedAuthConfiguration can be created in the collection.
     */
    certificateBasedAuthConfiguration?: NullableOption<CertificateBasedAuthConfiguration[]>;
    // The collection of open extensions defined for the organization resource. Nullable.
    extensions?: NullableOption<Extension[]>;
    // Retrieve the properties and relationships of organizationSettings object. Nullable.
    settings?: NullableOption<OrganizationSettings>;
}
export interface OrganizationalBrandingProperties extends Entity {
    /**
     * Color that will appear in place of the background image in low-bandwidth connections. The primary color of your banner
     * logo or your organization color is recommended to be used here. Specify this in hexadecimal (for example, white is
     * #FFFFFF).
     */
    backgroundColor?: NullableOption<string>;
    /**
     * Image that appears as the background of the sign in page. .png or .jpg not larger than 1920x1080 and smaller than
     * 300kb. A smaller image will reduce bandwidth requirements and make page loads more performant.
     */
    backgroundImage?: NullableOption<any>;
    backgroundImageRelativeUrl?: NullableOption<string>;
    /**
     * A banner version of your company logo which appears appears on the sign-in page. .png or .jpg no larger than 36x245px.
     * We recommend using a transparent image with no padding around the logo.
     */
    bannerLogo?: NullableOption<any>;
    bannerLogoRelativeUrl?: NullableOption<string>;
    cdnList?: NullableOption<string[]>;
    customAccountResetCredentialsUrl?: NullableOption<string>;
    customCannotAccessYourAccountText?: NullableOption<string>;
    customCannotAccessYourAccountUrl?: NullableOption<string>;
    customForgotMyPasswordText?: NullableOption<string>;
    customPrivacyAndCookiesText?: NullableOption<string>;
    customPrivacyAndCookiesUrl?: NullableOption<string>;
    customResetItNowText?: NullableOption<string>;
    customTermsOfUseText?: NullableOption<string>;
    customTermsOfUseUrl?: NullableOption<string>;
    favicon?: NullableOption<any>;
    faviconRelativeUrl?: NullableOption<string>;
    headerBackgroundColor?: NullableOption<string>;
    loginPageTextVisibilitySettings?: NullableOption<LoginPageTextVisibilitySettings>;
    /**
     * Text that appears at the bottom of the sign-in box. You can use this to communicate additional information, such as the
     * phone number to your help desk or a legal statement. This text must be Unicode and not exceed 1024 characters.
     */
    signInPageText?: NullableOption<string>;
    /**
     * Square version of your company logo. This appears in Windows 10 out-of-box (OOBE) experiences and when Windows
     * Autopilot is enabled for deployment. .png or .jpg no larger than 240x240px and no more than 10kb in size. We recommend
     * using a transparent image with no padding around the logo.
     */
    squareLogo?: NullableOption<any>;
    squareLogoRelativeUrl?: NullableOption<string>;
    /**
     * String that shows as the hint in the username textbox on the sign in screen. This text must be Unicode, without links
     * or code, and can't exceed 64 characters.
     */
    usernameHintText?: NullableOption<string>;
}
export interface OrganizationalBranding extends OrganizationalBrandingProperties {
    localizations?: NullableOption<OrganizationalBrandingLocalization[]>;
}
export interface OrganizationSettings extends Entity {
    /**
     * Contains the properties that are configured by an administrator for the visibility of Microsoft Graph-derived insights,
     * between a user and other items in Microsoft 365, such as documents or sites. Get itemInsightsSettings through this
     * navigation property.
     */
    itemInsights?: NullableOption<ItemInsightsSettings>;
    /**
     * Contains a collection of the properties an administrator has defined as visible on the Microsoft 365 profile card. Get
     * organization settings returns the properties configured for profile cards for the organization.
     */
    profileCardProperties?: NullableOption<ProfileCardProperty[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface OrganizationalBrandingLocalization extends OrganizationalBrandingProperties {}
export interface OrgContact extends DirectoryObject {
    // Postal addresses for this organizational contact. For now a contact can only have one physical address.
    addresses?: NullableOption<PhysicalOfficeAddress[]>;
    // Name of the company that this organizational contact belong to. Supports $filter (eq, ne, NOT, ge, le, in, startsWith).
    companyName?: NullableOption<string>;
    // The name for the department in which the contact works. Supports $filter (eq, ne, NOT, ge, le, in, startsWith).
    department?: NullableOption<string>;
    /**
     * Display name for this organizational contact. Supports $filter (eq, ne, NOT, ge, le, in, startsWith), $search, and
     * $orderBy.
     */
    displayName?: NullableOption<string>;
    // First name for this organizational contact. Supports $filter (eq, ne, NOT, ge, le, in, startsWith).
    givenName?: NullableOption<string>;
    // Job title for this organizational contact. Supports $filter (eq, ne, NOT, ge, le, in, startsWith).
    jobTitle?: NullableOption<string>;
    /**
     * The SMTP address for the contact, for example, 'jeff@contoso.onmicrosoft.com'. Supports $filter (eq, ne, NOT, ge, le,
     * in, startsWith).
     */
    mail?: NullableOption<string>;
    /**
     * Email alias (portion of email address pre-pending the @ symbol) for this organizational contact. Supports $filter (eq,
     * ne, NOT, ge, le, in, startsWith).
     */
    mailNickname?: NullableOption<string>;
    /**
     * Date and time when this organizational contact was last synchronized from on-premises AD. 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 is
     * 2014-01-01T00:00:00Z. Supports $filter (eq, ne, NOT, ge, le, in).
     */
    onPremisesLastSyncDateTime?: NullableOption<string>;
    // List of any synchronization provisioning errors for this organizational contact. Supports $filter (eq, NOT).
    onPremisesProvisioningErrors?: NullableOption<OnPremisesProvisioningError[]>;
    /**
     * 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 and now mastered in Exchange; null if this object has never been synced
     * from an on-premises directory (default).
     */
    onPremisesSyncEnabled?: NullableOption<boolean>;
    /**
     * List of phones for this organizational contact. Phone types can be mobile, business, and businessFax. Only one of each
     * type can ever be present in the collection. Supports $filter (eq, ne, NOT, in).
     */
    phones?: NullableOption<Phone[]>;
    /**
     * For example: 'SMTP: bob@contoso.com', 'smtp: bob@sales.contoso.com'. The any operator is required for filter
     * expressions on multi-valued properties. Supports $filter (eq, NOT, ge, le, startsWith).
     */
    proxyAddresses?: string[];
    // Last name for this organizational contact. Supports $filter (eq, ne, NOT, ge, le, in, startsWith)
    surname?: NullableOption<string>;
    /**
     * The contact's direct reports. (The users and contacts that have their manager property set to this contact.) Read-only.
     * Nullable. Supports $expand.
     */
    directReports?: NullableOption<DirectoryObject[]>;
    // The user or contact that is this contact's manager. Read-only. Supports $expand.
    manager?: NullableOption<DirectoryObject>;
    // Groups that this contact is a member of. Read-only. Nullable. Supports $expand.
    memberOf?: NullableOption<DirectoryObject[]>;
    transitiveMemberOf?: NullableOption<DirectoryObject[]>;
    // The transitive reports for a contact. Read-only.
    transitiveReports?: NullableOption<DirectoryObject[]>;
}
export interface PermissionGrantConditionSet extends Entity {
    /**
     * A list of appId values for the client applications to match with, or a list with the single value all to match any
     * client application. Default is the single value all.
     */
    clientApplicationIds?: NullableOption<string[]>;
    /**
     * A list of Microsoft Partner Network (MPN) IDs for verified publishers of the client application, or a list with the
     * single value all to match with client apps from any publisher. Default is the single value all.
     */
    clientApplicationPublisherIds?: NullableOption<string[]>;
    /**
     * Set to true to only match on client applications with a verified publisher. Set to false to match on any client app,
     * even if it does not have a verified publisher. Default is false.
     */
    clientApplicationsFromVerifiedPublisherOnly?: NullableOption<boolean>;
    /**
     * A list of Azure Active Directory tenant IDs in which the client application is registered, or a list with the single
     * value all to match with client apps registered in any tenant. Default is the single value all.
     */
    clientApplicationTenantIds?: NullableOption<string[]>;
    /**
     * The permission classification for the permission being granted, or all to match with any permission classification
     * (including permissions which are not classified). Default is all.
     */
    permissionClassification?: NullableOption<string>;
    /**
     * The list of id values for the specific permissions to match with, or a list with the single value all to match with any
     * permission. The id of delegated permissions can be found in the publishedPermissionScopes property of the API's
     * **servicePrincipal** object. The id of application permissions can be found in the appRoles property of the API's
     * **servicePrincipal** object. The id of resource-specific application permissions can be found in the
     * resourceSpecificApplicationPermissions property of the API's **servicePrincipal** object. Default is the single value
     * all.
     */
    permissions?: NullableOption<string[]>;
    /**
     * The permission type of the permission being granted. Possible values: application for application permissions (e.g. app
     * roles), or delegated for delegated permissions. The value delegatedUserConsentable indicates delegated permissions
     * which have not been configured by the API publisher to require admin consent—this value may be used in built-in
     * permission grant policies, but cannot be used in custom permission grant policies. Required.
     */
    permissionType?: NullableOption<PermissionType>;
    /**
     * The appId of the resource application (e.g. the API) for which a permission is being granted, or any to match with any
     * resource application or API. Default is any.
     */
    resourceApplication?: NullableOption<string>;
}
export interface UnifiedRoleAssignment extends Entity {
    /**
     * Identifier of the app specific scope when the assignment scope is app specific. The scope of an assignment determines
     * the set of resources for which the principal has been granted access. Directory scopes are shared scopes stored in the
     * directory that are understood by multiple applications. Use / for tenant-wide scope. App scopes are scopes that are
     * defined and understood by this application only. For the entitlement management provider, use app scopes to specify a
     * catalog, for example /AccessPackageCatalog/beedadfe-01d5-4025-910b-84abb9369997.
     */
    appScopeId?: NullableOption<string>;
    condition?: NullableOption<string>;
    /**
     * Identifier of the directory object representing the scope of the assignment. The scope of an assignment determines the
     * set of resources for which the principal has been granted access. Directory scopes are shared scopes stored in the
     * directory that are understood by multiple applications. App scopes are scopes that are defined and understood by this
     * application only.
     */
    directoryScopeId?: NullableOption<string>;
    // Identifier of the principal to which the assignment is granted. Supports $filter (eq operator only).
    principalId?: NullableOption<string>;
    principalOrganizationId?: NullableOption<string>;
    /**
     * The scope at which the unifiedRoleAssignment applies. This is / for service-wide. DO NOT USE. This property will be
     * deprecated soon.
     */
    resourceScope?: NullableOption<string>;
    // Identifier of the unifiedRoleDefinition the assignment is for. Read-only. Supports $filter (eq operator only).
    roleDefinitionId?: NullableOption<string>;
    // Details of the app specific scope when the assignment scope is app specific. Containment entity.
    appScope?: NullableOption<AppScope>;
    /**
     * The directory object that is the scope of the assignment. Provided so that callers can get the directory object using
     * $expand at the same time as getting the role assignment. Read-only. Supports $expand.
     */
    directoryScope?: NullableOption<DirectoryObject>;
    /**
     * The assigned principal. Provided so that callers can get the principal using $expand at the same time as getting the
     * role assignment. Read-only. Supports $expand.
     */
    principal?: NullableOption<DirectoryObject>;
    /**
     * The roleDefinition the assignment is for. Provided so that callers can get the role definition using $expand at the
     * same time as getting the role assignment. roleDefinition.id will be auto expanded. Supports $expand.
     */
    roleDefinition?: NullableOption<UnifiedRoleDefinition>;
}
export interface UnifiedRoleScheduleInstanceBase extends Entity {
    /**
     * Id of the app specific scope when the assignment scope is app specific. The scope of an assignment determines the set
     * of resources for which the principal has been granted access. Directory scopes are shared scopes stored in the
     * directory that are understood by multiple applications. Use '/' for tenant-wide scope. App scopes are scopes that are
     * defined and understood by this application only.
     */
    appScopeId?: NullableOption<string>;
    /**
     * Id of the directory object representing the scope of the assignment. The scope of an assignment determines the set of
     * resources for which the principal has been granted access. Directory scopes are shared scopes stored in the directory
     * that are understood by multiple applications. App scopes are scopes that are defined and understood by this application
     * only.
     */
    directoryScopeId?: NullableOption<string>;
    // Objectid of the principal to which the assignment is being granted to.
    principalId?: NullableOption<string>;
    // ID of the unifiedRoleDefinition the assignment is for. Read only.
    roleDefinitionId?: NullableOption<string>;
    /**
     * Read-only property with details of the app specific scope when the assignment scope is app specific. Containment
     * entity.
     */
    appScope?: NullableOption<AppScope>;
    /**
     * The directory object that is the scope of the assignment. Enables the retrieval of the directory object using $expand
     * at the same time as getting the role assignment. Read-only.
     */
    directoryScope?: NullableOption<DirectoryObject>;
    /**
     * The principal that is getting a role assignment through the request. Enables the retrieval of the principal using
     * $expand at the same time as getting the role assignment. Read-only.
     */
    principal?: NullableOption<DirectoryObject>;
    /**
     * The roleDefinition for the assignment. Enables the retrieval of the role definition using $expand at the same time as
     * getting the role assignment. The roleDefinition.Id is automatically expanded.
     */
    roleDefinition?: NullableOption<UnifiedRoleDefinition>;
}
export interface UnifiedRoleAssignmentScheduleInstance extends UnifiedRoleScheduleInstanceBase {
    // Type of the assignment. It can either be Assigned or Activated.
    assignmentType?: NullableOption<string>;
    // Time that the roleAssignmentInstance will expire
    endDateTime?: NullableOption<string>;
    // Membership type of the assignment. It can either be Inherited, Direct, or Group.
    memberType?: NullableOption<string>;
    // ID of the roleAssignment in the directory
    roleAssignmentOriginId?: NullableOption<string>;
    // ID of the parent roleAssignmentSchedule for this instance
    roleAssignmentScheduleId?: NullableOption<string>;
    // Time that the roleAssignmentInstance will start
    startDateTime?: NullableOption<string>;
    /**
     * If the roleAssignmentScheduleInstance is activated by a roleEligibilityScheduleRequest, this is the link to the related
     * schedule instance.
     */
    activatedUsing?: NullableOption<UnifiedRoleEligibilityScheduleInstance>;
}
export interface Request extends Entity {
    approvalId?: NullableOption<string>;
    completedDateTime?: NullableOption<string>;
    createdBy?: NullableOption<IdentitySet>;
    createdDateTime?: NullableOption<string>;
    customData?: NullableOption<string>;
    status?: string;
}
export interface UnifiedRoleAssignmentScheduleRequest extends Request {
    /**
     * Representing the type of the operation on the role assignment. The value can be AdminAdd: Administrators assign
     * users/groups to roles;UserAdd: Users activate eligible assignments; AdminUpdate: Administrators change existing role
     * assignmentsAdminRemove: Administrators remove users/groups from roles;UserRemove: Users deactivate active
     * assignments;UserExtend: Users request to extend their expiring assignments;AdminExtend: Administrators extend expiring
     * assignments.UserRenew: Users request to renew their expired assignments;AdminRenew: Administrators extend expiring
     * assignments.
     */
    action?: NullableOption<string>;
    /**
     * Id of the app specific scope when the assignment scope is app specific. The scope of an assignment determines the set
     * of resources for which the principal has been granted access. Directory scopes are shared scopes stored in the
     * directory that are understood by multiple applications. Use '/' for tenant-wide scope. App scopes are scopes that are
     * defined and understood by this application only.
     */
    appScopeId?: NullableOption<string>;
    /**
     * Id of the directory object representing the scope of the assignment. The scope of an assignment determines the set of
     * resources for which the principal has been granted access. Directory scopes are shared scopes stored in the directory
     * that are understood by multiple applications. App scopes are scopes that are defined and understood by this application
     * only.
     */
    directoryScopeId?: NullableOption<string>;
    /**
     * A boolean that determines whether the call is a validation or an actual call. Only set this property if you want to
     * check whether an activation is subject to additional rules like MFA before actually submitting the request.
     */
    isValidationOnly?: NullableOption<boolean>;
    // A message provided by users and administrators when create the request about why it is needed.
    justification?: NullableOption<string>;
    // Objectid of the principal to which the assignment is being granted to.
    principalId?: NullableOption<string>;
    // ID of the unifiedRoleDefinition the assignment is for. Read only.
    roleDefinitionId?: NullableOption<string>;
    // The schedule object of the role assignment request.
    scheduleInfo?: NullableOption<RequestSchedule>;
    // ID of the schedule object attached to the assignment.
    targetScheduleId?: NullableOption<string>;
    /**
     * The ticketInfo object attached to the role assignment request which includes details of the ticket number and ticket
     * system.
     */
    ticketInfo?: NullableOption<TicketInfo>;
    /**
     * If the request is from an eligible administrator to activate a role, this parameter will show the related eligible
     * assignment for that activation.
     */
    activatedUsing?: NullableOption<UnifiedRoleEligibilitySchedule>;
    /**
     * Read-only property with details of the app specific scope when the assignment scope is app specific. Containment
     * entity.
     */
    appScope?: NullableOption<AppScope>;
    /**
     * Property referencing the directory object that is the scope of the assignment. Provided so that callers can get the
     * directory object using $expand at the same time as getting the role assignment. Read-only.
     */
    directoryScope?: NullableOption<DirectoryObject>;
    /**
     * Property referencing the principal that is getting a role assignment through the request. Provided so that callers can
     * get the principal using $expand at the same time as getting the role assignment. Read-only.
     */
    principal?: NullableOption<DirectoryObject>;
    /**
     * Property indicating the roleDefinition the assignment is for. Provided so that callers can get the role definition
     * using $expand at the same time as getting the role assignment. roleDefinition.Id will be auto expanded.
     */
    roleDefinition?: NullableOption<UnifiedRoleDefinition>;
    targetSchedule?: NullableOption<UnifiedRoleAssignmentSchedule>;
}
export interface UnifiedRoleScheduleBase extends Entity {
    /**
     * Id of the app specific scope when the assignment scope is app specific. The scope of an assignment determines the set
     * of resources for which the principal has been granted access. Directory scopes are shared scopes stored in the
     * directory that are understood by multiple applications. Use '/' for tenant-wide scope. App scopes are scopes that are
     * defined and understood by this application only.
     */
    appScopeId?: NullableOption<string>;
    // Time that the schedule was created.
    createdDateTime?: NullableOption<string>;
    // ID of the roleAssignmentScheduleRequest that created this schedule.
    createdUsing?: NullableOption<string>;
    /**
     * Id of the directory object representing the scope of the assignment. The scope of an assignment determines the set of
     * resources for which the principal has been granted access. Directory scopes are shared scopes stored in the directory
     * that are understood by multiple applications. App scopes are scopes that are defined and understood by this application
     * only.
     */
    directoryScopeId?: NullableOption<string>;
    // Last time the schedule was updated.
    modifiedDateTime?: NullableOption<string>;
    // Objectid of the principal to which the assignment is being granted to.
    principalId?: NullableOption<string>;
    // ID of the unifiedRoleDefinition the assignment is for. Read only.
    roleDefinitionId?: NullableOption<string>;
    /**
     * Status for the roleAssignmentSchedule. It can include state related messages like Provisioned, Revoked, Pending
     * Provisioning, and Pending Approval.
     */
    status?: NullableOption<string>;
    /**
     * Read-only property with details of the app specific scope when the assignment scope is app specific. Containment
     * entity.
     */
    appScope?: NullableOption<AppScope>;
    /**
     * Property referencing the directory object that is the scope of the assignment. Provided so that callers can get the
     * directory object using $expand at the same time as getting the role assignment. Read-only.
     */
    directoryScope?: NullableOption<DirectoryObject>;
    /**
     * Property referencing the principal that is getting a role assignment through the request. Provided so that callers can
     * get the principal using $expand at the same time as getting the role assignment. Read-only.
     */
    principal?: NullableOption<DirectoryObject>;
    /**
     * Property indicating the roleDefinition the assignment is for. Provided so that callers can get the role definition
     * using $expand at the same time as getting the role assignment. roleDefinition.Id will be auto expanded.
     */
    roleDefinition?: NullableOption<UnifiedRoleDefinition>;
}
export interface UnifiedRoleAssignmentSchedule extends UnifiedRoleScheduleBase {
    // Type of the assignment. It can either be Assigned or Activated.
    assignmentType?: NullableOption<string>;
    // Membership type of the assignment. It can either be Inherited, Direct, or Group.
    memberType?: NullableOption<string>;
    // The schedule object of the role assignment request.
    scheduleInfo?: NullableOption<RequestSchedule>;
    // If the roleAssignmentSchedule is activated by a roleEligibilitySchedule, this is the link to that schedule.
    activatedUsing?: NullableOption<UnifiedRoleEligibilitySchedule>;
}
export interface UnifiedRoleEligibilityScheduleInstance extends UnifiedRoleScheduleInstanceBase {
    // Time that the roleEligibilityScheduleInstance will expire
    endDateTime?: NullableOption<string>;
    // Membership type of the assignment. It can either be Inherited, Direct, or Group.
    memberType?: NullableOption<string>;
    // ID of the parent roleEligibilitySchedule for this instance
    roleEligibilityScheduleId?: NullableOption<string>;
    // Time that the roleEligibilityScheduleInstance will start
    startDateTime?: NullableOption<string>;
}
export interface UnifiedRoleEligibilityScheduleRequest extends Request {
    /**
     * Representing the type of the operation on the role assignment. The value can be AdminAdd: Administrators assign
     * users/groups to roles;UserAdd: Users activate eligible assignments; AdminUpdate: Administrators change existing role
     * assignmentsAdminRemove: Administrators remove users/groups from roles;UserRemove: Users deactivate active
     * assignments;UserExtend: Users request to extend their expiring assignments;AdminExtend: Administrators extend expiring
     * assignments.UserRenew: Users request to renew their expired assignments;AdminRenew: Administrators extend expiring
     * assignments.
     */
    action?: NullableOption<string>;
    /**
     * Id of the app specific scope when the assignment scope is app specific. The scope of an assignment determines the set
     * of resources for which the principal has been granted access. Directory scopes are shared scopes stored in the
     * directory that are understood by multiple applications. Use '/' for tenant-wide scope. App scopes are scopes that are
     * defined and understood by this application only.
     */
    appScopeId?: NullableOption<string>;
    /**
     * Id of the directory object representing the scope of the assignment. The scope of an assignment determines the set of
     * resources for which the principal has been granted access. Directory scopes are shared scopes stored in the directory
     * that are understood by multiple applications. App scopes are scopes that are defined and understood by this application
     * only.
     */
    directoryScopeId?: NullableOption<string>;
    /**
     * A boolean that determines whether the call is a validation or an actual call. Only set this property if you want to
     * check whether an activation is subject to additional rules like MFA before actually submitting the request.
     */
    isValidationOnly?: NullableOption<boolean>;
    // A message provided by users and administrators when create the request about why it is needed.
    justification?: NullableOption<string>;
    // Objectid of the principal to which the assignment is being granted to.
    principalId?: NullableOption<string>;
    // ID of the unifiedRoleDefinition the assignment is for. Read only.
    roleDefinitionId?: NullableOption<string>;
    // The schedule object of the role assignment request.
    scheduleInfo?: NullableOption<RequestSchedule>;
    // ID of the schedule object attached to the assignment.
    targetScheduleId?: NullableOption<string>;
    /**
     * The ticketInfo object attached to the role assignment request which includes details of the ticket number and ticket
     * system.
     */
    ticketInfo?: NullableOption<TicketInfo>;
    /**
     * Read-only property with details of the app specific scope when the assignment scope is app specific. Containment
     * entity.
     */
    appScope?: NullableOption<AppScope>;
    /**
     * Property referencing the directory object that is the scope of the assignment. Provided so that callers can get the
     * directory object using $expand at the same time as getting the role assignment. Read-only.
     */
    directoryScope?: NullableOption<DirectoryObject>;
    /**
     * Property referencing the principal that is getting a role assignment through the request. Provided so that callers can
     * get the principal using $expand at the same time as getting the role assignment. Read-only.
     */
    principal?: NullableOption<DirectoryObject>;
    /**
     * Property indicating the roleDefinition the assignment is for. Provided so that callers can get the role definition
     * using $expand at the same time as getting the role assignment. roleDefinition.Id will be auto expanded
     */
    roleDefinition?: NullableOption<UnifiedRoleDefinition>;
    targetSchedule?: NullableOption<UnifiedRoleEligibilitySchedule>;
}
export interface UnifiedRoleEligibilitySchedule extends UnifiedRoleScheduleBase {
    // Membership type of the eligible assignment. It can either be Inherited, Direct, or Group.
    memberType?: NullableOption<string>;
    // The schedule object of the eligible role assignment request.
    scheduleInfo?: NullableOption<RequestSchedule>;
}
export interface SubscribedSku extends Entity {
    // For example, 'User' or 'Company'.
    appliesTo?: NullableOption<string>;
    /**
     * Possible values are: Enabled, Warning, Suspended, Deleted, LockedOut. The capabilityStatus is Enabled if the
     * prepaidUnits property has at least 1 unit that is enabled, and LockedOut if the customer cancelled their subscription.
     */
    capabilityStatus?: NullableOption<string>;
    // The number of licenses that have been assigned.
    consumedUnits?: NullableOption<number>;
    // Information about the number and status of prepaid licenses.
    prepaidUnits?: NullableOption<LicenseUnitsDetail>;
    // Information about the service plans that are available with the SKU. Not nullable
    servicePlans?: ServicePlanInfo[];
    // The unique identifier (GUID) for the service SKU.
    skuId?: NullableOption<string>;
    /**
     * The SKU part number; for example: 'AAD_PREMIUM' or 'RMSBASIC'. To get a list of commercial subscriptions that an
     * organization has acquired, see List subscribedSkus.
     */
    skuPartNumber?: NullableOption<string>;
}
export interface EducationAssignment extends Entity {
    /**
     * Optional field to control the assignment behavior for students who are added after the assignment is published. If not
     * specified, defaults to none value. Currently supports only two values: none or assignIfOpen.
     */
    addedStudentAction?: NullableOption<EducationAddedStudentAction>;
    /**
     * Optional field to control the assignment behavior for adding assignments to students' and teachers' calendars when the
     * assignment is published. Possible values are: studentsAndPublisher, studentsAndTeamOwners, none. Default value is none.
     */
    addToCalendarAction?: NullableOption<EducationAddToCalendarOptions>;
    /**
     * Identifies whether students can submit after the due date. If this property is not specified during create, it defaults
     * to true.
     */
    allowLateSubmissions?: NullableOption<boolean>;
    /**
     * Identifies whether students can add their own resources to a submission or if they can only modify resources added by
     * the teacher.
     */
    allowStudentsToAddResourcesToSubmission?: NullableOption<boolean>;
    /**
     * The date when the assignment should become active. If in the future, the assignment is not shown to the student until
     * this date. 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 is 2014-01-01T00:00:00Z
     */
    assignDateTime?: NullableOption<string>;
    /**
     * The moment that the assignment was published to students and the assignment shows up on the students timeline. 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 is 2014-01-01T00:00:00Z
     */
    assignedDateTime?: NullableOption<string>;
    // Which users, or whole class should receive a submission object once the assignment is published.
    assignTo?: NullableOption<EducationAssignmentRecipient>;
    // Class which this assignment belongs.
    classId?: NullableOption<string>;
    /**
     * Date when the assignment will be closed for submissions. This is an optional field that can be null if the assignment
     * does not allowLateSubmissions or when the closeDateTime is the same as the dueDateTime. But if specified, then the
     * closeDateTime must be greater than or equal to the dueDateTime. 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 is 2014-01-01T00:00:00Z
     */
    closeDateTime?: NullableOption<string>;
    // Who created the assignment.
    createdBy?: NullableOption<IdentitySet>;
    /**
     * Moment when the assignment was 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 is 2014-01-01T00:00:00Z
     */
    createdDateTime?: NullableOption<string>;
    // Name of the assignment.
    displayName?: NullableOption<string>;
    /**
     * Date when the students assignment 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 is 2014-01-01T00:00:00Z
     */
    dueDateTime?: NullableOption<string>;
    // How the assignment will be graded.
    grading?: NullableOption<EducationAssignmentGradeType>;
    // Instructions for the assignment. This along with the display name tell the student what to do.
    instructions?: NullableOption<EducationItemBody>;
    // Who last modified the assignment.
    lastModifiedBy?: NullableOption<IdentitySet>;
    /**
     * Moment when the assignment was last modified. 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 is 2014-01-01T00:00:00Z
     */
    lastModifiedDateTime?: NullableOption<string>;
    /**
     * Optional field to specify the URL of the channel to post the assignment publish notification. If not specified or null,
     * defaults to the General channel. This field only applies to assignments where the assignTo value is
     * educationAssignmentClassRecipient. Updating the notificationChannelUrl is not allowed after the assignment has been
     * published.
     */
    notificationChannelUrl?: NullableOption<string>;
    // Folder URL where all the file resources for this assignment are stored.
    resourcesFolderUrl?: NullableOption<string>;
    // Status of the Assignment. You can not PATCH this value. Possible values are: draft, scheduled, published, assigned.
    status?: NullableOption<EducationAssignmentStatus>;
    // The deep link URL for the given assignment.
    webUrl?: NullableOption<string>;
    // When set, enables users to easily find assignments of a given type. Read-only. Nullable.
    categories?: NullableOption<EducationCategory[]>;
    // Learning objects that are associated with this assignment. Only teachers can modify this list. Nullable.
    resources?: NullableOption<EducationAssignmentResource[]>;
    // When set, the grading rubric attached to this assignment.
    rubric?: NullableOption<EducationRubric>;
    // Once published, there is a submission object for each student representing their work and grade. Read-only. Nullable.
    submissions?: NullableOption<EducationSubmission[]>;
}
export interface EducationCategory extends Entity {
    // Unique identifier for the category.
    displayName?: NullableOption<string>;
}
export interface EducationAssignmentResource extends Entity {
    // Indicates whether this resource should be copied to each student submission for modification and submission.
    distributeForStudentWork?: NullableOption<boolean>;
    // Resource object that has been associated with this assignment.
    resource?: NullableOption<EducationResource>;
}
export interface EducationRubric extends Entity {
    // The user who created this resource.
    createdBy?: NullableOption<IdentitySet>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    createdDateTime?: NullableOption<string>;
    // The description of this rubric.
    description?: NullableOption<EducationItemBody>;
    // The name of this rubric.
    displayName?: NullableOption<string>;
    /**
     * The grading type of this rubric -- null for a no-points rubric, or educationAssignmentPointsGradeType for a points
     * rubric.
     */
    grading?: NullableOption<EducationAssignmentGradeType>;
    // The last user to modify the resource.
    lastModifiedBy?: NullableOption<IdentitySet>;
    /**
     * Moment in time when the resource was last modified. 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 is 2014-01-01T00:00:00Z
     */
    lastModifiedDateTime?: NullableOption<string>;
    // The collection of levels making up this rubric.
    levels?: NullableOption<RubricLevel[]>;
    // The collection of qualities making up this rubric.
    qualities?: NullableOption<RubricQuality[]>;
}
export interface EducationSubmission extends Entity {
    // Who this submission is assigned to.
    recipient?: NullableOption<EducationSubmissionRecipient>;
    // Folder where all file resources for this submission need to be stored.
    resourcesFolderUrl?: NullableOption<string>;
    // User who moved the status of this submission to returned.
    returnedBy?: NullableOption<IdentitySet>;
    /**
     * Moment in time when the submission was returned. 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 is 2014-01-01T00:00:00Z
     */
    returnedDateTime?: NullableOption<string>;
    // Read-Only. Possible values are: working, submitted, released, returned.
    status?: NullableOption<EducationSubmissionStatus>;
    // User who moved the resource into the submitted state.
    submittedBy?: NullableOption<IdentitySet>;
    /**
     * Moment in time when the submission was moved into the submitted state. 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 is
     * 2014-01-01T00:00:00Z
     */
    submittedDateTime?: NullableOption<string>;
    // User who moved the resource from submitted into the working state.
    unsubmittedBy?: NullableOption<IdentitySet>;
    /**
     * Moment in time when the submission was moved from submitted into the working state. 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 is
     * 2014-01-01T00:00:00Z
     */
    unsubmittedDateTime?: NullableOption<string>;
    // Read-Write. Nullable.
    outcomes?: NullableOption<EducationOutcome[]>;
    // Nullable.
    resources?: NullableOption<EducationSubmissionResource[]>;
    // Read-only. Nullable.
    submittedResources?: NullableOption<EducationSubmissionResource[]>;
}
export interface EducationAssignmentDefaults extends Entity {
    /**
     * Class-level default behavior for handling students who are added after the assignment is published. Possible values
     * are: none, assignIfOpen.
     */
    addedStudentAction?: NullableOption<EducationAddedStudentAction>;
    /**
     * Optional field to control the asfor adding assignments to students' and teachers' calendars when the assignment is
     * published. Possible values are: studentsAndPublisher, studentsAndTeamOwners, none. Default value is none.
     */
    addToCalendarAction?: NullableOption<EducationAddToCalendarOptions>;
    // Class-level default value for due time field. Default value is 23:59:00.
    dueTime?: NullableOption<string>;
    // Default Teams channel to which notifications will be sent. Default value is null.
    notificationChannelUrl?: NullableOption<string>;
}
export interface EducationAssignmentSettings extends Entity {
    /**
     * Indicates whether turn-in celebration animation will be shown. A value of true indicates that the animation will not be
     * shown. Default value is false.
     */
    submissionAnimationDisabled?: NullableOption<boolean>;
}
export interface EducationClass extends Entity {
    // Class code used by the school to identify the class.
    classCode?: NullableOption<string>;
    // Course information for the class
    course?: NullableOption<EducationCourse>;
    // Entity who created the class
    createdBy?: NullableOption<IdentitySet>;
    // Description of the class.
    description?: NullableOption<string>;
    // Name of the class.
    displayName?: string;
    // ID of the class from the syncing system.
    externalId?: NullableOption<string>;
    // Name of the class in the syncing system.
    externalName?: NullableOption<string>;
    /**
     * The type of external source this resource was generated from (automatically determined from externalSourceDetail).
     * Possible values are: sis, lms, or manual.
     */
    externalSource?: NullableOption<EducationExternalSource>;
    // The name of the external source this resources was generated from.
    externalSourceDetail?: NullableOption<string>;
    // Grade level of the class.
    grade?: NullableOption<string>;
    // Mail name for sending email to all members, if this is enabled.
    mailNickname?: string;
    // Term for the class.
    term?: NullableOption<EducationTerm>;
    assignmentCategories?: NullableOption<EducationCategory[]>;
    assignmentDefaults?: NullableOption<EducationAssignmentDefaults>;
    // All assignments associated with this class. Nullable.
    assignments?: NullableOption<EducationAssignment[]>;
    assignmentSettings?: NullableOption<EducationAssignmentSettings>;
    // The underlying Microsoft 365 group object.
    group?: NullableOption<Group>;
    // All users in the class. Nullable.
    members?: NullableOption<EducationUser[]>;
    // All schools that this class is associated with. Nullable.
    schools?: NullableOption<EducationSchool[]>;
    // All teachers in the class. Nullable.
    teachers?: NullableOption<EducationUser[]>;
}
export interface EducationUser extends Entity {
    /**
     * Related records related to the user. Possible relationships are parent, relative, aide, doctor, guardian, child, other,
     * unknownFutureValue
     */
    relatedContacts?: NullableOption<RelatedContact[]>;
    // True if the account is enabled; otherwise, false. This property is required when a user is created. Supports /$filter.
    accountEnabled?: NullableOption<boolean>;
    // The licenses that are assigned to the user. Not nullable.
    assignedLicenses?: AssignedLicense[];
    // The plans that are assigned to the user. Read-only. Not nullable.
    assignedPlans?: AssignedPlan[];
    /**
     * The telephone numbers for the user. Note: Although this is a string collection, only one number can be set for this
     * property.
     */
    businessPhones?: string[];
    // Entity who created the user.
    createdBy?: NullableOption<IdentitySet>;
    // The name for the department in which the user works. Supports /$filter.
    department?: NullableOption<string>;
    // The name displayed in the address book for the user. Supports $filter and $orderby.
    displayName?: NullableOption<string>;
    /**
     * The type of external source this resource was generated from (automatically determined from externalSourceDetail).
     * Possible values are: sis, lms, or manual.
     */
    externalSource?: NullableOption<EducationExternalSource>;
    // The name of the external source this resources was generated from.
    externalSourceDetail?: NullableOption<string>;
    // The given name (first name) of the user. Supports /$filter.
    givenName?: NullableOption<string>;
    // The SMTP address for the user; for example, 'jeff@contoso.onmicrosoft.com'. Read-Only. Supports /$filter.
    mail?: NullableOption<string>;
    // Mail address of user. Note: type and postOfficeBox are not supported for educationUser resources.
    mailingAddress?: NullableOption<PhysicalAddress>;
    // The mail alias for the user. This property must be specified when a user is created. Supports /$filter.
    mailNickname?: NullableOption<string>;
    // The middle name of user.
    middleName?: NullableOption<string>;
    // The primary cellular telephone number for the user.
    mobilePhone?: NullableOption<string>;
    officeLocation?: NullableOption<string>;
    // Additional information used to associate the AAD user with it's Active Directory counterpart.
    onPremisesInfo?: NullableOption<EducationOnPremisesInfo>;
    // Specifies password policies for the user. See standard [user] resource for additional details.
    passwordPolicies?: NullableOption<string>;
    /**
     * Specifies the password profile for the user. The profile contains the user's password. This property is required when a
     * user is created. See standard [user] resource for additional details.
     */
    passwordProfile?: NullableOption<PasswordProfile>;
    // The preferred language for the user. Should follow ISO 639-1 Code; for example, 'en-US'.
    preferredLanguage?: NullableOption<string>;
    /**
     * Default role for a user. The user's role might be different in an individual class. Possible values are: student,
     * teacher, faculty. Supports /$filter.
     */
    primaryRole?: EducationUserRole;
    // The plans that are provisioned for the user. Read-only. Not nullable.
    provisionedPlans?: ProvisionedPlan[];
    refreshTokensValidFromDateTime?: NullableOption<string>;
    // Address where user lives. Note: type and postOfficeBox are not supported for educationUser resources.
    residenceAddress?: NullableOption<PhysicalAddress>;
    /**
     * 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.
     */
    showInAddressList?: NullableOption<boolean>;
    // If the primary role is student, this block will contain student specific data.
    student?: NullableOption<EducationStudent>;
    // The user's surname (family name or last name). Supports /$filter.
    surname?: NullableOption<string>;
    // If the primary role is teacher, this block will contain teacher specific data.
    teacher?: NullableOption<EducationTeacher>;
    /**
     * A two-letter country code ([ISO 3166 Alpha-2]). Required for users who will be assigned licenses. Not nullable.
     * Supports /$filter.
     */
    usageLocation?: NullableOption<string>;
    /**
     * The user principal name (UPN) for the user. Supports $filter and $orderby. See standard [user] resource for additional
     * details.
     */
    userPrincipalName?: NullableOption<string>;
    /**
     * A string value that can be used to classify user types in your directory, such as 'Member' and 'Guest'. Supports
     * /$filter.
     */
    userType?: NullableOption<string>;
    // List of assignments for the user. Nullable.
    assignments?: NullableOption<EducationAssignment[]>;
    rubrics?: NullableOption<EducationRubric[]>;
    // Classes to which the user belongs. Nullable.
    classes?: NullableOption<EducationClass[]>;
    // Schools to which the user belongs. Nullable.
    schools?: NullableOption<EducationSchool[]>;
    // Classes for which the user is a teacher.
    taughtClasses?: NullableOption<EducationClass[]>;
    // The directory user corresponding to this user.
    user?: NullableOption<User>;
}
export interface EducationOrganization extends Entity {
    // Organization description.
    description?: NullableOption<string>;
    // Organization display name.
    displayName?: string;
    // Where this user was created from. Possible values are: sis, lms, or manual.
    externalSource?: NullableOption<EducationExternalSource>;
    // The name of the external source this resources was generated from.
    externalSourceDetail?: NullableOption<string>;
}
export interface EducationSchool extends EducationOrganization {
    // Address of the school.
    address?: NullableOption<PhysicalAddress>;
    // Entity who created the school.
    createdBy?: NullableOption<IdentitySet>;
    // ID of school in syncing system.
    externalId?: NullableOption<string>;
    // ID of principal in syncing system.
    externalPrincipalId?: NullableOption<string>;
    fax?: NullableOption<string>;
    // Highest grade taught.
    highestGrade?: NullableOption<string>;
    // Lowest grade taught.
    lowestGrade?: NullableOption<string>;
    // Phone number of school.
    phone?: NullableOption<string>;
    // Email address of the principal.
    principalEmail?: NullableOption<string>;
    // Name of the principal.
    principalName?: NullableOption<string>;
    // School Number.
    schoolNumber?: NullableOption<string>;
    // The underlying administrativeUnit for this school.
    administrativeUnit?: NullableOption<AdministrativeUnit>;
    // Classes taught at the school. Nullable.
    classes?: NullableOption<EducationClass[]>;
    // Users in the school. Nullable.
    users?: NullableOption<EducationUser[]>;
}
export interface EducationOutcome extends Entity {
    lastModifiedBy?: NullableOption<IdentitySet>;
    lastModifiedDateTime?: NullableOption<string>;
}
export interface EducationFeedbackOutcome extends EducationOutcome {
    // Teacher's written feedback to the student.
    feedback?: NullableOption<EducationFeedback>;
    // A copy of the feedback property that is made when the grade is released to the student.
    publishedFeedback?: NullableOption<EducationFeedback>;
}
export interface EducationPointsOutcome extends EducationOutcome {
    // The numeric grade the teacher has given the student for this assignment.
    points?: NullableOption<EducationAssignmentPointsGrade>;
    // A copy of the points property that is made when the grade is released to the student.
    publishedPoints?: NullableOption<EducationAssignmentPointsGrade>;
}
export interface EducationRoot {
    synchronizationProfiles?: NullableOption<EducationSynchronizationProfile[]>;
    classes?: NullableOption<EducationClass[]>;
    me?: NullableOption<EducationUser>;
    schools?: NullableOption<EducationSchool[]>;
    users?: NullableOption<EducationUser[]>;
}
export interface EducationSynchronizationProfile extends Entity {
    // The data provider used for the profile.
    dataProvider?: EducationSynchronizationDataProvider;
    // Name of the configuration profile for syncing identities.
    displayName?: string;
    /**
     * The date the profile should be considered expired and cease syncing. When null. the profile will never expire.
     * (optional)
     */
    expirationDate?: NullableOption<string>;
    // Determines if School Data Sync should automatically replace unsupported special characters while syncing from source.
    handleSpecialCharacterConstraint?: NullableOption<boolean>;
    // Determines how the Profile should [create new][fullsync] or [match existing][dirsync] AAD Users.
    identitySynchronizationConfiguration?: EducationIdentitySynchronizationConfiguration;
    // License setup configuration.
    licensesToAssign?: NullableOption<EducationSynchronizationLicenseAssignment[]>;
    // The state of the profile. Possible values are: provisioning, provisioned, provisioningFailed, deleting, deletionFailed.
    state?: NullableOption<EducationSynchronizationProfileState>;
    // All errors associated with this synchronization profile.
    errors?: NullableOption<EducationSynchronizationError[]>;
    // The synchronization status.
    profileStatus?: NullableOption<EducationSynchronizationProfileStatus>;
}
export interface EducationRubricOutcome extends EducationOutcome {
    // A copy of the rubricQualityFeedback property that is made when the grade is released to the student.
    publishedRubricQualityFeedback?: NullableOption<RubricQualityFeedbackModel[]>;
    // A copy of the rubricQualitySelectedLevels property that is made when the grade is released to the student.
    publishedRubricQualitySelectedLevels?: NullableOption<RubricQualitySelectedColumnModel[]>;
    // A collection of specific feedback for each quality of this rubric.
    rubricQualityFeedback?: NullableOption<RubricQualityFeedbackModel[]>;
    // The level that the teacher has selected for each quality while grading this assignment.
    rubricQualitySelectedLevels?: NullableOption<RubricQualitySelectedColumnModel[]>;
}
export interface EducationSubmissionResource extends Entity {
    // Pointer to the assignment from which this resource was copied. If this is null, the student uploaded the resource.
    assignmentResourceUrl?: NullableOption<string>;
    // Resource object.
    resource?: NullableOption<EducationResource>;
}
export interface EducationSynchronizationError extends Entity {
    // Represents the sync entity (school, section, student, teacher).
    entryType?: NullableOption<string>;
    // Represents the error code for this error.
    errorCode?: NullableOption<string>;
    // Contains a description of the error.
    errorMessage?: NullableOption<string>;
    // The unique identifier for the entry.
    joiningValue?: NullableOption<string>;
    // The time of occurrence of this error.
    recordedDateTime?: NullableOption<string>;
    // The identifier of this error entry.
    reportableIdentifier?: NullableOption<string>;
}
export interface EducationSynchronizationProfileStatus extends Entity {
    // Number of errors during synchronization.
    errorCount?: number;
    // Represents the time when most recent changes were observed in profile.
    lastActivityDateTime?: NullableOption<string>;
    // Represents the time of the most recent successful synchronization.
    lastSynchronizationDateTime?: NullableOption<string>;
    /**
     * The status of a sync. The possible values are: paused, inProgress, success, error, validationError, quarantined,
     * unknownFutureValue, extracting, validating. Note that you must use the Prefer: include-unknown-enum-members request
     * header to get the following values in this evolvable enum: extracting, validating.
     */
    status?: NullableOption<EducationSynchronizationStatus>;
    // Status message for the current profile's synchronization stage.
    statusMessage?: string;
}
export interface ExactMatchJobBase extends Entity {
    completionDateTime?: NullableOption<string>;
    creationDateTime?: NullableOption<string>;
    error?: NullableOption<ClassificationError>;
    lastUpdatedDateTime?: NullableOption<string>;
    startDateTime?: NullableOption<string>;
}
export interface ExactMatchSessionBase extends ExactMatchJobBase {
    dataStoreId?: NullableOption<string>;
    processingCompletionDateTime?: NullableOption<string>;
    remainingBlockCount?: NullableOption<number>;
    remainingJobCount?: NullableOption<number>;
    state?: NullableOption<string>;
    totalBlockCount?: NullableOption<number>;
    totalJobCount?: NullableOption<number>;
    uploadCompletionDateTime?: NullableOption<string>;
}
export interface ExactMatchSession extends ExactMatchSessionBase {
    checksum?: NullableOption<string>;
    dataUploadURI?: NullableOption<string>;
    fields?: NullableOption<string[]>;
    fileName?: NullableOption<string>;
    rowsPerBlock?: NullableOption<number>;
    salt?: NullableOption<string>;
    uploadAgentId?: NullableOption<string>;
    uploadAgent?: NullableOption<ExactMatchUploadAgent>;
}
export interface ExactMatchLookupJob extends ExactMatchJobBase {
    state?: NullableOption<string>;
    matchingRows?: NullableOption<LookupResultRow[]>;
}
export interface LookupResultRow extends Entity {
    row?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface ItemActivityOLD extends Entity {
    action?: NullableOption<ItemActionSet>;
    actor?: NullableOption<IdentitySet>;
    times?: NullableOption<ItemActivityTimeSet>;
    driveItem?: NullableOption<DriveItem>;
    listItem?: NullableOption<ListItem>;
}
export interface DriveItem extends BaseItem {
    // Audio metadata, if the item is an audio file. Read-only.
    audio?: NullableOption<Audio>;
    bundle?: NullableOption<Bundle>;
    // The content stream, if the item represents a file.
    content?: NullableOption<any>;
    /**
     * 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.
     */
    cTag?: NullableOption<string>;
    // Information about the deleted state of the item. Read-only.
    deleted?: NullableOption<Deleted>;
    // File metadata, if the item is a file. Read-only.
    file?: NullableOption<File>;
    // File system information on client. Read-write.
    fileSystemInfo?: NullableOption<FileSystemInfo>;
    // Folder metadata, if the item is a folder. Read-only.
    folder?: NullableOption<Folder>;
    // Image metadata, if the item is an image. Read-only.
    image?: NullableOption<Image>;
    // Location metadata, if the item has location data. Read-only.
    location?: NullableOption<GeoCoordinates>;
    // Information about the media (audio or video) item. Read-write. Only on OneDrive for Business and SharePoint.
    media?: NullableOption<Media>;
    /**
     * If present, indicates that this item is a package instead of a folder or file. Packages are treated like files in some
     * contexts and folders in others. Read-only.
     */
    package?: NullableOption<Package>;
    /**
     * If present, indicates that indicates that one or more operations that may affect the state of the driveItem are pending
     * completion. Read-only.
     */
    pendingOperations?: NullableOption<PendingOperations>;
    // Photo metadata, if the item is a photo. Read-only.
    photo?: NullableOption<Photo>;
    /**
     * Provides information about the published or checked-out state of an item, in locations that support such actions. This
     * property is not returned by default. Read-only.
     */
    publication?: NullableOption<PublicationFacet>;
    // Remote item data, if the item is shared from a drive other than the one being accessed. Read-only.
    remoteItem?: NullableOption<RemoteItem>;
    // If this property is non-null, it indicates that the driveItem is the top-most driveItem in the drive.
    root?: NullableOption<Root>;
    // Search metadata, if the item is from a search result. Read-only.
    searchResult?: NullableOption<SearchResult>;
    /**
     * Indicates that the item has been shared with others and provides information about the shared state of the item.
     * Read-only.
     */
    shared?: NullableOption<Shared>;
    // Returns identifiers useful for SharePoint REST compatibility. Read-only.
    sharepointIds?: NullableOption<SharepointIds>;
    // Size of the item in bytes. Read-only.
    size?: NullableOption<number>;
    // Information about the drive item source. Read-only. Only on OneDrive for Business and SharePoint.
    source?: NullableOption<DriveItemSource>;
    // If the current item is also available as a special folder, this facet is returned. Read-only.
    specialFolder?: NullableOption<SpecialFolder>;
    // Video metadata, if the item is a video. Read-only.
    video?: NullableOption<Video>;
    // WebDAV compatible URL for the item.
    webDavUrl?: NullableOption<string>;
    // For files that are Excel spreadsheets, accesses the workbook API to work with the spreadsheet's contents. Nullable.
    workbook?: NullableOption<Workbook>;
    // The list of recent activities that took place on this item.
    activities?: NullableOption<ItemActivityOLD[]>;
    // Analytics about the view activities that took place on this item.
    analytics?: NullableOption<ItemAnalytics>;
    /**
     * Collection containing Item objects for the immediate children of Item. Only items representing folders have children.
     * Read-only. Nullable.
     */
    children?: NullableOption<DriveItem[]>;
    // For drives in SharePoint, the associated document library list item. Read-only. Nullable.
    listItem?: NullableOption<ListItem>;
    // The set of permissions for the item. Read-only. Nullable.
    permissions?: NullableOption<Permission[]>;
    // The set of subscriptions on the item. Only supported on the root of a drive.
    subscriptions?: NullableOption<Subscription[]>;
    /**
     * Collection containing [ThumbnailSet][] objects associated with the item. For more info, see [getting thumbnails][].
     * Read-only. Nullable.
     */
    thumbnails?: NullableOption<ThumbnailSet[]>;
    // The list of previous versions of the item. For more info, see [getting previous versions][]. Read-only. Nullable.
    versions?: NullableOption<DriveItemVersion[]>;
}
export interface Workbook extends Entity {
    application?: NullableOption<WorkbookApplication>;
    comments?: NullableOption<WorkbookComment[]>;
    functions?: NullableOption<WorkbookFunctions>;
    // Represents a collection of workbooks scoped named items (named ranges and constants). Read-only.
    names?: NullableOption<WorkbookNamedItem[]>;
    /**
     * 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. Nullable.
     */
    operations?: NullableOption<WorkbookOperation[]>;
    // Represents a collection of tables associated with the workbook. Read-only.
    tables?: NullableOption<WorkbookTable[]>;
    // Represents a collection of worksheets associated with the workbook. Read-only.
    worksheets?: NullableOption<WorkbookWorksheet[]>;
}
export interface ListItem extends BaseItem {
    // The content type of this list item
    contentType?: NullableOption<ContentTypeInfo>;
    // Returns identifiers useful for SharePoint REST compatibility. Read-only.
    sharepointIds?: NullableOption<SharepointIds>;
    // The list of recent activities that took place on this item.
    activities?: NullableOption<ItemActivityOLD[]>;
    // Analytics about the view activities that took place on this item.
    analytics?: NullableOption<ItemAnalytics>;
    // For document libraries, the driveItem relationship exposes the listItem as a [driveItem][]
    driveItem?: NullableOption<DriveItem>;
    // The values of the columns set on this list item.
    fields?: NullableOption<FieldValueSet>;
    // The list of previous versions of the list item.
    versions?: NullableOption<ListItemVersion[]>;
}
export interface Subscription extends Entity {
    // Identifier of the application used to create the subscription. Read-only.
    applicationId?: NullableOption<string>;
    /**
     * 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. Required. Note: Drive
     * root item and list change notifications support only the updated changeType. User and group change notifications
     * support updated and deleted changeType.
     */
    changeType?: string;
    /**
     * Specifies the value of the clientState property sent by the service in each change notification. The maximum length is
     * 255 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. Optional.
     */
    clientState?: NullableOption<string>;
    /**
     * 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.
     */
    creatorId?: NullableOption<string>;
    /**
     * 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.
     */
    encryptionCertificate?: NullableOption<string>;
    /**
     * A custom app-provided identifier to help identify the certificate needed to decrypt resource data. Optional. Required
     * when includeResourceData is true.
     */
    encryptionCertificateId?: NullableOption<string>;
    /**
     * 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. Required.
     */
    expirationDateTime?: string;
    // When set to true, change notifications include resource data (such as content of a chat message). Optional.
    includeResourceData?: NullableOption<boolean>;
    /**
     * Specifies the latest version of Transport Layer Security (TLS) that the notification endpoint, specified by
     * notificationUrl, supports. The possible values are: v1_0, v1_1, v1_2, v1_3. For subscribers whose notification endpoint
     * supports a version lower than the currently recommended version (TLS 1.2), specifying this property by a set timeline
     * allows them to temporarily use their deprecated version of TLS before completing their upgrade to TLS 1.2. For these
     * subscribers, not setting this property per the timeline would result in subscription operations failing. For
     * subscribers whose notification endpoint already supports TLS 1.2, setting this property is optional. In such cases,
     * Microsoft Graph defaults the property to v1_2.
     */
    latestSupportedTlsVersion?: NullableOption<string>;
    /**
     * The URL of the endpoint that receives lifecycle notifications, including subscriptionRemoved and missed notifications.
     * This URL must make use of the HTTPS protocol. Optional. Read more about how Outlook resources use lifecycle
     * notifications.
     */
    lifecycleNotificationUrl?: NullableOption<string>;
    /**
     * Desired content-type for MS Graph change notifications for supported resource types. The default content-type is the
     * 'application/json' content-type.
     */
    notificationContentType?: NullableOption<string>;
    /**
     * OData Query Options for specifying value for the targeting resource. Clients receive notifications when resource
     * reaches the state matching the query options provided here. With this new property in the subscription creation payload
     * along with all existing properties, Webhooks will deliver notifications whenever a resource reaches the desired state
     * mentioned in the notificationQueryOptions property eg when the print job is completed, when a print job resource
     * isFetchable property value becomes true etc.
     */
    notificationQueryOptions?: NullableOption<string>;
    // The URL of the endpoint that receives the change notifications. This URL must make use of the HTTPS protocol. Required.
    notificationUrl?: string;
    notificationUrlAppId?: NullableOption<string>;
    /**
     * Specifies the resource that will be monitored for changes. Do not include the base URL
     * (https://graph.microsoft.com/beta/). See the possible resource path values for each supported resource. Required.
     */
    resource?: string;
}
export interface ThumbnailSet extends Entity {
    // A 1920x1920 scaled thumbnail.
    large?: NullableOption<Thumbnail>;
    // A 176x176 scaled thumbnail.
    medium?: NullableOption<Thumbnail>;
    // A 48x48 cropped thumbnail.
    small?: NullableOption<Thumbnail>;
    // A custom thumbnail image or the original image used to generate other thumbnails.
    source?: NullableOption<Thumbnail>;
}
export interface BaseItemVersion extends Entity {
    // Identity of the user which last modified the version. Read-only.
    lastModifiedBy?: NullableOption<IdentitySet>;
    // Date and time the version was last modified. Read-only.
    lastModifiedDateTime?: NullableOption<string>;
    // Indicates the publication status of this particular version. Read-only.
    publication?: NullableOption<PublicationFacet>;
}
export interface DriveItemVersion extends BaseItemVersion {
    content?: NullableOption<any>;
    // Indicates the size of the content stream for this version of the item.
    size?: NullableOption<number>;
}
export interface WorkbookApplication extends Entity {
    // Returns the calculation mode used in the workbook. Possible values are: Automatic, AutomaticExceptTables, Manual.
    calculationMode?: string;
}
export interface WorkbookComment extends Entity {
    // The content of the comment.
    content?: NullableOption<string>;
    // Indicates the type for the comment.
    contentType?: string;
    // Read-only. Nullable.
    replies?: NullableOption<WorkbookCommentReply[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface WorkbookFunctions extends Entity {}
export interface WorkbookNamedItem extends Entity {
    // Represents the comment associated with this name.
    comment?: NullableOption<string>;
    // The name of the object. Read-only.
    name?: NullableOption<string>;
    // Indicates whether the name is scoped to the workbook or to a specific worksheet. Read-only.
    scope?: string;
    /**
     * Indicates what type of reference is associated with the name. Possible values are: String, Integer, Double, Boolean,
     * Range. Read-only.
     */
    type?: NullableOption<string>;
    // Represents the formula that the name is defined to refer to. E.g. =Sheet14!$B$2:$H$12, =4.75, etc. Read-only.
    value?: NullableOption<any>;
    // Specifies whether the object is visible or not.
    visible?: boolean;
    /**
     * Returns the worksheet on which the named item is scoped to. Available only if the item is scoped to the worksheet.
     * Read-only.
     */
    worksheet?: NullableOption<WorkbookWorksheet>;
}
export interface WorkbookOperation extends Entity {
    // The error returned by the operation.
    error?: NullableOption<WorkbookOperationError>;
    // The resource URI for the result.
    resourceLocation?: NullableOption<string>;
    // The current status of the operation. Possible values are: notStarted, running, succeeded, failed.
    status?: WorkbookOperationStatus;
}
export interface WorkbookTable extends Entity {
    // Indicates whether the first column contains special formatting.
    highlightFirstColumn?: boolean;
    // Indicates whether the last column contains special formatting.
    highlightLastColumn?: boolean;
    /**
     * 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.
     */
    legacyId?: NullableOption<string>;
    // Name of the table.
    name?: NullableOption<string>;
    /**
     * Indicates whether the columns show banded formatting in which odd columns are highlighted differently from even ones to
     * make reading the table easier.
     */
    showBandedColumns?: boolean;
    /**
     * Indicates whether the rows show banded formatting in which odd rows are highlighted differently from even ones to make
     * reading the table easier.
     */
    showBandedRows?: boolean;
    /**
     * 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.
     */
    showFilterButton?: boolean;
    // Indicates whether the header row is visible or not. This value can be set to show or remove the header row.
    showHeaders?: boolean;
    // Indicates whether the total row is visible or not. This value can be set to show or remove the total row.
    showTotals?: boolean;
    /**
     * Constant value that represents the Table style. 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.
     */
    style?: NullableOption<string>;
    // Represents a collection of all the columns in the table. Read-only.
    columns?: NullableOption<WorkbookTableColumn[]>;
    // Represents a collection of all the rows in the table. Read-only.
    rows?: NullableOption<WorkbookTableRow[]>;
    // Represents the sorting for the table. Read-only.
    sort?: NullableOption<WorkbookTableSort>;
    // The worksheet containing the current table. Read-only.
    worksheet?: NullableOption<WorkbookWorksheet>;
}
export interface WorkbookWorksheet extends Entity {
    // The display name of the worksheet.
    name?: NullableOption<string>;
    // The zero-based position of the worksheet within the workbook.
    position?: number;
    // The Visibility of the worksheet. The possible values are: Visible, Hidden, VeryHidden.
    visibility?: string;
    // Returns collection of charts that are part of the worksheet. Read-only.
    charts?: NullableOption<WorkbookChart[]>;
    // Returns collection of names that are associated with the worksheet. Read-only.
    names?: NullableOption<WorkbookNamedItem[]>;
    // Collection of PivotTables that are part of the worksheet.
    pivotTables?: NullableOption<WorkbookPivotTable[]>;
    // Returns sheet protection object for a worksheet. Read-only.
    protection?: NullableOption<WorkbookWorksheetProtection>;
    // Collection of tables that are part of the worksheet. Read-only.
    tables?: NullableOption<WorkbookTable[]>;
}
export interface WorkbookChart extends Entity {
    // Represents the height, in points, of the chart object.
    height?: number;
    // The distance, in points, from the left side of the chart to the worksheet origin.
    left?: number;
    // Represents the name of a chart object.
    name?: NullableOption<string>;
    /**
     * 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).
     */
    top?: number;
    // Represents the width, in points, of the chart object.
    width?: number;
    // Represents chart axes. Read-only.
    axes?: NullableOption<WorkbookChartAxes>;
    // Represents the datalabels on the chart. Read-only.
    dataLabels?: NullableOption<WorkbookChartDataLabels>;
    // Encapsulates the format properties for the chart area. Read-only.
    format?: NullableOption<WorkbookChartAreaFormat>;
    // Represents the legend for the chart. Read-only.
    legend?: NullableOption<WorkbookChartLegend>;
    // Represents either a single series or collection of series in the chart. Read-only.
    series?: NullableOption<WorkbookChartSeries[]>;
    /**
     * Represents the title of the specified chart, including the text, visibility, position and formating of the title.
     * Read-only.
     */
    title?: NullableOption<WorkbookChartTitle>;
    // The worksheet containing the current chart. Read-only.
    worksheet?: NullableOption<WorkbookWorksheet>;
}
export interface WorkbookChartAxes extends Entity {
    // Represents the category axis in a chart. Read-only.
    categoryAxis?: NullableOption<WorkbookChartAxis>;
    // Represents the series axis of a 3-dimensional chart. Read-only.
    seriesAxis?: NullableOption<WorkbookChartAxis>;
    // Represents the value axis in an axis. Read-only.
    valueAxis?: NullableOption<WorkbookChartAxis>;
}
export interface WorkbookChartDataLabels extends Entity {
    /**
     * 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.
     */
    position?: NullableOption<string>;
    // String representing the separator used for the data labels on a chart.
    separator?: NullableOption<string>;
    // Boolean value representing if the data label bubble size is visible or not.
    showBubbleSize?: NullableOption<boolean>;
    // Boolean value representing if the data label category name is visible or not.
    showCategoryName?: NullableOption<boolean>;
    // Boolean value representing if the data label legend key is visible or not.
    showLegendKey?: NullableOption<boolean>;
    // Boolean value representing if the data label percentage is visible or not.
    showPercentage?: NullableOption<boolean>;
    // Boolean value representing if the data label series name is visible or not.
    showSeriesName?: NullableOption<boolean>;
    // Boolean value representing if the data label value is visible or not.
    showValue?: NullableOption<boolean>;
    // Represents the format of chart data labels, which includes fill and font formatting. Read-only.
    format?: NullableOption<WorkbookChartDataLabelFormat>;
}
export interface WorkbookChartAreaFormat extends Entity {
    // Represents the fill format of an object, which includes background formatting information. Read-only.
    fill?: NullableOption<WorkbookChartFill>;
    // Represents the font attributes (font name, font size, color, etc.) for the current object. Read-only.
    font?: NullableOption<WorkbookChartFont>;
}
export interface WorkbookChartLegend extends Entity {
    // Boolean value for whether the chart legend should overlap with the main body of the chart.
    overlay?: NullableOption<boolean>;
    // Represents the position of the legend on the chart. The possible values are: Top, Bottom, Left, Right, Corner, Custom.
    position?: NullableOption<string>;
    // A boolean value the represents the visibility of a ChartLegend object.
    visible?: boolean;
    // Represents the formatting of a chart legend, which includes fill and font formatting. Read-only.
    format?: NullableOption<WorkbookChartLegendFormat>;
}
export interface WorkbookChartSeries extends Entity {
    // Represents the name of a series in a chart.
    name?: NullableOption<string>;
    // Represents the formatting of a chart series, which includes fill and line formatting. Read-only.
    format?: NullableOption<WorkbookChartSeriesFormat>;
    // Represents a collection of all points in the series. Read-only.
    points?: NullableOption<WorkbookChartPoint[]>;
}
export interface WorkbookChartTitle extends Entity {
    // Boolean value representing if the chart title will overlay the chart or not.
    overlay?: NullableOption<boolean>;
    // Represents the title text of a chart.
    text?: NullableOption<string>;
    // A boolean value the represents the visibility of a chart title object.
    visible?: boolean;
    // Represents the formatting of a chart title, which includes fill and font formatting. Read-only.
    format?: NullableOption<WorkbookChartTitleFormat>;
}
// tslint:disable-next-line: no-empty-interface
export interface WorkbookChartFill extends Entity {}
export interface WorkbookChartFont extends Entity {
    // Represents the bold status of font.
    bold?: NullableOption<boolean>;
    // HTML color code representation of the text color. E.g. #FF0000 represents Red.
    color?: NullableOption<string>;
    // Represents the italic status of the font.
    italic?: NullableOption<boolean>;
    // Font name (e.g. 'Calibri')
    name?: NullableOption<string>;
    // Size of the font (e.g. 11)
    size?: NullableOption<number>;
    // Type of underline applied to the font. The possible values are: None, Single.
    underline?: NullableOption<string>;
}
export interface WorkbookChartAxis extends Entity {
    /**
     * Represents the interval between two major tick marks. Can be set to a numeric value or an empty string. The returned
     * value is always a number.
     */
    majorUnit?: NullableOption<any>;
    /**
     * Represents the maximum value on the value axis. Can be set to a numeric value or an empty string (for automatic axis
     * values). The returned value is always a number.
     */
    maximum?: NullableOption<any>;
    /**
     * Represents the minimum value on the value axis. Can be set to a numeric value or an empty string (for automatic axis
     * values). The returned value is always a number.
     */
    minimum?: NullableOption<any>;
    /**
     * Represents the interval between two minor tick marks. 'Can be set to a numeric value or an empty string (for automatic
     * axis values). The returned value is always a number.
     */
    minorUnit?: NullableOption<any>;
    // Represents the formatting of a chart object, which includes line and font formatting. Read-only.
    format?: NullableOption<WorkbookChartAxisFormat>;
    // Returns a gridlines object that represents the major gridlines for the specified axis. Read-only.
    majorGridlines?: NullableOption<WorkbookChartGridlines>;
    // Returns a Gridlines object that represents the minor gridlines for the specified axis. Read-only.
    minorGridlines?: NullableOption<WorkbookChartGridlines>;
    // Represents the axis title. Read-only.
    title?: NullableOption<WorkbookChartAxisTitle>;
}
export interface WorkbookChartAxisFormat extends Entity {
    // Represents the font attributes (font name, font size, color, etc.) for a chart axis element. Read-only.
    font?: NullableOption<WorkbookChartFont>;
    // Represents chart line formatting. Read-only.
    line?: NullableOption<WorkbookChartLineFormat>;
}
export interface WorkbookChartGridlines extends Entity {
    // Boolean value representing if the axis gridlines are visible or not.
    visible?: boolean;
    // Represents the formatting of chart gridlines. Read-only.
    format?: NullableOption<WorkbookChartGridlinesFormat>;
}
export interface WorkbookChartAxisTitle extends Entity {
    // Represents the axis title.
    text?: NullableOption<string>;
    // A boolean that specifies the visibility of an axis title.
    visible?: boolean;
    // Represents the formatting of chart axis title. Read-only.
    format?: NullableOption<WorkbookChartAxisTitleFormat>;
}
export interface WorkbookChartLineFormat extends Entity {
    // HTML color code representing the color of lines in the chart.
    color?: NullableOption<string>;
}
export interface WorkbookChartAxisTitleFormat extends Entity {
    // Represents the font attributes, such as font name, font size, color, etc. of chart axis title object. Read-only.
    font?: NullableOption<WorkbookChartFont>;
}
export interface WorkbookChartDataLabelFormat extends Entity {
    // Represents the fill format of the current chart data label. Read-only.
    fill?: NullableOption<WorkbookChartFill>;
    // Represents the font attributes (font name, font size, color, etc.) for a chart data label. Read-only.
    font?: NullableOption<WorkbookChartFont>;
}
export interface WorkbookChartGridlinesFormat extends Entity {
    // Represents chart line formatting. Read-only.
    line?: NullableOption<WorkbookChartLineFormat>;
}
export interface WorkbookChartLegendFormat extends Entity {
    // Represents the fill format of an object, which includes background formating information. Read-only.
    fill?: NullableOption<WorkbookChartFill>;
    // Represents the font attributes such as font name, font size, color, etc. of a chart legend. Read-only.
    font?: NullableOption<WorkbookChartFont>;
}
export interface WorkbookChartPoint extends Entity {
    // Returns the value of a chart point. Read-only.
    value?: NullableOption<any>;
    // Encapsulates the format properties chart point. Read-only.
    format?: NullableOption<WorkbookChartPointFormat>;
}
export interface WorkbookChartPointFormat extends Entity {
    // Represents the fill format of a chart, which includes background formating information. Read-only.
    fill?: NullableOption<WorkbookChartFill>;
}
export interface WorkbookChartSeriesFormat extends Entity {
    // Represents the fill format of a chart series, which includes background formating information. Read-only.
    fill?: NullableOption<WorkbookChartFill>;
    // Represents line formatting. Read-only.
    line?: NullableOption<WorkbookChartLineFormat>;
}
export interface WorkbookChartTitleFormat extends Entity {
    // Represents the fill format of an object, which includes background formatting information. Read-only.
    fill?: NullableOption<WorkbookChartFill>;
    // Represents the font attributes (font name, font size, color, etc.) for the current object. Read-only.
    font?: NullableOption<WorkbookChartFont>;
}
export interface WorkbookCommentReply extends Entity {
    // The content of replied comment.
    content?: NullableOption<string>;
    // Indicates the type for the replied comment.
    contentType?: string;
}
export interface WorkbookFilter extends Entity {
    // The currently applied filter on the given column. Read-only.
    criteria?: NullableOption<WorkbookFilterCriteria>;
}
export interface WorkbookFormatProtection extends Entity {
    /**
     * Indicates if Excel hides the formula for the cells in the range. A null value indicates that the entire range doesn't
     * have uniform formula hidden setting.
     */
    formulaHidden?: NullableOption<boolean>;
    /**
     * Indicates if Excel locks the cells in the object. A null value indicates that the entire range doesn't have uniform
     * lock setting.
     */
    locked?: NullableOption<boolean>;
}
export interface WorkbookFunctionResult extends Entity {
    error?: NullableOption<string>;
    value?: NullableOption<any>;
}
export interface WorkbookPivotTable extends Entity {
    // Name of the PivotTable.
    name?: NullableOption<string>;
    // The worksheet containing the current PivotTable. Read-only.
    worksheet?: NullableOption<WorkbookWorksheet>;
}
export interface WorkbookRange extends Entity {
    /**
     * Represents the range reference in A1-style. Address value will contain the Sheet reference (e.g. Sheet1!A1:B4).
     * Read-only.
     */
    address?: NullableOption<string>;
    // Represents range reference for the specified range in the language of the user. Read-only.
    addressLocal?: NullableOption<string>;
    // Number of cells in the range. Read-only.
    cellCount?: number;
    // Represents the total number of columns in the range. Read-only.
    columnCount?: number;
    // Represents if all columns of the current range are hidden.
    columnHidden?: NullableOption<boolean>;
    // Represents the column number of the first cell in the range. Zero-indexed. Read-only.
    columnIndex?: number;
    // Represents the formula in A1-style notation.
    formulas?: NullableOption<any>;
    /**
     * Represents the formula in A1-style notation, in the user's language and number-formatting locale. For example, the
     * English '=SUM(A1, 1.5)' formula would become '=SUMME(A1; 1,5)' in German.
     */
    formulasLocal?: NullableOption<any>;
    // Represents the formula in R1C1-style notation.
    formulasR1C1?: NullableOption<any>;
    // Represents if all cells of the current range are hidden. Read-only.
    hidden?: NullableOption<boolean>;
    // Represents Excel's number format code for the given cell.
    numberFormat?: NullableOption<any>;
    // Returns the total number of rows in the range. Read-only.
    rowCount?: number;
    // Represents if all rows of the current range are hidden.
    rowHidden?: NullableOption<boolean>;
    // Returns the row number of the first cell in the range. Zero-indexed. Read-only.
    rowIndex?: number;
    /**
     * Text values of the specified range. The Text value will not depend on the cell width. The # sign substitution that
     * happens in Excel UI will not affect the text value returned by the API. Read-only.
     */
    text?: NullableOption<any>;
    /**
     * Represents the raw values of the specified range. The data returned could be of type string, number, or a boolean. Cell
     * that contain an error will return the error string.
     */
    values?: NullableOption<any>;
    /**
     * Represents the type of data of each cell. Possible values are: Unknown, Empty, String, Integer, Double, Boolean, Error.
     * Read-only.
     */
    valueTypes?: NullableOption<any>;
    // Returns a format object, encapsulating the range's font, fill, borders, alignment, and other properties. Read-only.
    format?: NullableOption<WorkbookRangeFormat>;
    // The worksheet containing the current range. Read-only.
    sort?: NullableOption<WorkbookRangeSort>;
    // The worksheet containing the current range. Read-only.
    worksheet?: NullableOption<WorkbookWorksheet>;
}
export interface WorkbookRangeFormat extends Entity {
    // Gets or sets the width of all colums within the range. If the column widths are not uniform, null will be returned.
    columnWidth?: NullableOption<number>;
    /**
     * Represents the horizontal alignment for the specified object. Possible values are: General, Left, Center, Right, Fill,
     * Justify, CenterAcrossSelection, Distributed.
     */
    horizontalAlignment?: NullableOption<string>;
    // Gets or sets the height of all rows in the range. If the row heights are not uniform null will be returned.
    rowHeight?: NullableOption<number>;
    /**
     * Represents the vertical alignment for the specified object. Possible values are: Top, Center, Bottom, Justify,
     * Distributed.
     */
    verticalAlignment?: NullableOption<string>;
    /**
     * Indicates if Excel wraps the text in the object. A null value indicates that the entire range doesn't have uniform wrap
     * setting
     */
    wrapText?: NullableOption<boolean>;
    // Collection of border objects that apply to the overall range selected Read-only.
    borders?: NullableOption<WorkbookRangeBorder[]>;
    // Returns the fill object defined on the overall range. Read-only.
    fill?: NullableOption<WorkbookRangeFill>;
    // Returns the font object defined on the overall range selected Read-only.
    font?: NullableOption<WorkbookRangeFont>;
    // Returns the format protection object for a range. Read-only.
    protection?: NullableOption<WorkbookFormatProtection>;
}
// tslint:disable-next-line: no-empty-interface
export interface WorkbookRangeSort extends Entity {}
export interface WorkbookRangeBorder extends Entity {
    /**
     * HTML color code representing the color of the border line, of the form #RRGGBB (e.g. 'FFA500') or as a named HTML color
     * (e.g. 'orange').
     */
    color?: NullableOption<string>;
    /**
     * Constant value that indicates the specific side of the border. Possible values are: EdgeTop, EdgeBottom, EdgeLeft,
     * EdgeRight, InsideVertical, InsideHorizontal, DiagonalDown, DiagonalUp. Read-only.
     */
    sideIndex?: NullableOption<string>;
    /**
     * One of the constants of line style specifying the line style for the border. Possible values are: None, Continuous,
     * Dash, DashDot, DashDotDot, Dot, Double, SlantDashDot.
     */
    style?: NullableOption<string>;
    // Specifies the weight of the border around a range. Possible values are: Hairline, Thin, Medium, Thick.
    weight?: NullableOption<string>;
}
export interface WorkbookRangeFill extends Entity {
    /**
     * HTML color code representing the color of the border line, of the form #RRGGBB (e.g. 'FFA500') or as a named HTML color
     * (e.g. 'orange')
     */
    color?: NullableOption<string>;
}
export interface WorkbookRangeFont extends Entity {
    // Represents the bold status of font.
    bold?: NullableOption<boolean>;
    // HTML color code representation of the text color. E.g. #FF0000 represents Red.
    color?: NullableOption<string>;
    // Represents the italic status of the font.
    italic?: NullableOption<boolean>;
    // Font name (e.g. 'Calibri')
    name?: NullableOption<string>;
    // Font size.
    size?: NullableOption<number>;
    // Type of underline applied to the font. Possible values are: None, Single, Double, SingleAccountant, DoubleAccountant.
    underline?: NullableOption<string>;
}
export interface WorkbookRangeView extends Entity {
    // Represents the cell addresses
    cellAddresses?: NullableOption<any>;
    // Returns the number of visible columns. Read-only.
    columnCount?: number;
    // Represents the formula in A1-style notation.
    formulas?: NullableOption<any>;
    /**
     * Represents the formula in A1-style notation, in the user's language and number-formatting locale. For example, the
     * English '=SUM(A1, 1.5)' formula would become '=SUMME(A1; 1,5)' in German.
     */
    formulasLocal?: NullableOption<any>;
    // Represents the formula in R1C1-style notation.
    formulasR1C1?: NullableOption<any>;
    // Index of the range.
    index?: number;
    // Represents Excel's number format code for the given cell. Read-only.
    numberFormat?: NullableOption<any>;
    // Returns the number of visible rows. Read-only.
    rowCount?: number;
    /**
     * Text values of the specified range. The Text value will not depend on the cell width. The # sign substitution that
     * happens in Excel UI will not affect the text value returned by the API. Read-only.
     */
    text?: NullableOption<any>;
    /**
     * Represents the raw values of the specified range view. The data returned could be of type string, number, or a boolean.
     * Cell that contain an error will return the error string.
     */
    values?: NullableOption<any>;
    /**
     * Represents the type of data of each cell. Read-only. Possible values are: Unknown, Empty, String, Integer, Double,
     * Boolean, Error.
     */
    valueTypes?: NullableOption<any>;
    // Represents a collection of range views associated with the range. Read-only. Read-only.
    rows?: NullableOption<WorkbookRangeView[]>;
}
export interface WorkbookTableColumn extends Entity {
    // Returns the index number of the column within the columns collection of the table. Zero-indexed. Read-only.
    index?: number;
    // Returns the name of the table column.
    name?: NullableOption<string>;
    /**
     * Represents the raw values of the specified range. The data returned could be of type string, number, or a boolean. Cell
     * that contain an error will return the error string.
     */
    values?: NullableOption<any>;
    // Retrieve the filter applied to the column. Read-only.
    filter?: NullableOption<WorkbookFilter>;
}
export interface WorkbookTableRow extends Entity {
    // Returns the index number of the row within the rows collection of the table. Zero-indexed. Read-only.
    index?: number;
    /**
     * Represents the raw values of the specified range. The data returned could be of type string, number, or a boolean. Cell
     * that contain an error will return the error string.
     */
    values?: NullableOption<any>;
}
export interface WorkbookTableSort extends Entity {
    // Represents the current conditions used to last sort the table. Read-only.
    fields?: NullableOption<WorkbookSortField[]>;
    // Represents whether the casing impacted the last sort of the table. Read-only.
    matchCase?: boolean;
    /**
     * Represents Chinese character ordering method last used to sort the table. Possible values are: PinYin, StrokeCount.
     * Read-only.
     */
    method?: string;
}
export interface WorkbookWorksheetProtection extends Entity {
    // Sheet protection options. Read-only.
    options?: NullableOption<WorkbookWorksheetProtectionOptions>;
    // Indicates if the worksheet is protected. Read-only.
    protected?: boolean;
}
export interface Place extends Entity {
    // The street address of the place.
    address?: NullableOption<PhysicalAddress>;
    // The name associated with the place.
    displayName?: string;
    // Specifies the place location in latitude, longitude and (optionally) altitude coordinates.
    geoCoordinates?: NullableOption<OutlookGeoCoordinates>;
    // The phone number of the place.
    phone?: NullableOption<string>;
}
export interface Room extends Place {
    // Specifies the name of the audio device in the room.
    audioDeviceName?: NullableOption<string>;
    // Type of room. Possible values are standard, and reserved.
    bookingType?: NullableOption<BookingType>;
    // Specifies the building name or building number that the room is in.
    building?: NullableOption<string>;
    // Specifies the capacity of the room.
    capacity?: NullableOption<number>;
    // Specifies the name of the display device in the room.
    displayDeviceName?: NullableOption<string>;
    // Email address of the room.
    emailAddress?: NullableOption<string>;
    // Specifies a descriptive label for the floor, for example, P.
    floorLabel?: NullableOption<string>;
    // Specifies the floor number that the room is on.
    floorNumber?: NullableOption<number>;
    // Specifies whether the room is wheelchair accessible.
    isWheelChairAccessible?: NullableOption<boolean>;
    // Specifies a descriptive label for the room, for example, a number or name.
    label?: NullableOption<string>;
    // Specifies a nickname for the room, for example, 'conf room'.
    nickname?: string;
    // Specifies additional features of the room, for example, details like the type of view or furniture type.
    tags?: NullableOption<string[]>;
    // Specifies the name of the video device in the room.
    videoDeviceName?: NullableOption<string>;
}
export interface RoomList extends Place {
    // The email address of the room list.
    emailAddress?: NullableOption<string>;
    // Read-only. Nullable.
    rooms?: NullableOption<Room[]>;
}
export interface Attachment extends Entity {
    // The MIME type.
    contentType?: NullableOption<string>;
    // true if the attachment is an inline attachment; otherwise, false.
    isInline?: boolean;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    lastModifiedDateTime?: NullableOption<string>;
    // The display name of the attachment. This does not need to be the actual file name.
    name?: NullableOption<string>;
    // The length of the attachment in bytes.
    size?: number;
}
export interface CalendarPermission extends Entity {
    /**
     * List of allowed sharing or delegating permission levels for the calendar. Possible values are: none, freeBusyRead,
     * limitedRead, read, write, delegateWithoutPrivateEventAccess, delegateWithPrivateEventAccess, custom.
     */
    allowedRoles?: NullableOption<CalendarRoleType[]>;
    /**
     * Represents a sharee or delegate who has access to the calendar. For the 'My Organization' sharee, the address property
     * is null. Read-only.
     */
    emailAddress?: NullableOption<EmailAddress>;
    // True if the user in context (sharee or delegate) is inside the same organization as the calendar owner.
    isInsideOrganization?: NullableOption<boolean>;
    /**
     * 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.
     */
    isRemovable?: NullableOption<boolean>;
    // Current permission level of the calendar sharee or delegate.
    role?: NullableOption<CalendarRoleType>;
}
export interface MultiValueLegacyExtendedProperty extends Entity {
    // A collection of property values.
    value?: NullableOption<string[]>;
}
export interface SingleValueLegacyExtendedProperty extends Entity {
    // A property value.
    value?: NullableOption<string>;
}
export interface CalendarSharingMessage extends Message {
    canAccept?: NullableOption<boolean>;
    sharingMessageAction?: NullableOption<CalendarSharingMessageAction>;
    sharingMessageActions?: NullableOption<CalendarSharingMessageAction[]>;
    suggestedCalendarName?: NullableOption<string>;
}
export interface Post extends OutlookItem {
    // The contents of the post. This is a default property. This property can be null.
    body?: NullableOption<ItemBody>;
    // Unique ID of the conversation. Read-only.
    conversationId?: NullableOption<string>;
    // Unique ID of the conversation thread. Read-only.
    conversationThreadId?: NullableOption<string>;
    /**
     * Used in delegate access scenarios. Indicates who posted the message on behalf of another user. This is a default
     * property.
     */
    from?: Recipient;
    // Indicates whether the post has at least one attachment. This is a default property.
    hasAttachments?: boolean;
    // The importance of a group post: low, normal, high.
    importance?: NullableOption<Importance>;
    // Conversation participants that were added to the thread as part of this post.
    newParticipants?: Recipient[];
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    receivedDateTime?: string;
    /**
     * Contains the address of the sender. The value of Sender is assumed to be the address of the authenticated user in the
     * case when Sender is not specified. This is a default property.
     */
    sender?: NullableOption<Recipient>;
    /**
     * The collection of fileAttachment, itemAttachment, and referenceAttachment attachments for the post. Read-only.
     * Nullable.
     */
    attachments?: NullableOption<Attachment[]>;
    // The collection of open extensions defined for the post. Read-only. Nullable.
    extensions?: NullableOption<Extension[]>;
    // The earlier post that this post is replying to in the conversationThread. Read-only.
    inReplyTo?: NullableOption<Post>;
    mentions?: NullableOption<Mention[]>;
    // The collection of multi-value extended properties defined for the post. Read-only. Nullable.
    multiValueExtendedProperties?: NullableOption<MultiValueLegacyExtendedProperty[]>;
    // The collection of single-value extended properties defined for the post. Read-only. Nullable.
    singleValueExtendedProperties?: NullableOption<SingleValueLegacyExtendedProperty[]>;
}
export interface EventMessage extends Message {
    // The end time of the requested meeting.
    endDateTime?: NullableOption<DateTimeTimeZone>;
    isAllDay?: NullableOption<boolean>;
    // True if this meeting request is accessible to a delegate, false otherwise. Default is false.
    isDelegated?: NullableOption<boolean>;
    isOutOfDate?: NullableOption<boolean>;
    location?: NullableOption<Location>;
    /**
     * The type of event message: none, meetingRequest, meetingCancelled, meetingAccepted, meetingTenativelyAccepted,
     * meetingDeclined.
     */
    meetingMessageType?: NullableOption<MeetingMessageType>;
    recurrence?: NullableOption<PatternedRecurrence>;
    startDateTime?: NullableOption<DateTimeTimeZone>;
    type?: NullableOption<EventType>;
    /**
     * The event associated with the event message. The assumption for attendees or room resources is that the Calendar
     * Attendant is set to automatically update the calendar with an event when meeting request event messages arrive.
     * Navigation property. Read-only.
     */
    event?: NullableOption<Event>;
}
export interface EventMessageRequest extends EventMessage {
    /**
     * True if the meeting organizer allows invitees to propose a new time when responding, false otherwise. Optional. Default
     * is true.
     */
    allowNewTimeProposals?: NullableOption<boolean>;
    // If the meeting update changes the meeting end time, this property specifies the previous meeting end time.
    previousEndDateTime?: NullableOption<DateTimeTimeZone>;
    // If the meeting update changes the meeting location, this property specifies the previous meeting location.
    previousLocation?: NullableOption<Location>;
    // If the meeting update changes the meeting start time, this property specifies the previous meeting start time.
    previousStartDateTime?: NullableOption<DateTimeTimeZone>;
    // Set to true if the sender would like the invitee to send a response to the requested meeting.
    responseRequested?: NullableOption<boolean>;
}
export interface EventMessageResponse extends EventMessage {
    proposedNewTime?: NullableOption<TimeSlot>;
    responseType?: NullableOption<ResponseType>;
}
export interface FileAttachment extends Attachment {
    // The base64-encoded contents of the file.
    contentBytes?: NullableOption<number>;
    // The ID of the attachment in the Exchange store.
    contentId?: NullableOption<string>;
    // Do not use this property as it is not supported.
    contentLocation?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface InferenceClassificationOverride extends Entity {
    /**
     * Specifies how incoming messages from a specific sender should always be classified as. Possible values are: focused,
     * other.
     */
    classifyAs?: NullableOption<InferenceClassificationType>;
    // The email address information of the sender for whom the override is created.
    senderEmailAddress?: NullableOption<EmailAddress>;
}
// tslint:disable-next-line: interface-name
export interface ItemAttachment extends Attachment {
    // The attached contact, message or event. Navigation property.
    item?: NullableOption<OutlookItem>;
}
export interface MessageRule extends Entity {
    // Actions to be taken on a message when the corresponding conditions are fulfilled.
    actions?: NullableOption<MessageRuleActions>;
    // Conditions that when fulfilled, will trigger the corresponding actions for that rule.
    conditions?: NullableOption<MessageRulePredicates>;
    // The display name of the rule.
    displayName?: NullableOption<string>;
    // Exception conditions for the rule.
    exceptions?: NullableOption<MessageRulePredicates>;
    // Indicates whether the rule is in an error condition. Read-only.
    hasError?: NullableOption<boolean>;
    // Indicates whether the rule is enabled to be applied to messages.
    isEnabled?: NullableOption<boolean>;
    // Indicates if the rule is read-only and cannot be modified or deleted by the rules REST API.
    isReadOnly?: NullableOption<boolean>;
    // Indicates the order in which the rule is executed, among other rules.
    sequence?: NullableOption<number>;
}
export interface UserConfiguration extends Entity {
    binaryData?: NullableOption<number>;
}
export interface MailSearchFolder extends MailFolder {
    // The OData query to filter the messages.
    filterQuery?: NullableOption<string>;
    /**
     * Indicates how the mailbox folder hierarchy should be traversed in the search. true means that a deep search should be
     * done to include child folders in the hierarchy of each folder explicitly specified in sourceFolderIds. false means a
     * shallow search of only each of the folders explicitly specified in sourceFolderIds.
     */
    includeNestedFolders?: NullableOption<boolean>;
    // Indicates whether a search folder is editable using REST APIs.
    isSupported?: NullableOption<boolean>;
    // The mailbox folders that should be mined.
    sourceFolderIds?: NullableOption<string[]>;
}
export interface Mention extends Entity {
    // The name of the application where the mention is created. Optional. Not used and defaulted as null for message.
    application?: NullableOption<string>;
    /**
     * A unique identifier that represents a parent of the resource instance. Optional. Not used and defaulted as null for
     * message.
     */
    clientReference?: NullableOption<string>;
    // The email information of the user who made the mention.
    createdBy?: NullableOption<EmailAddress>;
    // The date and time that the mention is created on the client.
    createdDateTime?: NullableOption<string>;
    /**
     * A deep web link to the context of the mention in the resource instance. Optional. Not used and defaulted as null for
     * message.
     */
    deepLink?: NullableOption<string>;
    // The email information of the mentioned person. Required.
    mentioned?: EmailAddress;
    /**
     * Optional. Not used and defaulted as null for message. To get the mentions in a message, see the bodyPreview property of
     * the message instead.
     */
    mentionText?: NullableOption<string>;
    // The date and time that the mention is created on the server. Optional. Not used and defaulted as null for message.
    serverCreatedDateTime?: NullableOption<string>;
}
export interface Note extends OutlookItem {
    body?: NullableOption<ItemBody>;
    hasAttachments?: NullableOption<boolean>;
    isDeleted?: NullableOption<boolean>;
    subject?: NullableOption<string>;
    attachments?: NullableOption<Attachment[]>;
    extensions?: NullableOption<Extension[]>;
    multiValueExtendedProperties?: NullableOption<MultiValueLegacyExtendedProperty[]>;
    singleValueExtendedProperties?: NullableOption<SingleValueLegacyExtendedProperty[]>;
}
export interface OpenTypeExtension extends Extension {
    // A unique text identifier for an open type data extension. Required.
    extensionName?: string;
}
export interface OutlookCategory extends Entity {
    /**
     * A pre-set color constant that characterizes a category, and that is mapped to one of 25 predefined colors. See the note
     * below.
     */
    color?: NullableOption<CategoryColor>;
    /**
     * A unique name that identifies a category in the user's mailbox. After a category is created, the name cannot be
     * changed. Read-only.
     */
    displayName?: NullableOption<string>;
}
export interface OutlookTask extends OutlookItem {
    // The name of the person who has been assigned the task in Outlook. Read-only.
    assignedTo?: NullableOption<string>;
    // The task body that typically contains information about the task. Note that only HTML type is supported.
    body?: NullableOption<ItemBody>;
    // The date in the specified time zone that the task was finished.
    completedDateTime?: NullableOption<DateTimeTimeZone>;
    // The date in the specified time zone that the task is to be finished.
    dueDateTime?: NullableOption<DateTimeTimeZone>;
    // Set to true if the task has attachments.
    hasAttachments?: NullableOption<boolean>;
    importance?: NullableOption<Importance>;
    isReminderOn?: NullableOption<boolean>;
    owner?: NullableOption<string>;
    parentFolderId?: NullableOption<string>;
    recurrence?: NullableOption<PatternedRecurrence>;
    reminderDateTime?: NullableOption<DateTimeTimeZone>;
    sensitivity?: NullableOption<Sensitivity>;
    startDateTime?: NullableOption<DateTimeTimeZone>;
    status?: NullableOption<TaskStatus>;
    subject?: NullableOption<string>;
    /**
     * The collection of fileAttachment, itemAttachment, and referenceAttachment attachments for the task. Read-only.
     * Nullable.
     */
    attachments?: NullableOption<Attachment[]>;
    // The collection of multi-value extended properties defined for the task. Read-only. Nullable.
    multiValueExtendedProperties?: NullableOption<MultiValueLegacyExtendedProperty[]>;
    // The collection of single-value extended properties defined for the task. Read-only. Nullable.
    singleValueExtendedProperties?: NullableOption<SingleValueLegacyExtendedProperty[]>;
}
export interface OutlookTaskFolder extends Entity {
    // The version of the task folder.
    changeKey?: NullableOption<string>;
    // True if the folder is the default task folder.
    isDefaultFolder?: NullableOption<boolean>;
    // The name of the task folder.
    name?: NullableOption<string>;
    // The unique GUID identifier for the task folder's parent group.
    parentGroupKey?: NullableOption<string>;
    // The collection of multi-value extended properties defined for the task folder. Read-only. Nullable.
    multiValueExtendedProperties?: NullableOption<MultiValueLegacyExtendedProperty[]>;
    // The collection of single-value extended properties defined for the task folder. Read-only. Nullable.
    singleValueExtendedProperties?: NullableOption<SingleValueLegacyExtendedProperty[]>;
    // The tasks in this task folder. Read-only. Nullable.
    tasks?: NullableOption<OutlookTask[]>;
}
export interface OutlookTaskGroup extends Entity {
    // The version of the task group.
    changeKey?: NullableOption<string>;
    // The unique GUID identifier for the task group.
    groupKey?: NullableOption<string>;
    // True if the task group is the default task group.
    isDefaultGroup?: NullableOption<boolean>;
    // The name of the task group.
    name?: NullableOption<string>;
    // The collection of task folders in the task group. Read-only. Nullable.
    taskFolders?: NullableOption<OutlookTaskFolder[]>;
}
export interface ReferenceAttachment extends Attachment {
    /**
     * Specifies whether the attachment is a link to a folder. Must set this to true if sourceUrl is a link to a folder.
     * Optional.
     */
    isFolder?: NullableOption<boolean>;
    /**
     * Specifies the permissions granted for the attachment by the type of provider in providerType. Possible values are:
     * other, view, edit, anonymousView, anonymousEdit, organizationView, organizationEdit. Optional.
     */
    permission?: NullableOption<ReferenceAttachmentPermission>;
    /**
     * Applies to only a reference attachment of an image - URL to get a preview image. Use thumbnailUrl and previewUrl only
     * when sourceUrl identifies an image file. Optional.
     */
    previewUrl?: NullableOption<string>;
    /**
     * The type of provider that supports an attachment of this contentType. Possible values are: other, oneDriveBusiness,
     * oneDriveConsumer, dropbox. Optional.
     */
    providerType?: NullableOption<ReferenceAttachmentProvider>;
    /**
     * URL to get the attachment content. If this is a URL to a folder, then for the folder to be displayed correctly in
     * Outlook or Outlook on the web, set isFolder to true. Required.
     */
    sourceUrl?: NullableOption<string>;
    /**
     * Applies to only a reference attachment of an image - URL to get a thumbnail image. Use thumbnailUrl and previewUrl only
     * when sourceUrl identifies an image file. Optional.
     */
    thumbnailUrl?: NullableOption<string>;
}
export interface ColumnLink extends Entity {
    // The name of the column in this content type.
    name?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface FieldValueSet extends Entity {}
// tslint:disable-next-line: interface-name
export interface ItemActivity extends Entity {
    // An item was accessed.
    access?: NullableOption<AccessAction>;
    // Details about when the activity took place. Read-only.
    activityDateTime?: NullableOption<string>;
    // Identity of who performed the action. Read-only.
    actor?: NullableOption<IdentitySet>;
    // Exposes the driveItem that was the target of this activity.
    driveItem?: NullableOption<DriveItem>;
}
// tslint:disable-next-line: interface-name
export interface ItemActivityStat extends Entity {
    // Statistics about the access actions in this interval. Read-only.
    access?: NullableOption<ItemActionStat>;
    // Statistics about the create actions in this interval. Read-only.
    create?: NullableOption<ItemActionStat>;
    // Statistics about the delete actions in this interval. Read-only.
    delete?: NullableOption<ItemActionStat>;
    // Statistics about the edit actions in this interval. Read-only.
    edit?: NullableOption<ItemActionStat>;
    // When the interval ends. Read-only.
    endDateTime?: NullableOption<string>;
    // Indicates that the statistics in this interval are based on incomplete data. Read-only.
    incompleteData?: NullableOption<IncompleteData>;
    // Indicates whether the item is 'trending.' Read-only.
    isTrending?: NullableOption<boolean>;
    // Statistics about the move actions in this interval. Read-only.
    move?: NullableOption<ItemActionStat>;
    // When the interval starts. Read-only.
    startDateTime?: NullableOption<string>;
    // Exposes the itemActivities represented in this itemActivityStat resource.
    activities?: NullableOption<ItemActivity[]>;
}
export interface ListItemVersion extends BaseItemVersion {
    // A collection of the fields and values for this version of the list item.
    fields?: NullableOption<FieldValueSet>;
}
export interface SharedDriveItem extends BaseItem {
    // Information about the owner of the shared item being referenced.
    owner?: NullableOption<IdentitySet>;
    // Used to access the underlying driveItem
    driveItem?: NullableOption<DriveItem>;
    // All driveItems contained in the sharing root. This collection cannot be enumerated.
    items?: NullableOption<DriveItem[]>;
    // Used to access the underlying list
    list?: NullableOption<List>;
    // Used to access the underlying listItem
    listItem?: NullableOption<ListItem>;
    // Used to access the permission representing the underlying sharing link
    permission?: NullableOption<Permission>;
    // Used to access the underlying driveItem. Deprecated -- use driveItem instead.
    root?: NullableOption<DriveItem>;
    // Used to access the underlying site
    site?: NullableOption<Site>;
}
export interface SchemaExtension extends Entity {
    // Description for the schema extension. Supports $filter (eq).
    description?: NullableOption<string>;
    /**
     * The appId of the application that is the owner of the schema extension. This property can be supplied on creation, to
     * set the owner. If not supplied, then the calling application's appId will be set as the owner. In either case, the
     * signed-in user must be the owner of the application. So, for example, if creating a new schema extension definition
     * using Graph Explorer, you must supply the owner property. Once set, this property is read-only and cannot be changed.
     * Supports $filter (eq).
     */
    owner?: string;
    // The collection of property names and types that make up the schema extension definition.
    properties?: ExtensionSchemaProperty[];
    /**
     * The lifecycle state of the schema extension. Possible states are InDevelopment, Available, and Deprecated.
     * Automatically set to InDevelopment on creation. Schema extensions provides more information on the possible state
     * transitions and behaviors. Supports $filter (eq).
     */
    status?: string;
    /**
     * Set of Microsoft Graph types (that can support extensions) that the schema extension can be applied to. Select from
     * administrativeUnit, contact, device, event, group, message, organization, post, or user.
     */
    targetTypes?: string[];
}
export interface Connector extends Entity {
    // The external IP address as detected by the the connector server. Read-only.
    externalIp?: string;
    // The machine name the connector is installed and running on.
    machineName?: string;
    // Indicates the status of the connector. Possible values are: active, inactive. Read-only.
    status?: ConnectorStatus;
    // The connectorGroup that the connector is a member of. Read-only.
    memberOf?: NullableOption<ConnectorGroup[]>;
}
export interface OnPremisesAgent extends Entity {
    // The external IP address as detected by the service for the agent machine. Read-only
    externalIp?: string;
    // The name of the machine that the aggent is running on. Read-only
    machineName?: string;
    // Possible values are: active, inactive.
    status?: AgentStatus;
    supportedPublishingTypes?: OnPremisesPublishingType[];
    // List of onPremisesAgentGroups that an onPremisesAgent is assigned to. Read-only. Nullable.
    agentGroups?: NullableOption<OnPremisesAgentGroup[]>;
}
export interface OnPremisesAgentGroup extends Entity {
    // Display name of the onPremisesAgentGroup.
    displayName?: string;
    /**
     * Indicates if the onPremisesAgentGroup is the default agent group. Only a single agent group can be the default
     * onPremisesAgentGroup and is set by the system.
     */
    isDefault?: boolean;
    // Possible values are: applicationProxy, exchangeOnline, authentication, provisioning, adAdministration.
    publishingType?: OnPremisesPublishingType;
    // List of onPremisesAgent that are assigned to an onPremisesAgentGroup. Read-only. Nullable.
    agents?: NullableOption<OnPremisesAgent[]>;
    // List of publishedResource that are assigned to an onPremisesAgentGroup. Read-only. Nullable.
    publishedResources?: NullableOption<PublishedResource[]>;
}
export interface PublishedResource extends Entity {
    // Display Name of the publishedResource.
    displayName?: NullableOption<string>;
    // Possible values are: applicationProxy, exchangeOnline, authentication, provisioning, adAdministration.
    publishingType?: OnPremisesPublishingType;
    // Name of the publishedResource.
    resourceName?: NullableOption<string>;
    // List of onPremisesAgentGroups that a publishedResource is assigned to. Read-only. Nullable.
    agentGroups?: NullableOption<OnPremisesAgentGroup[]>;
}
export interface OnPremisesPublishingProfile extends Entity {
    // Represents a hybridAgentUpdaterConfiguration object.
    hybridAgentUpdaterConfiguration?: NullableOption<HybridAgentUpdaterConfiguration>;
    // Represents if Azure AD Application Proxy is enabled for the tenant.
    isEnabled?: NullableOption<boolean>;
    // List of existing onPremisesAgentGroup objects. Read-only. Nullable.
    agentGroups?: NullableOption<OnPremisesAgentGroup[]>;
    // List of existing onPremisesAgent objects. Read-only. Nullable.
    agents?: NullableOption<OnPremisesAgent[]>;
    // List of existing connectorGroup objects for applications published through Application Proxy. Read-only. Nullable.
    connectorGroups?: NullableOption<ConnectorGroup[]>;
    // List of existing connector objects for applications published through Application Proxy. Read-only. Nullable.
    connectors?: NullableOption<Connector[]>;
    // List of existing publishedResource objects. Read-only. Nullable.
    publishedResources?: NullableOption<PublishedResource[]>;
}
export interface AttributeMappingFunctionSchema extends Entity {
    // Collection of function parameters.
    parameters?: NullableOption<AttributeMappingParameterSchema[]>;
}
export interface DirectoryDefinition extends Entity {
    /**
     * Read only value indicating what type of discovery the app supports. Possible values are: AttributeDataTypes,
     * AttributeNames, AttributeReadOnly, None, ReferenceAttributes, UnknownFutureValue.
     */
    discoverabilities?: DirectoryDefinitionDiscoverabilities;
    /**
     * Represents the discovery date and time using ISO 8601 format and is always in UTC time. For example, midnight UTC on
     * Jan 1, 2014 is 2014-01-01T00:00:00Z.
     */
    discoveryDateTime?: NullableOption<string>;
    // Name of the directory. Must be unique within the synchronization schema. Not nullable.
    name?: NullableOption<string>;
    // Collection of objects supported by the directory.
    objects?: NullableOption<ObjectDefinition[]>;
    readOnly?: boolean;
    // Read only value that indicates version discovered. null if discovery has not yet occurred.
    version?: NullableOption<string>;
}
export interface FilterOperatorSchema extends Entity {
    // Arity of the operator. Possible values are: Binary, Unary. The default is Binary.
    arity?: ScopeOperatorType;
    /**
     * Possible values are: All, Any. Applies only to multivalued attributes. All means that all values must satisfy the
     * condition. Any means that at least one value has to satisfy the condition. The default is All.
     */
    multivaluedComparisonType?: ScopeOperatorMultiValuedComparisonType;
    // Attribute types supported by the operator. Possible values are: Boolean, Binary, Reference, Integer, String.
    supportedAttributeTypes?: AttributeType[];
}
export interface SynchronizationJob extends Entity {
    // Schedule used to run the job. Read-only.
    schedule?: NullableOption<SynchronizationSchedule>;
    // Status of the job, which includes when the job was last run, current job state, and errors.
    status?: NullableOption<SynchronizationStatus>;
    // Settings associated with the job. Some settings are inherited from the template.
    synchronizationJobSettings?: NullableOption<KeyValuePair[]>;
    // Identifier of the synchronization template this job is based on.
    templateId?: NullableOption<string>;
    // The synchronization schema configured for the job.
    schema?: NullableOption<SynchronizationSchema>;
}
export interface SynchronizationTemplate extends Entity {
    // Identifier of the application this template belongs to.
    applicationId?: string;
    // true if this template is recommended to be the default for the application.
    default?: boolean;
    // Description of the template.
    description?: NullableOption<string>;
    /**
     * true if this template should appear in the collection of templates available for the application instance (service
     * principal).
     */
    discoverable?: boolean;
    /**
     * One of the well-known factory tags supported by the synchronization engine. The factoryTag tells the synchronization
     * engine which implementation to use when processing jobs based on this template.
     */
    factoryTag?: NullableOption<string>;
    // Additional extension properties. Unless mentioned explicitly, metadata values should not be changed.
    metadata?: NullableOption<MetadataEntry[]>;
    // Default synchronization schema for the jobs based on this template.
    schema?: NullableOption<SynchronizationSchema>;
}
export interface SynchronizationSchema extends Entity {
    // A collection of synchronization rules configured for the synchronizationJob or synchronizationTemplate.
    synchronizationRules?: NullableOption<SynchronizationRule[]>;
    // The version of the schema, updated automatically with every schema change.
    version?: NullableOption<string>;
    // Contains the collection of directories and all of their objects.
    directories?: NullableOption<DirectoryDefinition[]>;
}
export interface CloudCommunications extends Entity {
    calls?: NullableOption<Call[]>;
    callRecords?: NullableOption<CallRecords.CallRecord[]>;
    onlineMeetings?: NullableOption<OnlineMeeting[]>;
    presences?: NullableOption<Presence[]>;
}
export interface Call extends Entity {
    // The list of active modalities. Possible values are: unknown, audio, video, videoBasedScreenSharing, data. Read-only.
    activeModalities?: NullableOption<Modality[]>;
    // The participant that answered the call. Read-only.
    answeredBy?: NullableOption<ParticipantInfo>;
    // The callback URL on which callbacks will be delivered. Must be https.
    callbackUri?: string;
    /**
     * A unique identifier for all the participant calls in a conference or a unique identifier for two participant calls in a
     * P2P call. This needs to be copied over from Microsoft.Graph.Call.CallChainId.
     */
    callChainId?: NullableOption<string>;
    callOptions?: NullableOption<CallOptions>;
    // The routing information on how the call was retargeted. Read-only.
    callRoutes?: NullableOption<CallRoute[]>;
    // The chat information. Required information for meeting scenarios.
    chatInfo?: NullableOption<ChatInfo>;
    // The direction of the call. The possible value are incoming or outgoing. Read-only.
    direction?: NullableOption<CallDirection>;
    // The context associated with an incoming call. Read-only. Server generated.
    incomingContext?: NullableOption<IncomingContext>;
    // The media configuration. Required information for creating peer to peer calls or joining meetings.
    mediaConfig?: NullableOption<MediaConfig>;
    // Read-only. The call media state.
    mediaState?: NullableOption<CallMediaState>;
    // Contains the capabilities of a meeting. Read-only.
    meetingCapability?: NullableOption<MeetingCapability>;
    // The meeting information. Required information for meeting scenarios.
    meetingInfo?: NullableOption<MeetingInfo>;
    myParticipantId?: NullableOption<string>;
    requestedModalities?: NullableOption<Modality[]>;
    resultInfo?: NullableOption<ResultInfo>;
    ringingTimeoutInSeconds?: NullableOption<number>;
    routingPolicies?: NullableOption<RoutingPolicy[]>;
    source?: NullableOption<ParticipantInfo>;
    state?: NullableOption<CallState>;
    subject?: NullableOption<string>;
    targets?: NullableOption<InvitationParticipantInfo[]>;
    tenantId?: NullableOption<string>;
    terminationReason?: NullableOption<string>;
    toneInfo?: NullableOption<ToneInfo>;
    // The transcription information for the call. Read-only.
    transcription?: NullableOption<CallTranscriptionInfo>;
    // Read-only. Nullable.
    audioRoutingGroups?: NullableOption<AudioRoutingGroup[]>;
    // Read-only. Nullable.
    operations?: NullableOption<CommsOperation[]>;
    // Read-only. Nullable.
    participants?: NullableOption<Participant[]>;
}
export interface AccessReview extends Entity {
    // The business flow template identifier. Required on create. This value is case sensitive.
    businessFlowTemplateId?: string;
    // The user who created this review.
    createdBy?: NullableOption<UserIdentity>;
    // The description provided by the access review creator, to show to the reviewers.
    description?: NullableOption<string>;
    // The access review name. Required on create.
    displayName?: string;
    /**
     * The DateTime when the review is scheduled to end. This must be at least one day later than the start date. Required on
     * create.
     */
    endDateTime?: string;
    /**
     * The object for which the access reviews is reviewing the access rights assignments. This can be the group for the
     * review of memberships of users in a group, or the app for a review of assignments of users to an application. Required
     * on create.
     */
    reviewedEntity?: NullableOption<Identity>;
    // The relationship type of reviewer to the target object, one of self, delegated or entityOwners. Required on create.
    reviewerType?: NullableOption<string>;
    // The settings of an accessReview, see type definition below.
    settings?: NullableOption<AccessReviewSettings>;
    // The DateTime when the review is scheduled to be start. This could be a date in the future. Required on create.
    startDateTime?: string;
    /**
     * This read-only field specifies the status of an accessReview. The typical states include Initializing, NotStarted,
     * Starting,InProgress, Completing, Completed, AutoReviewing, and AutoReviewed.
     */
    status?: NullableOption<string>;
    // The collection of decisions for this access review.
    decisions?: NullableOption<AccessReviewDecision[]>;
    // The collection of access reviews instances past, present and future, if this object is a recurring access review.
    instances?: NullableOption<AccessReview[]>;
    // The collection of decisions for the caller, if the caller is a reviewer.
    myDecisions?: NullableOption<AccessReviewDecision[]>;
    // The collection of reviewers for an access review, if access review reviewerType is of type delegated.
    reviewers?: NullableOption<AccessReviewReviewer[]>;
}
export interface AccessReviewDecision extends Entity {
    // The feature- generated recommendation shown to the reviewer, one of Approve, Deny or NotAvailable.
    accessRecommendation?: NullableOption<string>;
    // The feature-generated id of the access review.
    accessReviewId?: NullableOption<string>;
    /**
     * When the review completes, if the results were manually applied, the user identity of the user who applied the
     * decision. If the review was auto-applied, the userPrincipalName is empty.
     */
    appliedBy?: NullableOption<UserIdentity>;
    // The date and time when the review decision was applied.
    appliedDateTime?: NullableOption<string>;
    // The outcome of applying the decision, one of NotApplied, Success, Failed, NotFound or NotSupported.
    applyResult?: NullableOption<string>;
    // The reviewer's business justification, if supplied.
    justification?: NullableOption<string>;
    // The identity of the reviewer. If the recommendation was used as the review, the userPrincipalName is empty.
    reviewedBy?: NullableOption<UserIdentity>;
    reviewedDateTime?: NullableOption<string>;
    // The result of the review, one of NotReviewed, Deny, DontKnow or Approve.
    reviewResult?: NullableOption<string>;
}
export interface AccessReviewReviewer extends Entity {
    createdDateTime?: NullableOption<string>;
    displayName?: NullableOption<string>;
    userPrincipalName?: NullableOption<string>;
}
export interface AccessReviewHistoryDefinition extends Entity {
    // User who created this review history definition.
    createdBy?: UserIdentity;
    // Timestamp when the access review definition was created.
    createdDateTime?: string;
    /**
     * Determines which review decisions will be included in the fetched review history data if specified. Optional on create.
     * All decisions will be included by default if no decisions are provided on create. Possible values are: approve, deny,
     * dontKnow, notReviewed, and notNotified.
     */
    decisions?: NullableOption<AccessReviewHistoryDecisionFilter[]>;
    // Name for the access review history data collection. Required.
    displayName?: string;
    // Uri which can be used to retrieve review history data. This URI will be active for 24 hours after being generated.
    downloadUri?: NullableOption<string>;
    /**
     * Timestamp when all of the available data for this definition was collected. This will be set after this definition's
     * status is set to done.
     */
    fulfilledDateTime?: NullableOption<string>;
    // Timestamp, reviews starting on or after this date will be included in the fetched history data. Required.
    reviewHistoryPeriodEndDateTime?: string;
    // Timestamp, reviews starting on or before this date will be included in the fetched history data. Required.
    reviewHistoryPeriodStartDateTime?: string;
    /**
     * Used to scope what reviews are included in the fetched history data. Fetches reviews whose scope matches with this
     * provided scope. See accessreviewqueryscope. Required.
     */
    scopes?: AccessReviewScope[];
    // Represents the status of the review history data collection. Possible values are: done, inprogress, error, requested.
    status?: NullableOption<AccessReviewHistoryStatus>;
}
export interface AccessReviewInstanceDecisionItem extends Entity {
    // The identifier of the accessReviewInstance parent. Supports $select. Read-only.
    accessReviewId?: string;
    // The identifier of the user who applied the decision. Read-only.
    appliedBy?: NullableOption<UserIdentity>;
    /**
     * The timestamp when the approval decision was applied. 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 is 2014-01-01T00:00:00Z.
     * Supports $select. Read-only.
     */
    appliedDateTime?: NullableOption<string>;
    /**
     * The result of applying the decision. Possible values: New, AppliedSuccessfully, AppliedWithUnknownFailure,
     * AppliedSuccessfullyButObjectNotFound and ApplyNotSupported. Supports $select, $orderby, and $filter (eq only).
     * Read-only.
     */
    applyResult?: NullableOption<string>;
    /**
     * Result of the review. Possible values: Approve, Deny, NotReviewed, or DontKnow. Supports $select, $orderby, and $filter
     * (eq only).
     */
    decision?: NullableOption<string>;
    // Justification left by the reviewer when they made the decision.
    justification?: NullableOption<string>;
    /**
     * Every decision item in an access review represents a principal's access to a resource. This property represents details
     * of the principal. For example, if a decision item represents access of User 'Bob' to Group 'Sales' - The principal is
     * 'Bob' and the resource is 'Sales'. Principals can be of two types - userIdentity and servicePrincipalIdentity. Supports
     * $select. Read-only.
     */
    principal?: NullableOption<Identity>;
    /**
     * Link to the principal object. For example: https://graph.microsoft.com/v1.0/users/a6c7aecb-cbfd-4763-87ef-e91b4bd509d9.
     * Read-only.
     */
    principalLink?: NullableOption<string>;
    /**
     * A system-generated recommendation for the approval decision based off last interactive sign-in to tenant. Recommend
     * approve if sign-in is within thirty days of start of review. Recommend deny if sign-in is greater than thirty days of
     * start of review. Recommendation not available otherwise. Possible values: Approve, Deny, or NoInfoAvailable. Supports
     * $select, $orderby, and $filter (eq only). Read-only.
     */
    recommendation?: NullableOption<string>;
    /**
     * Every decision item in an access review represents a principal's access to a resource. This property represents details
     * of the resource. For example, if a decision item represents access of User 'Bob' to Group 'Sales' - The principal is
     * Bob and the resource is 'Sales'. Resources can be of multiple types. See accessReviewInstanceDecisionItemResource.
     * Read-only.
     */
    resource?: NullableOption<AccessReviewInstanceDecisionItemResource>;
    /**
     * A link to the resource. For example,
     * https://graph.microsoft.com/v1.0/servicePrincipals/c86300f3-8695-4320-9f6e-32a2555f5ff8. Supports $select. Read-only.
     */
    resourceLink?: NullableOption<string>;
    // The identifier of the reviewer. Supports $select. Read-only.
    reviewedBy?: NullableOption<UserIdentity>;
    // The timestamp when the review decision occurred. Supports $select. Read-only.
    reviewedDateTime?: NullableOption<string>;
    /**
     * The target of this specific decision. Decision targets can be of different types – each one with its own specific
     * properties. See accessReviewInstanceDecisionItemTarget. Read-only.
     */
    target?: NullableOption<AccessReviewInstanceDecisionItemTarget>;
}
export interface AccessReviewScheduleDefinition extends Entity {
    // Defines the list of additional users or group members to be notified of the access review progress.
    additionalNotificationRecipients?: NullableOption<AccessReviewNotificationRecipientItem[]>;
    backupReviewers?: NullableOption<AccessReviewReviewerScope[]>;
    // User who created this review. Read-only.
    createdBy?: NullableOption<UserIdentity>;
    // Timestamp when the access review series was created. Supports $select. Read-only.
    createdDateTime?: NullableOption<string>;
    // Description provided by review creators to provide more context of the review to admins. Supports $select.
    descriptionForAdmins?: NullableOption<string>;
    /**
     * Description provided by review creators to provide more context of the review to reviewers. Reviewers will see this
     * description in the email sent to them requesting their review. Supports $select.
     */
    descriptionForReviewers?: NullableOption<string>;
    // Name of the access review series. Supports $select and $orderBy. Required on create.
    displayName?: NullableOption<string>;
    /**
     * This collection of reviewer scopes is used to define the list of fallback reviewers. These fallback reviewers will be
     * notified to take action if no users are found from the list of reviewers specified. This could occur when either the
     * group owner is specified as the reviewer but the group owner does not exist, or manager is specified as reviewer but a
     * user's manager does not exist. See accessReviewReviewerScope. Replaces backupReviewers. Supports $select.
     */
    fallbackReviewers?: NullableOption<AccessReviewReviewerScope[]>;
    /**
     * This property is required when scoping a review to guest users' access across all Microsoft 365 groups and determines
     * which Microsoft 365 groups are reviewed. Each group will become a unique accessReviewInstance of the access review
     * series. For supported scopes, see accessReviewScope. Supports $select. For examples of options for configuring
     * instanceEnumerationScope, see Configure the scope of your access review definition using the Microsoft Graph API.
     */
    instanceEnumerationScope?: NullableOption<AccessReviewScope>;
    // Timestamp when the access review series was last modified. Supports $select. Read-only.
    lastModifiedDateTime?: NullableOption<string>;
    /**
     * This collection of access review scopes is used to define who are the reviewers. The reviewers property is only
     * updatable if individual users are assigned as reviewers. Required on create. Supports $select. For examples of options
     * for assigning reviewers, see Assign reviewers to your access review definition using the Microsoft Graph API.
     */
    reviewers?: NullableOption<AccessReviewReviewerScope[]>;
    /**
     * Defines scope of resources to review. For supported scopes, see accessReviewScope. Required on create. Supports $select
     * and $filter (contains only). For examples of options for configuring scope, see Configure the scope of your access
     * review definition using the Microsoft Graph API.
     */
    scope?: NullableOption<AccessReviewScope>;
    // The settings for an access review series, see type definition below. Supports $select. Required on create.
    settings?: NullableOption<AccessReviewScheduleSettings>;
    /**
     * This read-only field specifies the status of an access review. The typical states include Initializing, NotStarted,
     * Starting, InProgress, Completing, Completed, AutoReviewing, and AutoReviewed. Supports $select, $orderby, and $filter
     * (eq only). Read-only.
     */
    status?: NullableOption<string>;
    /**
     * Set of access reviews instances for this access review series. Access reviews that do not recur will only have one
     * instance; otherwise, there is an instance for each recurrence.
     */
    instances?: NullableOption<AccessReviewInstance[]>;
}
export interface AccessReviewSet extends Entity {
    definitions?: NullableOption<AccessReviewScheduleDefinition[]>;
    historyDefinitions?: NullableOption<AccessReviewHistoryDefinition[]>;
    policy?: NullableOption<AccessReviewPolicy>;
}
export interface AppConsentApprovalRoute extends Entity {
    appConsentRequests?: NullableOption<AppConsentRequest[]>;
}
export interface UserConsentRequest extends Request {
    // The user's justification for requiring access to the app. Supports $filter (eq only) and $orderby.
    reason?: NullableOption<string>;
    // Approval decisions associated with a request.
    approval?: NullableOption<Approval>;
}
export interface ApprovalStep extends Entity {
    // Indicates whether the step is assigned to the calling user to review. Read-only.
    assignedToMe?: NullableOption<boolean>;
    // The label provided by the policy creator to identify an approval step. Read-only.
    displayName?: NullableOption<string>;
    // The justification associated with the approval step decision.
    justification?: NullableOption<string>;
    // The identifier of the reviewer. Read-only.
    reviewedBy?: NullableOption<Identity>;
    /**
     * The date and time when a decision was recorded. The date and time information uses ISO 8601 format and is always in UTC
     * time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.
     */
    reviewedDateTime?: NullableOption<string>;
    // The result of this approval record. Possible values include: NotReviewed, Approved, Denied.
    reviewResult?: NullableOption<string>;
    // The step status. Possible values: InProgress, Initializing, Completed, Expired. Read-only.
    status?: NullableOption<string>;
}
export interface ApprovalWorkflowProvider extends Entity {
    displayName?: string;
    businessFlows?: NullableOption<BusinessFlow[]>;
    businessFlowsWithRequestsAwaitingMyDecision?: NullableOption<BusinessFlow[]>;
    policyTemplates?: NullableOption<GovernancePolicyTemplate[]>;
}
export interface BusinessFlow extends Entity {
    customData?: NullableOption<string>;
    deDuplicationId?: NullableOption<string>;
    description?: NullableOption<string>;
    displayName?: NullableOption<string>;
    policy?: NullableOption<GovernancePolicy>;
    policyTemplateId?: NullableOption<string>;
    recordVersion?: NullableOption<string>;
    schemaId?: NullableOption<string>;
    settings?: NullableOption<BusinessFlowSettings>;
}
export interface GovernancePolicyTemplate extends Entity {
    displayName?: NullableOption<string>;
    policy?: NullableOption<GovernancePolicy>;
    settings?: NullableOption<BusinessFlowSettings>;
}
export interface BusinessFlowTemplate extends Entity {
    // The name of the business flow template
    displayName?: NullableOption<string>;
}
export interface EntitlementManagement extends Entity {
    accessPackageAssignmentApprovals?: NullableOption<Approval[]>;
    accessPackageAssignmentPolicies?: NullableOption<AccessPackageAssignmentPolicy[]>;
    accessPackageAssignmentRequests?: NullableOption<AccessPackageAssignmentRequest[]>;
    accessPackageAssignmentResourceRoles?: NullableOption<AccessPackageAssignmentResourceRole[]>;
    accessPackageAssignments?: NullableOption<AccessPackageAssignment[]>;
    accessPackageCatalogs?: NullableOption<AccessPackageCatalog[]>;
    accessPackageResourceEnvironments?: NullableOption<AccessPackageResourceEnvironment[]>;
    accessPackageResourceRequests?: NullableOption<AccessPackageResourceRequest[]>;
    accessPackageResourceRoleScopes?: NullableOption<AccessPackageResourceRoleScope[]>;
    accessPackageResources?: NullableOption<AccessPackageResource[]>;
    accessPackages?: NullableOption<AccessPackage[]>;
    connectedOrganizations?: NullableOption<ConnectedOrganization[]>;
    settings?: NullableOption<EntitlementManagementSettings>;
}
export interface AccessPackageAssignmentPolicy extends Entity {
    // ID of the access package.
    accessPackageId?: NullableOption<string>;
    /**
     * Who must review, and how often, the assignments to the access package from this policy. This property is null if
     * reviews are not required.
     */
    accessReviewSettings?: NullableOption<AssignmentReviewSettings>;
    // Indicates whether a user can extend the access package assignment duration after approval.
    canExtend?: NullableOption<boolean>;
    // Read-only.
    createdBy?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    createdDateTime?: NullableOption<string>;
    // The description of the policy.
    description?: NullableOption<string>;
    // The display name of the policy.
    displayName?: NullableOption<string>;
    // The number of days in which assignments from this policy last until they are expired.
    durationInDays?: NullableOption<number>;
    /**
     * The expiration date for assignments created in this policy. 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 is 2014-01-01T00:00:00Z
     */
    expirationDateTime?: NullableOption<string>;
    // Read-only.
    modifiedBy?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    modifiedDateTime?: NullableOption<string>;
    // Questions that are posed to the requestor.
    questions?: NullableOption<AccessPackageQuestion[]>;
    // Who must approve requests for access package in this policy.
    requestApprovalSettings?: NullableOption<ApprovalSettings>;
    // Who can request this access package from this policy.
    requestorSettings?: NullableOption<RequestorSettings>;
    // The access package with this policy. Read-only. Nullable.
    accessPackage?: NullableOption<AccessPackage>;
    accessPackageCatalog?: NullableOption<AccessPackageCatalog>;
}
export interface AccessPackageAssignmentRequest extends Entity {
    // Answers provided by the requestor to accessPackageQuestions asked of them at the time of request.
    answers?: NullableOption<AccessPackageAnswer[]>;
    /**
     * The date of the end of processing, either successful or failure, of a request. 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 is
     * 2014-01-01T00:00:00Z. Read-only.
     */
    completedDate?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    createdDateTime?: NullableOption<string>;
    expirationDateTime?: NullableOption<string>;
    // True if the request is not to be processed for assignment.
    isValidationOnly?: NullableOption<boolean>;
    // The requestor's supplied justification.
    justification?: NullableOption<string>;
    /**
     * One of PendingApproval, Canceled, Denied, Delivering, Delivered, PartiallyDelivered, DeliveryFailed, Submitted or
     * Scheduled. Read-only.
     */
    requestState?: NullableOption<string>;
    // More information on the request processing status. Read-only.
    requestStatus?: NullableOption<string>;
    /**
     * One of UserAdd, UserRemove, AdminAdd, AdminRemove or SystemRemove. A request from the user themselves would have
     * requestType of UserAdd or UserRemove. Read-only.
     */
    requestType?: NullableOption<string>;
    // The range of dates that access is to be assigned to the requestor. Read-only.
    schedule?: NullableOption<RequestSchedule>;
    /**
     * The access package associated with the accessPackageAssignmentRequest. An access package defines the collections of
     * resource roles and the policies for how one or more users can get access to those resources. Read-only. Nullable.
     */
    accessPackage?: NullableOption<AccessPackage>;
    accessPackageAssignment?: NullableOption<AccessPackageAssignment>;
    // The subject who requested or, if a direct assignment, was assigned. Read-only. Nullable.
    requestor?: NullableOption<AccessPackageSubject>;
}
export interface AccessPackageAssignmentResourceRole extends Entity {
    /**
     * A unique identifier relative to the origin system, corresponding to the originId property of the
     * accessPackageResourceRole.
     */
    originId?: NullableOption<string>;
    /**
     * The system where the role assignment is to be created or has been created for an access package assignment, such as
     * SharePointOnline, AadGroup or AadApplication, corresponding to the originSystem property of the
     * accessPackageResourceRole.
     */
    originSystem?: NullableOption<string>;
    /**
     * The value is PendingFulfillment when the access package assignment has not yet been delivered to the origin system, and
     * Fulfilled when the access package assignment has been delivered to the origin system.
     */
    status?: NullableOption<string>;
    // The access package assignments resulting in this role assignment. Read-only. Nullable.
    accessPackageAssignments?: NullableOption<AccessPackageAssignment[]>;
    // Read-only. Nullable.
    accessPackageResourceRole?: NullableOption<AccessPackageResourceRole>;
    // Read-only. Nullable.
    accessPackageResourceScope?: NullableOption<AccessPackageResourceScope>;
    // Read-only. Nullable.
    accessPackageSubject?: NullableOption<AccessPackageSubject>;
}
export interface AccessPackageAssignment extends Entity {
    // The identifier of the access package. Read-only.
    accessPackageId?: NullableOption<string>;
    // The identifier of the access package assignment policy. Read-only.
    assignmentPolicyId?: NullableOption<string>;
    // The state of the access package assignment. Possible values are Delivering, Delivered, or Expired. Read-only.
    assignmentState?: NullableOption<string>;
    /**
     * More information about the assignment lifecycle. Possible values include Delivering, Delivered,
     * NearExpiry1DayNotificationTriggered, or ExpiredNotificationTriggered. Read-only.
     */
    assignmentStatus?: NullableOption<string>;
    // The identifier of the catalog containing the access package. Read-only.
    catalogId?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    expiredDateTime?: NullableOption<string>;
    // Indicates whether the access package assignment is extended. Read-only.
    isExtended?: NullableOption<boolean>;
    // When the access assignment is to be in place. Read-only.
    schedule?: NullableOption<RequestSchedule>;
    // The ID of the subject with the assignment. Read-only.
    targetId?: NullableOption<string>;
    // Read-only. Nullable.
    accessPackage?: NullableOption<AccessPackage>;
    // Read-only. Nullable.
    accessPackageAssignmentPolicy?: NullableOption<AccessPackageAssignmentPolicy>;
    accessPackageAssignmentRequests?: NullableOption<AccessPackageAssignmentRequest[]>;
    // The resource roles delivered to the target user for this assignment. Read-only. Nullable.
    accessPackageAssignmentResourceRoles?: NullableOption<AccessPackageAssignmentResourceRole[]>;
    // The subject of the access package assignment. Read-only. Nullable.
    target?: NullableOption<AccessPackageSubject>;
}
export interface AccessPackageCatalog extends Entity {
    // Has the value Published if the access packages are available for management.
    catalogStatus?: NullableOption<string>;
    // One of UserManaged or ServiceDefault.
    catalogType?: NullableOption<string>;
    // UPN of the user who created this resource. Read-only.
    createdBy?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    createdDateTime?: NullableOption<string>;
    // The description of the access package catalog.
    description?: NullableOption<string>;
    // The display name of the access package catalog.
    displayName?: NullableOption<string>;
    // Whether the access packages in this catalog can be requested by users outside of the tenant.
    isExternallyVisible?: NullableOption<boolean>;
    // The UPN of the user who last modified this resource. Read-only.
    modifiedBy?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    modifiedDateTime?: NullableOption<string>;
    accessPackageResourceRoles?: NullableOption<AccessPackageResourceRole[]>;
    // Read-only. Nullable.
    accessPackageResources?: NullableOption<AccessPackageResource[]>;
    accessPackageResourceScopes?: NullableOption<AccessPackageResourceScope[]>;
    // The access packages in this catalog. Read-only. Nullable.
    accessPackages?: NullableOption<AccessPackage[]>;
}
export interface AccessPackageResourceEnvironment extends Entity {
    // Connection information of an environment used to connect to a resource.
    connectionInfo?: NullableOption<ConnectionInfo>;
    // The display name of the user that created this object.
    createdBy?: NullableOption<string>;
    /**
     * The date and time that this object was created. 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 is 2014-01-01T00:00:00Z.
     */
    createdDateTime?: NullableOption<string>;
    // The description of this accessPackageResourceEnvironment object.
    description?: NullableOption<string>;
    // The display name of this object.
    displayName?: NullableOption<string>;
    /**
     * Determines whether this is default environment or not. It is set to true for all static origin systems, such as Azure
     * AD groups and Azure AD Applications.
     */
    isDefaultEnvironment?: NullableOption<boolean>;
    // The display name of the entity that last modified this object.
    modifiedBy?: NullableOption<string>;
    /**
     * The date and time that this object was last modified. 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 is 2014-01-01T00:00:00Z.
     */
    modifiedDateTime?: NullableOption<string>;
    // The unique identifier of this environment in the origin system.
    originId?: string;
    // The type of the resource in the origin system such as SharePointOnline. Supports $filter.
    originSystem?: string;
    // Read-only. Required.
    accessPackageResources?: NullableOption<AccessPackageResource[]>;
}
export interface AccessPackageResourceRequest extends Entity {
    // The unique ID of the access package catalog.
    catalogId?: NullableOption<string>;
    executeImmediately?: NullableOption<boolean>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    expirationDateTime?: NullableOption<string>;
    // If set, does not add the resource.
    isValidationOnly?: NullableOption<boolean>;
    // The requestor's justification for adding or removing the resource.
    justification?: NullableOption<string>;
    /**
     * The outcome of whether the service was able to add the resource to the catalog. The value is Delivered if the resource
     * was added or removed. Read-Only.
     */
    requestState?: NullableOption<string>;
    // Read-only.
    requestStatus?: NullableOption<string>;
    /**
     * Use AdminAdd to add a resource, if the caller is an administrator or resource owner, or AdminRemove to remove a
     * resource.
     */
    requestType?: NullableOption<string>;
    // Nullable.
    accessPackageResource?: NullableOption<AccessPackageResource>;
    // Read-only. Nullable.
    requestor?: NullableOption<AccessPackageSubject>;
}
export interface AccessPackageResourceRoleScope extends Entity {
    // Read-only.
    createdBy?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    createdDateTime?: NullableOption<string>;
    // Read-only.
    modifiedBy?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    modifiedDateTime?: NullableOption<string>;
    // Read-only. Nullable.
    accessPackageResourceRole?: NullableOption<AccessPackageResourceRole>;
    // Read-only. Nullable.
    accessPackageResourceScope?: NullableOption<AccessPackageResourceScope>;
}
export interface AccessPackageResource extends Entity {
    // Read-only.
    addedBy?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    addedOn?: NullableOption<string>;
    attributes?: NullableOption<AccessPackageResourceAttribute[]>;
    // A description for the resource.
    description?: NullableOption<string>;
    // The display name of the resource, such as the application name, group name or site name.
    displayName?: NullableOption<string>;
    // True if the resource is not yet available for assignment.
    isPendingOnboarding?: NullableOption<boolean>;
    /**
     * The unique identifier of the resource in the origin system. In the case of an Azure AD group, this is the identifier of
     * the group.
     */
    originId?: NullableOption<string>;
    // The type of the resource in the origin system, such as SharePointOnline, AadApplication or AadGroup.
    originSystem?: NullableOption<string>;
    /**
     * The type of the resource, such as Application if it is an Azure AD connected application, or SharePoint Online Site for
     * a SharePoint Online site.
     */
    resourceType?: NullableOption<string>;
    // A unique resource locator for the resource, such as the URL for signing a user into an application.
    url?: NullableOption<string>;
    /**
     * Contains the environment information for the resource. This can be set using either the @odata.bind annotation or the
     * environment's originId.
     */
    accessPackageResourceEnvironment?: NullableOption<AccessPackageResourceEnvironment>;
    // Read-only. Nullable. Supports $expand.
    accessPackageResourceRoles?: NullableOption<AccessPackageResourceRole[]>;
    // Read-only. Nullable. Supports $expand.
    accessPackageResourceScopes?: NullableOption<AccessPackageResourceScope[]>;
}
export interface AccessPackage extends Entity {
    // ID of the access package catalog referencing this access package. Read-only.
    catalogId?: NullableOption<string>;
    // UPN of the user or identity of the subject who created this resource. Read-only.
    createdBy?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    createdDateTime?: NullableOption<string>;
    // The description of the access package.
    description?: NullableOption<string>;
    // The display name of the access package.
    displayName?: NullableOption<string>;
    // Whether the access package is hidden from the requestor.
    isHidden?: NullableOption<boolean>;
    // Indicates whether role scopes are visible.
    isRoleScopesVisible?: NullableOption<boolean>;
    // The UPN of the user who last modified this resource. Read-only.
    modifiedBy?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    modifiedDateTime?: NullableOption<string>;
    // Read-only. Nullable.
    accessPackageAssignmentPolicies?: NullableOption<AccessPackageAssignmentPolicy[]>;
    // Read-only. Nullable.
    accessPackageCatalog?: NullableOption<AccessPackageCatalog>;
    // Nullable.
    accessPackageResourceRoleScopes?: NullableOption<AccessPackageResourceRoleScope[]>;
    // The access packages that are incompatible with this package. Read-only.
    accessPackagesIncompatibleWith?: NullableOption<AccessPackage[]>;
    // The access packages whose assigned users are ineligible to be assigned this access package.
    incompatibleAccessPackages?: NullableOption<AccessPackage[]>;
    // The groups whose members are ineligible to be assigned this access package.
    incompatibleGroups?: NullableOption<Group[]>;
}
export interface ConnectedOrganization extends Entity {
    // UPN of the user who created this resource. Read-only.
    createdBy?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    createdDateTime?: NullableOption<string>;
    // The description of the connected organization.
    description?: NullableOption<string>;
    // The display name of the connected organization.
    displayName?: NullableOption<string>;
    identitySources?: NullableOption<IdentitySource[]>;
    // UPN of the user who last modified this resource. Read-only.
    modifiedBy?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    modifiedDateTime?: NullableOption<string>;
    /**
     * The state of a connected organization defines whether assignment policies with requestor scope type
     * AllConfiguredConnectedOrganizationSubjects are applicable or not. Possible values are: configured, proposed.
     */
    state?: NullableOption<ConnectedOrganizationState>;
    // Nullable.
    externalSponsors?: NullableOption<DirectoryObject[]>;
    // Nullable.
    internalSponsors?: NullableOption<DirectoryObject[]>;
}
export interface EntitlementManagementSettings extends Entity {
    /**
     * If externalUserLifecycleAction is BlockSignInAndDelete, the number of days after an external user is blocked from sign
     * in before their account is deleted.
     */
    daysUntilExternalUserDeletedAfterBlocked?: NullableOption<number>;
    // One of None, BlockSignIn, or BlockSignInAndDelete.
    externalUserLifecycleAction?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IdentityGovernance {
    accessReviews?: NullableOption<AccessReviewSet>;
    appConsent?: NullableOption<AppConsentApprovalRoute>;
    termsOfUse?: NullableOption<TermsOfUseContainer>;
    entitlementManagement?: NullableOption<EntitlementManagement>;
}
export interface TermsOfUseContainer extends Entity {
    agreementAcceptances?: NullableOption<AgreementAcceptance[]>;
    agreements?: NullableOption<Agreement[]>;
}
export interface Program extends Entity {
    // The description of the program.
    description?: string;
    // The name of the program. Required on create.
    displayName?: string;
    // Controls associated with the program.
    controls?: NullableOption<ProgramControl[]>;
}
export interface ProgramControl extends Entity {
    // The controlId of the control, in particular the identifier of an access review. Required on create.
    controlId?: string;
    /**
     * The programControlType identifies the type of program control - for example, a control linking to guest access reviews.
     * Required on create.
     */
    controlTypeId?: string;
    // The creation date and time of the program control.
    createdDateTime?: string;
    // The name of the control.
    displayName?: NullableOption<string>;
    // The user who created the program control.
    owner?: NullableOption<UserIdentity>;
    // The programId of the program this control is a part of. Required on create.
    programId?: string;
    // The resource, a group or an app, targeted by this program control's access review.
    resource?: NullableOption<ProgramResource>;
    // The life cycle status of the control.
    status?: NullableOption<string>;
    // The program this control is part of.
    program?: NullableOption<Program>;
}
export interface ProgramControlType extends Entity {
    controlTypeGroupId?: NullableOption<string>;
    // The name of the program control type
    displayName?: NullableOption<string>;
}
export interface Agreement extends Entity {
    /**
     * Display name of the agreement. The display name is used for internal tracking of the agreement but is not shown to end
     * users who view the agreement.
     */
    displayName?: NullableOption<string>;
    /**
     * This setting enables you to require end users to accept this agreement on every device that they are accessing it from.
     * The end user will be required to register their device in Azure AD, if they haven't already done so.
     */
    isPerDeviceAcceptanceRequired?: NullableOption<boolean>;
    // Indicates whether the user has to expand the agreement before accepting.
    isViewingBeforeAcceptanceRequired?: NullableOption<boolean>;
    // Expiration schedule and frequency of agreement for all users.
    termsExpiration?: NullableOption<TermsExpiration>;
    /**
     * The duration after which the user must re-accept the terms of use. The value is represented in ISO 8601 format for
     * durations.
     */
    userReacceptRequiredFrequency?: NullableOption<string>;
    // Read-only. Information about acceptances of this agreement.
    acceptances?: NullableOption<AgreementAcceptance[]>;
    // Default PDF linked to this agreement.
    file?: NullableOption<AgreementFile>;
    /**
     * PDFs linked to this agreement. Note: This property is in the process of being deprecated. Use the file property
     * instead.
     */
    files?: NullableOption<AgreementFileLocalization[]>;
}
export interface AgreementFileProperties extends Entity {
    createdDateTime?: NullableOption<string>;
    displayName?: NullableOption<string>;
    fileData?: NullableOption<AgreementFileData>;
    fileName?: NullableOption<string>;
    isDefault?: NullableOption<boolean>;
    isMajorVersion?: NullableOption<boolean>;
    language?: NullableOption<string>;
}
export interface AgreementFile extends AgreementFileProperties {
    localizations?: NullableOption<AgreementFileLocalization[]>;
}
export interface AgreementFileLocalization extends AgreementFileProperties {
    versions?: NullableOption<AgreementFileVersion[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface AgreementFileVersion extends AgreementFileProperties {}
export interface AuthenticationContextClassReference extends Entity {
    /**
     * A short explanation of the policies that are enforced by authenticationContextClassReference. This value should be used
     * to provide secondary text to describe the authentication context class reference when building user facing admin
     * experiences. For example, selection UX.
     */
    description?: NullableOption<string>;
    /**
     * The display name is the friendly name of the authenticationContextClassReference. This value should be used to identify
     * the authentication context class reference when building user facing admin experiences. For example, selection UX.
     */
    displayName?: NullableOption<string>;
    /**
     * Indicates whether the authenticationContextClassReference has been published by the security admin and is ready for use
     * by apps. When it is set to false it should not be shown in admin UX experiences because the value is not currently
     * available for selection.
     */
    isAvailable?: NullableOption<boolean>;
}
export interface NamedLocation extends Entity {
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    createdDateTime?: NullableOption<string>;
    // Human-readable name of the location.
    displayName?: string;
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    modifiedDateTime?: NullableOption<string>;
}
export interface CountryNamedLocation extends NamedLocation {
    // List of countries and/or regions in two-letter format specified by ISO 3166-2.
    countriesAndRegions?: string[];
    /**
     * Determines what method is used to decide which country the user is located in. Possible values are clientIpAddress and
     * authenticatorAppGps.
     */
    countryLookupMethod?: NullableOption<CountryLookupMethodType>;
    // True if IP addresses that don't map to a country or region should be included in the named location.
    includeUnknownCountriesAndRegions?: boolean;
}
// tslint:disable-next-line: interface-name
export interface IdentityProtectionRoot {
    riskDetections?: NullableOption<RiskDetection[]>;
    riskyUsers?: NullableOption<RiskyUser[]>;
}
export interface RiskDetection extends Entity {
    // Indicates the activity type the detected risk is linked to. The possible values are signin, user, unknownFutureValue.
    activity?: NullableOption<ActivityType>;
    /**
     * Date and time that the risky activity occurred. 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 is 2014-01-01T00:00:00Z
     */
    activityDateTime?: NullableOption<string>;
    // Additional information associated with the risk detection in JSON format.
    additionalInfo?: NullableOption<string>;
    /**
     * Correlation ID of the sign-in associated with the risk detection. This property is null if the risk detection is not
     * associated with a sign-in.
     */
    correlationId?: NullableOption<string>;
    /**
     * Date and time that the risk was detected. 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 is 2014-01-01T00:00:00Z
     */
    detectedDateTime?: NullableOption<string>;
    /**
     * Timing of the detected risk (real-time/offline). The possible values are notDefined, realtime, nearRealtime, offline,
     * unknownFutureValue.
     */
    detectionTimingType?: NullableOption<RiskDetectionTimingType>;
    // Provides the IP address of the client from where the risk occurred.
    ipAddress?: NullableOption<string>;
    // Date and time that the risk detection was last updated.
    lastUpdatedDateTime?: NullableOption<string>;
    // Location of the sign-in.
    location?: NullableOption<SignInLocation>;
    /**
     * Request ID of the sign-in associated with the risk detection. This property is null if the risk detection is not
     * associated with a sign-in.
     */
    requestId?: NullableOption<string>;
    /**
     * Details of the detected risk. The possible values are none, adminGeneratedTemporaryPassword,
     * userPerformedSecuredPasswordChange, userPerformedSecuredPasswordReset, adminConfirmedSigninSafe, aiConfirmedSigninSafe,
     * userPassedMFADrivenByRiskBasedPolicy, adminDismissedAllRiskForUser, adminConfirmedSigninCompromised, hidden,
     * adminConfirmedUserCompromised, unknownFutureValue. Note: Details for this property are only available for Azure AD
     * Premium P2 customers. P1 customers will be returned hidden.
     */
    riskDetail?: NullableOption<RiskDetail>;
    /**
     * The type of risk event detected. The possible values are unlikelyTravel, anonymizedIPAddress, maliciousIPAddress,
     * unfamiliarFeatures, malwareInfectedIPAddress, suspiciousIPAddress, leakedCredentials, investigationsThreatIntelligence,
     * generic,adminConfirmedUserCompromised, mcasImpossibleTravel, mcasSuspiciousInboxManipulationRules,
     * investigationsThreatIntelligenceSigninLinked, maliciousIPAddressValidCredentialsBlockedIP, and unknownFutureValue.
     */
    riskEventType?: NullableOption<string>;
    /**
     * Level of the detected risk. The possible values are low, medium, high, hidden, none, unknownFutureValue. Note: Details
     * for this property are only available for Azure AD Premium P2 customers. P1 customers will be returned hidden.
     */
    riskLevel?: NullableOption<RiskLevel>;
    /**
     * The state of a detected risky user or sign-in. The possible values are none, confirmedSafe, remediated, dismissed,
     * atRisk, confirmedCompromised, and unknownFutureValue.
     */
    riskState?: NullableOption<RiskState>;
    // List of risk event types.Note: This property is deprecated. Use riskEventType instead.
    riskType?: NullableOption<RiskEventType>;
    // Source of the risk detection. For example, activeDirectory.
    source?: NullableOption<string>;
    /**
     * Indicates the type of token issuer for the detected sign-in risk. The possible values are AzureAD,
     * ADFederationServices, and unknownFutureValue.
     */
    tokenIssuerType?: NullableOption<TokenIssuerType>;
    // Name of the user.
    userDisplayName?: NullableOption<string>;
    /**
     * Unique ID of the user. 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 is 2014-01-01T00:00:00Z
     */
    userId?: NullableOption<string>;
    // The user principal name (UPN) of the user.
    userPrincipalName?: NullableOption<string>;
}
export interface RiskyUser extends Entity {
    // Indicates whether the user is deleted. Possible values are: true, false.
    isDeleted?: NullableOption<boolean>;
    // Indicates whether a user's risky state is being processed by the backend.
    isProcessing?: NullableOption<boolean>;
    /**
     * The possible values are none, adminGeneratedTemporaryPassword, userPerformedSecuredPasswordChange,
     * userPerformedSecuredPasswordReset, adminConfirmedSigninSafe, aiConfirmedSigninSafe,
     * userPassedMFADrivenByRiskBasedPolicy, adminDismissedAllRiskForUser, adminConfirmedSigninCompromised, hidden,
     * adminConfirmedUserCompromised, unknownFutureValue.
     */
    riskDetail?: NullableOption<RiskDetail>;
    /**
     * The date and time that the risky user was last updated. 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
     */
    riskLastUpdatedDateTime?: NullableOption<string>;
    // Level of the detected risky user. The possible values are low, medium, high, hidden, none, unknownFutureValue.
    riskLevel?: NullableOption<RiskLevel>;
    /**
     * State of the user's risk. Possible values are: none, confirmedSafe, remediated, dismissed, atRisk,
     * confirmedCompromised, unknownFutureValue.
     */
    riskState?: NullableOption<RiskState>;
    // Risky user display name.
    userDisplayName?: NullableOption<string>;
    // Risky user principal name.
    userPrincipalName?: NullableOption<string>;
    // The activity related to user risk level change
    history?: NullableOption<RiskyUserHistoryItem[]>;
}
// tslint:disable-next-line: interface-name
export interface IpNamedLocation extends NamedLocation {
    // List of IP address ranges in IPv4 CIDR format (e.g. 1.2.3.4/32) or any allowable IPv6 format from IETF RFC596.
    ipRanges?: IpRange[];
    // True if this location is explicitly trusted.
    isTrusted?: boolean;
}
export interface RiskyUserHistoryItem extends RiskyUser {
    // The activity related to user risk level change.
    activity?: NullableOption<RiskUserActivity>;
    // The id of actor that does the operation.
    initiatedBy?: NullableOption<string>;
    // The id of the user.
    userId?: NullableOption<string>;
}
export interface AccessPackageSubject extends Entity {
    altSecId?: NullableOption<string>;
    // The identifier of the connected organization of the subject.
    connectedOrganizationId?: NullableOption<string>;
    // The display name of the subject.
    displayName?: NullableOption<string>;
    // The email address of the subject.
    email?: NullableOption<string>;
    // The object identifier of the subject. null if the subject is not yet a user in the tenant.
    objectId?: NullableOption<string>;
    onPremisesSecurityIdentifier?: NullableOption<string>;
    // The principal name, if known, of the subject.
    principalName?: NullableOption<string>;
    // The resource type of the subject.
    type?: NullableOption<string>;
    // The connected organization of the subject. Read-only. Nullable.
    connectedOrganization?: NullableOption<ConnectedOrganization>;
}
export interface AccessPackageResourceRole extends Entity {
    // A description for the resource role.
    description?: NullableOption<string>;
    // The display name of the resource role such as the role defined by the application.
    displayName?: NullableOption<string>;
    /**
     * The unique identifier of the resource role in the origin system. For a SharePoint Online site, the originId will be the
     * sequence number of the role in the site.
     */
    originId?: NullableOption<string>;
    // The type of the resource in the origin system, such as SharePointOnline, AadApplication or AadGroup.
    originSystem?: NullableOption<string>;
    // Read-only. Nullable.
    accessPackageResource?: NullableOption<AccessPackageResource>;
}
export interface AccessPackageResourceScope extends Entity {
    // The description of the scope.
    description?: NullableOption<string>;
    // The display name of the scope.
    displayName?: NullableOption<string>;
    // True if the scopes are arranged in a hierarchy and this is the top or root scope of the resource.
    isRootScope?: NullableOption<boolean>;
    // The unique identifier for the scope in the resource as defined in the origin system.
    originId?: NullableOption<string>;
    // The origin system for the scope.
    originSystem?: NullableOption<string>;
    // The origin system for the role, if different.
    roleOriginId?: NullableOption<string>;
    // A resource locator for the scope.
    url?: NullableOption<string>;
    // Read-only. Nullable.
    accessPackageResource?: NullableOption<AccessPackageResource>;
}
// tslint:disable-next-line: interface-name
export interface InformationProtectionLabel extends Entity {
    // The color that the UI should display for the label, if configured.
    color?: NullableOption<string>;
    // The admin-defined description for the label.
    description?: NullableOption<string>;
    // Indicates whether the label is active or not. Active labels should be hidden or disabled in UI.
    isActive?: boolean;
    // The plaintext name of the label.
    name?: NullableOption<string>;
    // The parent label associated with a child label. Null if label has no parent.
    parent?: NullableOption<ParentLabelDetails>;
    // The sensitivity value of the label, where lower is less sensitive.
    sensitivity?: number;
    // The tooltip that should be displayed for the label in a UI.
    tooltip?: NullableOption<string>;
}
export interface MobileApp extends Entity {
    // The date and time the app was created.
    createdDateTime?: string;
    // The total number of dependencies the child app has.
    dependentAppCount?: number;
    // The description of the app.
    description?: NullableOption<string>;
    // The developer of the app.
    developer?: NullableOption<string>;
    // The admin provided or imported title of the app.
    displayName?: NullableOption<string>;
    // The more information Url.
    informationUrl?: NullableOption<string>;
    // The value indicating whether the app is assigned to at least one group.
    isAssigned?: boolean;
    // The value indicating whether the app is marked as featured by the admin.
    isFeatured?: boolean;
    // The large icon, to be displayed in the app details and used for upload of the icon.
    largeIcon?: NullableOption<MimeContent>;
    // The date and time the app was last modified.
    lastModifiedDateTime?: string;
    // Notes for the app.
    notes?: NullableOption<string>;
    // The owner of the app.
    owner?: NullableOption<string>;
    // The privacy statement Url.
    privacyInformationUrl?: NullableOption<string>;
    // The publisher of the app.
    publisher?: NullableOption<string>;
    /**
     * The publishing state for the app. The app cannot be assigned unless the app is published. Possible values are:
     * notPublished, processing, published.
     */
    publishingState?: MobileAppPublishingState;
    // List of scope tag ids for this mobile app.
    roleScopeTagIds?: NullableOption<string[]>;
    // The total number of apps this app is directly or indirectly superseded by.
    supersededAppCount?: number;
    // The total number of apps this app directly or indirectly supersedes.
    supersedingAppCount?: number;
    // The upload state.
    uploadState?: number;
    // The list of group assignments for this mobile app.
    assignments?: NullableOption<MobileAppAssignment[]>;
    // The list of categories for this app.
    categories?: NullableOption<MobileAppCategory[]>;
    // The list of installation states for this mobile app.
    deviceStatuses?: NullableOption<MobileAppInstallStatus[]>;
    // Mobile App Install Summary.
    installSummary?: NullableOption<MobileAppInstallSummary>;
    // List of relationships for this mobile app.
    relationships?: NullableOption<MobileAppRelationship[]>;
    // The list of installation states for this mobile app.
    userStatuses?: NullableOption<UserAppInstallStatus[]>;
}
export interface AndroidForWorkApp extends MobileApp {
    // The Identity Name.
    appIdentifier?: NullableOption<string>;
    // The Play for Work Store app URL.
    appStoreUrl?: NullableOption<string>;
    // The package identifier.
    packageId?: NullableOption<string>;
    // The total number of VPP licenses.
    totalLicenseCount?: number;
    // The number of VPP licenses in use.
    usedLicenseCount?: number;
}
export interface ManagedDeviceMobileAppConfiguration extends Entity {
    // DateTime the object was created.
    createdDateTime?: string;
    // Admin provided description of the Device Configuration.
    description?: NullableOption<string>;
    // Admin provided name of the device configuration.
    displayName?: string;
    // DateTime the object was last modified.
    lastModifiedDateTime?: string;
    // List of Scope Tags for this App configuration entity.
    roleScopeTagIds?: NullableOption<string[]>;
    // the associated app.
    targetedMobileApps?: NullableOption<string[]>;
    // Version of the device configuration.
    version?: number;
    // The list of group assignemenets for app configration.
    assignments?: NullableOption<ManagedDeviceMobileAppConfigurationAssignment[]>;
    // List of ManagedDeviceMobileAppConfigurationDeviceStatus.
    deviceStatuses?: NullableOption<ManagedDeviceMobileAppConfigurationDeviceStatus[]>;
    // App configuration device status summary.
    deviceStatusSummary?: NullableOption<ManagedDeviceMobileAppConfigurationDeviceSummary>;
    // List of ManagedDeviceMobileAppConfigurationUserStatus.
    userStatuses?: NullableOption<ManagedDeviceMobileAppConfigurationUserStatus[]>;
    // App configuration user status summary.
    userStatusSummary?: NullableOption<ManagedDeviceMobileAppConfigurationUserSummary>;
}
export interface AndroidForWorkMobileAppConfiguration extends ManagedDeviceMobileAppConfiguration {
    // Android For Work app configuration package id.
    packageId?: NullableOption<string>;
    // Android For Work app configuration JSON payload.
    payloadJson?: NullableOption<string>;
    // List of Android app permissions and corresponding permission actions.
    permissionActions?: NullableOption<AndroidPermissionAction[]>;
    /**
     * Android Enterprise profile applicability (AndroidWorkProfile, DeviceOwner, or default (applies to both)). Possible
     * values are: default, androidWorkProfile, androidDeviceOwner.
     */
    profileApplicability?: AndroidProfileApplicability;
}
export interface MobileLobApp extends MobileApp {
    // The internal committed content version.
    committedContentVersion?: NullableOption<string>;
    // The name of the main Lob application file.
    fileName?: NullableOption<string>;
    // The total size, including all uploaded files.
    size?: number;
    // The list of content versions for this app.
    contentVersions?: NullableOption<MobileAppContent[]>;
}
export interface AndroidLobApp extends MobileLobApp {
    // The Identity Name.
    identityName?: NullableOption<string>;
    // The identity version.
    identityVersion?: NullableOption<string>;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: NullableOption<AndroidMinimumOperatingSystem>;
    // The package identifier.
    packageId?: NullableOption<string>;
    // The version code of Android Line of Business (LoB) app.
    versionCode?: NullableOption<string>;
    // The version name of Android Line of Business (LoB) app.
    versionName?: NullableOption<string>;
}
export interface AndroidManagedStoreApp extends MobileApp {
    // The Identity Name.
    appIdentifier?: NullableOption<string>;
    // The Play for Work Store app URL.
    appStoreUrl?: NullableOption<string>;
    // The tracks that are visible to this enterprise.
    appTracks?: NullableOption<AndroidManagedStoreAppTrack[]>;
    // Indicates whether the app is only available to a given enterprise's users.
    isPrivate?: boolean;
    // Indicates whether the app is a preinstalled system app.
    isSystemApp?: boolean;
    // The package identifier.
    packageId?: NullableOption<string>;
    // Whether this app supports OEMConfig policy.
    supportsOemConfig?: boolean;
    // The total number of VPP licenses.
    totalLicenseCount?: number;
    // The number of VPP licenses in use.
    usedLicenseCount?: number;
}
export interface AndroidManagedStoreAppConfiguration extends ManagedDeviceMobileAppConfiguration {
    // Whether or not this AppConfig is an OEMConfig policy.
    appSupportsOemConfig?: boolean;
    // Android Enterprise app configuration package id.
    packageId?: NullableOption<string>;
    // Android Enterprise app configuration JSON payload.
    payloadJson?: NullableOption<string>;
    // List of Android app permissions and corresponding permission actions.
    permissionActions?: NullableOption<AndroidPermissionAction[]>;
    /**
     * Android Enterprise profile applicability (AndroidWorkProfile, DeviceOwner, or default (applies to both)). Possible
     * values are: default, androidWorkProfile, androidDeviceOwner.
     */
    profileApplicability?: AndroidProfileApplicability;
}
// tslint:disable-next-line: no-empty-interface
export interface AndroidManagedStoreWebApp extends AndroidManagedStoreApp {}
export interface AndroidStoreApp extends MobileApp {
    // The Identity Name.
    appIdentifier?: NullableOption<string>;
    // The Android app store URL.
    appStoreUrl?: NullableOption<string>;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: NullableOption<AndroidMinimumOperatingSystem>;
    // The package identifier.
    packageId?: NullableOption<string>;
}
export interface DeviceAppManagement extends Entity {
    // Whether the account is enabled for syncing applications from the Microsoft Store for Business.
    isEnabledForMicrosoftStoreForBusiness?: boolean;
    /**
     * The locale information used to sync applications from the Microsoft Store for Business. Cultures that are specific to a
     * country/region. The names of these cultures follow RFC 4646 (Windows Vista and later). The format is
     * -&amp;lt;country/regioncode2&amp;gt;, where is a lowercase two-letter code derived from ISO 639-1 and
     * &amp;lt;country/regioncode2&amp;gt; is an uppercase two-letter code derived from ISO 3166. For example, en-US for
     * English (United States) is a specific culture.
     */
    microsoftStoreForBusinessLanguage?: NullableOption<string>;
    // The last time an application sync from the Microsoft Store for Business was completed.
    microsoftStoreForBusinessLastCompletedApplicationSyncTime?: string;
    // The last time the apps from the Microsoft Store for Business were synced successfully for the account.
    microsoftStoreForBusinessLastSuccessfulSyncDateTime?: string;
    /**
     * The end user portal information is used to sync applications from the Microsoft Store for Business to Intune Company
     * Portal. There are three options to pick from ['Company portal only', 'Company portal and private store', 'Private store
     * only']. Possible values are: none, companyPortal, privateStore.
     */
    microsoftStoreForBusinessPortalSelection?: MicrosoftStoreForBusinessPortalSelectionOptions;
    // The mobile eBook categories.
    managedEBookCategories?: NullableOption<ManagedEBookCategory[]>;
    // The Windows Enterprise Code Signing Certificate.
    enterpriseCodeSigningCertificates?: NullableOption<EnterpriseCodeSigningCertificate[]>;
    // The IOS Lob App Provisioning Configurations.
    iosLobAppProvisioningConfigurations?: NullableOption<IosLobAppProvisioningConfiguration[]>;
    // The mobile app categories.
    mobileAppCategories?: NullableOption<MobileAppCategory[]>;
    // The Managed Device Mobile Application Configurations.
    mobileAppConfigurations?: NullableOption<ManagedDeviceMobileAppConfiguration[]>;
    // The mobile apps.
    mobileApps?: NullableOption<MobileApp[]>;
    // The WinPhone Symantec Code Signing Certificate.
    symantecCodeSigningCertificate?: NullableOption<SymantecCodeSigningCertificate>;
    // The Managed eBook.
    managedEBooks?: NullableOption<ManagedEBook[]>;
    // The PolicySet of Policies and Applications
    policySets?: NullableOption<PolicySet[]>;
    // Side Loading Keys that are required for the Windows 8 and 8.1 Apps installation.
    sideLoadingKeys?: NullableOption<SideLoadingKey[]>;
    // List of Vpp tokens for this organization.
    vppTokens?: NullableOption<VppToken[]>;
    // Windows management app.
    windowsManagementApp?: NullableOption<WindowsManagementApp>;
    // Android managed app policies.
    androidManagedAppProtections?: NullableOption<AndroidManagedAppProtection[]>;
    // Default managed app policies.
    defaultManagedAppProtections?: NullableOption<DefaultManagedAppProtection[]>;
    // iOS managed app policies.
    iosManagedAppProtections?: NullableOption<IosManagedAppProtection[]>;
    // Managed app policies.
    managedAppPolicies?: NullableOption<ManagedAppPolicy[]>;
    // The managed app registrations.
    managedAppRegistrations?: NullableOption<ManagedAppRegistration[]>;
    // The managed app statuses.
    managedAppStatuses?: NullableOption<ManagedAppStatus[]>;
    // Windows information protection for apps running on devices which are MDM enrolled.
    mdmWindowsInformationProtectionPolicies?: NullableOption<MdmWindowsInformationProtectionPolicy[]>;
    // Targeted managed app configurations.
    targetedManagedAppConfigurations?: NullableOption<TargetedManagedAppConfiguration[]>;
    // Windows information protection device registrations that are not MDM enrolled.
    windowsInformationProtectionDeviceRegistrations?: NullableOption<WindowsInformationProtectionDeviceRegistration[]>;
    // Windows information protection for apps running on devices which are not MDM enrolled.
    windowsInformationProtectionPolicies?: NullableOption<WindowsInformationProtectionPolicy[]>;
    // Windows information protection wipe actions.
    windowsInformationProtectionWipeActions?: NullableOption<WindowsInformationProtectionWipeAction[]>;
    // Device app management tasks.
    deviceAppManagementTasks?: NullableOption<DeviceAppManagementTask[]>;
    // The collection of Windows Defender Application Control Supplemental Policies.
    wdacSupplementalPolicies?: NullableOption<WindowsDefenderApplicationControlSupplementalPolicy[]>;
}
export interface ManagedEBookCategory extends Entity {
    // The name of the eBook category.
    displayName?: NullableOption<string>;
    // The date and time the ManagedEBookCategory was last modified.
    lastModifiedDateTime?: string;
}
export interface EnterpriseCodeSigningCertificate extends Entity {
    // The Windows Enterprise Code-Signing Certificate in the raw data format.
    content?: NullableOption<number>;
    // The Cert Expiration Date.
    expirationDateTime?: string;
    // The Issuer value for the cert.
    issuer?: NullableOption<string>;
    // The Issuer Name for the cert.
    issuerName?: NullableOption<string>;
    // The Certificate Status Provisioned or not Provisioned. Possible values are: notProvisioned, provisioned.
    status?: CertificateStatus;
    // The Subject Value for the cert.
    subject?: NullableOption<string>;
    // The Subject Name for the cert.
    subjectName?: NullableOption<string>;
    // The date time of CodeSigning Cert when it is uploaded.
    uploadDateTime?: string;
}
// tslint:disable-next-line: interface-name
export interface IosLobAppProvisioningConfiguration extends Entity {
    // DateTime the object was created.
    createdDateTime?: string;
    // Admin provided description of the Device Configuration.
    description?: NullableOption<string>;
    // Admin provided name of the device configuration.
    displayName?: string;
    // Optional profile expiration date and time.
    expirationDateTime?: NullableOption<string>;
    // DateTime the object was last modified.
    lastModifiedDateTime?: string;
    // Payload. (UTF8 encoded byte array)
    payload?: number;
    // Payload file name (.mobileprovision
    payloadFileName?: string;
    // List of Scope Tags for this iOS LOB app provisioning configuration entity.
    roleScopeTagIds?: NullableOption<string[]>;
    // Version of the device configuration.
    version?: number;
    // The associated group assignments for IosLobAppProvisioningConfiguration.
    assignments?: NullableOption<IosLobAppProvisioningConfigurationAssignment[]>;
    // The list of device installation states for this mobile app configuration.
    deviceStatuses?: NullableOption<ManagedDeviceMobileAppConfigurationDeviceStatus[]>;
    // The associated group assignments.
    groupAssignments?: NullableOption<MobileAppProvisioningConfigGroupAssignment[]>;
    // The list of user installation states for this mobile app configuration.
    userStatuses?: NullableOption<ManagedDeviceMobileAppConfigurationUserStatus[]>;
}
export interface MobileAppCategory extends Entity {
    // The name of the app category.
    displayName?: NullableOption<string>;
    // The date and time the mobileAppCategory was last modified.
    lastModifiedDateTime?: string;
}
export interface SymantecCodeSigningCertificate extends Entity {
    // The Windows Symantec Code-Signing Certificate in the raw data format.
    content?: NullableOption<number>;
    // The Cert Expiration Date.
    expirationDateTime?: string;
    // The Issuer value for the cert.
    issuer?: NullableOption<string>;
    // The Issuer Name for the cert.
    issuerName?: NullableOption<string>;
    // The Password required for .pfx file.
    password?: NullableOption<string>;
    // The Cert Status Provisioned or not Provisioned. Possible values are: notProvisioned, provisioned.
    status?: CertificateStatus;
    // The Subject value for the cert.
    subject?: NullableOption<string>;
    // The Subject Name for the cert.
    subjectName?: NullableOption<string>;
    // The Type of the CodeSigning Cert as Symantec Cert.
    uploadDateTime?: string;
}
export interface ManagedEBook extends Entity {
    // The date and time when the eBook file was created.
    createdDateTime?: string;
    // Description.
    description?: NullableOption<string>;
    // Name of the eBook.
    displayName?: string;
    // The more information Url.
    informationUrl?: NullableOption<string>;
    // Book cover.
    largeCover?: NullableOption<MimeContent>;
    // The date and time when the eBook was last modified.
    lastModifiedDateTime?: string;
    // The privacy statement Url.
    privacyInformationUrl?: NullableOption<string>;
    // The date and time when the eBook was published.
    publishedDateTime?: string;
    // Publisher.
    publisher?: NullableOption<string>;
    // The list of assignments for this eBook.
    assignments?: NullableOption<ManagedEBookAssignment[]>;
    // The list of categories for this eBook.
    categories?: NullableOption<ManagedEBookCategory[]>;
    // The list of installation states for this eBook.
    deviceStates?: NullableOption<DeviceInstallState[]>;
    // Mobile App Install Summary.
    installSummary?: NullableOption<EBookInstallSummary>;
    // The list of installation states for this eBook.
    userStateSummary?: NullableOption<UserInstallStateSummary[]>;
}
export interface PolicySet extends Entity {
    // Creation time of the PolicySet.
    createdDateTime?: string;
    // Description of the PolicySet.
    description?: NullableOption<string>;
    // DisplayName of the PolicySet.
    displayName?: string;
    // Error code if any occured. Possible values are: noError, unauthorized, notFound, deleted.
    errorCode?: ErrorCode;
    // Tags of the guided deployment
    guidedDeploymentTags?: NullableOption<string[]>;
    // Last modified time of the PolicySet.
    lastModifiedDateTime?: string;
    // RoleScopeTags of the PolicySet
    roleScopeTags?: NullableOption<string[]>;
    /**
     * Validation/assignment status of the PolicySet. Possible values are: unknown, validating, partialSuccess, success,
     * error, notAssigned.
     */
    status?: PolicySetStatus;
    // Assignments of the PolicySet.
    assignments?: NullableOption<PolicySetAssignment[]>;
    // Items of the PolicySet with maximum count 100.
    items?: NullableOption<PolicySetItem[]>;
}
export interface SideLoadingKey extends Entity {
    // Side Loading Key description displayed to the ITPro Admins..
    description?: NullableOption<string>;
    // Side Loading Key Name displayed to the ITPro Admins.
    displayName?: NullableOption<string>;
    // Side Loading Key Last Updated Date displayed to the ITPro Admins.
    lastUpdatedDateTime?: NullableOption<string>;
    // Side Loading Key Total Activation displayed to the ITPro Admins.
    totalActivation?: number;
    // Side Loading Key Value, it is 5x5 value, seperated by hiphens.
    value?: NullableOption<string>;
}
export interface VppToken extends Entity {
    // The apple Id associated with the given Apple Volume Purchase Program Token.
    appleId?: NullableOption<string>;
    // Whether or not apps for the VPP token will be automatically updated.
    automaticallyUpdateApps?: boolean;
    // Admin consent to allow claiming token management from external MDM.
    claimTokenManagementFromExternalMdm?: boolean;
    // Whether or not apps for the VPP token will be automatically updated.
    countryOrRegion?: NullableOption<string>;
    // Consent granted for data sharing with the Apple Volume Purchase Program.
    dataSharingConsentGranted?: boolean;
    // An admin specified token friendly name.
    displayName?: NullableOption<string>;
    // The expiration date time of the Apple Volume Purchase Program Token.
    expirationDateTime?: string;
    // Last modification date time associated with the Apple Volume Purchase Program Token.
    lastModifiedDateTime?: string;
    /**
     * The last time when an application sync was done with the Apple volume purchase program service using the the Apple
     * Volume Purchase Program Token.
     */
    lastSyncDateTime?: string;
    /**
     * Current sync status of the last application sync which was triggered using the Apple Volume Purchase Program Token.
     * Possible values are: none, inProgress, completed, failed. Possible values are: none, inProgress, completed, failed.
     */
    lastSyncStatus?: VppTokenSyncStatus;
    // Token location returned from Apple VPP.
    locationName?: NullableOption<string>;
    // The organization associated with the Apple Volume Purchase Program Token
    organizationName?: NullableOption<string>;
    // Role Scope Tags IDs assigned to this entity.
    roleScopeTagIds?: NullableOption<string[]>;
    /**
     * Current state of the Apple Volume Purchase Program Token. Possible values are: unknown, valid, expired, invalid,
     * assignedToExternalMDM. Possible values are: unknown, valid, expired, invalid, assignedToExternalMDM,
     * duplicateLocationId.
     */
    state?: VppTokenState;
    // The Apple Volume Purchase Program Token string downloaded from the Apple Volume Purchase Program.
    token?: NullableOption<string>;
    // The collection of statuses of the actions performed on the Apple Volume Purchase Program Token.
    tokenActionResults?: NullableOption<VppTokenActionResult[]>;
    /**
     * The type of volume purchase program which the given Apple Volume Purchase Program Token is associated with. Possible
     * values are: business, education. Possible values are: business, education.
     */
    vppTokenAccountType?: VppTokenAccountType;
}
export interface WindowsManagementApp extends Entity {
    // Windows management app available version.
    availableVersion?: NullableOption<string>;
    // Managed Installer Status. Possible values are: disabled, enabled.
    managedInstaller?: ManagedInstallerStatus;
    // Managed Installer Configured Date Time
    managedInstallerConfiguredDateTime?: NullableOption<string>;
    // The list of health states for installed Windows management app.
    healthStates?: NullableOption<WindowsManagementAppHealthState[]>;
}
export interface ManagedAppPolicy extends Entity {
    // The date and time the policy was created.
    createdDateTime?: string;
    // The policy's description.
    description?: NullableOption<string>;
    // Policy display name.
    displayName?: string;
    // Last time the policy was modified.
    lastModifiedDateTime?: string;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // Version of the entity.
    version?: NullableOption<string>;
}
export interface ManagedAppProtection extends ManagedAppPolicy {
    // Data storage locations where a user may store managed data.
    allowedDataIngestionLocations?: ManagedAppDataIngestionLocation[];
    // Data storage locations where a user may store managed data.
    allowedDataStorageLocations?: ManagedAppDataStorageLocation[];
    // Sources from which data is allowed to be transferred. Possible values are: allApps, managedApps, none.
    allowedInboundDataTransferSources?: ManagedAppDataTransferLevel;
    /**
     * Specify the number of characters that may be cut or copied from Org data and accounts to any application. This setting
     * overrides the AllowedOutboundClipboardSharingLevel restriction. Default value of '0' means no exception is allowed.
     */
    allowedOutboundClipboardSharingExceptionLength?: number;
    /**
     * The level to which the clipboard may be shared between apps on the managed device. Possible values are: allApps,
     * managedAppsWithPasteIn, managedApps, blocked.
     */
    allowedOutboundClipboardSharingLevel?: ManagedAppClipboardSharingLevel;
    // Destinations to which data is allowed to be transferred. Possible values are: allApps, managedApps, none.
    allowedOutboundDataTransferDestinations?: ManagedAppDataTransferLevel;
    /**
     * Defines a managed app behavior, either block or wipe, when the device is either rooted or jailbroken, if
     * DeviceComplianceRequired is set to true. Possible values are: block, wipe, warn.
     */
    appActionIfDeviceComplianceRequired?: ManagedAppRemediationAction;
    /**
     * Defines a managed app behavior, either block or wipe, based on maximum number of incorrect pin retry attempts. Possible
     * values are: block, wipe, warn.
     */
    appActionIfMaximumPinRetriesExceeded?: ManagedAppRemediationAction;
    /**
     * If set, it will specify what action to take in the case where the user is unable to checkin because their
     * authentication token is invalid. This happens when the user is deleted or disabled in AAD. Possible values are: block,
     * wipe, warn.
     */
    appActionIfUnableToAuthenticateUser?: NullableOption<ManagedAppRemediationAction>;
    // Indicates whether a user can bring data into org documents.
    blockDataIngestionIntoOrganizationDocuments?: boolean;
    // Indicates whether contacts can be synced to the user's device.
    contactSyncBlocked?: boolean;
    // Indicates whether the backup of a managed app's data is blocked.
    dataBackupBlocked?: boolean;
    // Indicates whether device compliance is required.
    deviceComplianceRequired?: boolean;
    /**
     * The classes of dialer apps that are allowed to click-to-open a phone number. Possible values are: allApps, managedApps,
     * customApp, blocked.
     */
    dialerRestrictionLevel?: ManagedAppPhoneNumberRedirectLevel;
    // Indicates whether use of the app pin is required if the device pin is set.
    disableAppPinIfDevicePinIsSet?: boolean;
    // Indicates whether use of the fingerprint reader is allowed in place of a pin if PinRequired is set to True.
    fingerprintBlocked?: boolean;
    /**
     * Indicates in which managed browser(s) that internet links should be opened. When this property is configured,
     * ManagedBrowserToOpenLinksRequired should be true. Possible values are: notConfigured, microsoftEdge.
     */
    managedBrowser?: ManagedBrowserType;
    /**
     * Indicates whether internet links should be opened in the managed browser app, or any custom browser specified by
     * CustomBrowserProtocol (for iOS) or CustomBrowserPackageId/CustomBrowserDisplayName (for Android)
     */
    managedBrowserToOpenLinksRequired?: boolean;
    /**
     * Maximum allowed device threat level, as reported by the MTD app. Possible values are: notConfigured, secured, low,
     * medium, high.
     */
    maximumAllowedDeviceThreatLevel?: ManagedAppDeviceThreatLevel;
    // Maximum number of incorrect pin retry attempts before the managed app is either blocked or wiped.
    maximumPinRetries?: number;
    // Versions bigger than the specified version will block the managed app from accessing company data.
    maximumRequiredOsVersion?: NullableOption<string>;
    // Versions bigger than the specified version will block the managed app from accessing company data.
    maximumWarningOsVersion?: NullableOption<string>;
    // Versions bigger than the specified version will block the managed app from accessing company data.
    maximumWipeOsVersion?: NullableOption<string>;
    // Minimum pin length required for an app-level pin if PinRequired is set to True
    minimumPinLength?: number;
    // Versions less than the specified version will block the managed app from accessing company data.
    minimumRequiredAppVersion?: NullableOption<string>;
    // Versions less than the specified version will block the managed app from accessing company data.
    minimumRequiredOsVersion?: NullableOption<string>;
    // Versions less than the specified version will result in warning message on the managed app.
    minimumWarningAppVersion?: NullableOption<string>;
    // Versions less than the specified version will result in warning message on the managed app from accessing company data.
    minimumWarningOsVersion?: NullableOption<string>;
    // Versions less than or equal to the specified version will wipe the managed app and the associated company data.
    minimumWipeAppVersion?: NullableOption<string>;
    // Versions less than or equal to the specified version will wipe the managed app and the associated company data.
    minimumWipeOsVersion?: NullableOption<string>;
    /**
     * Determines what action to take if the mobile threat defense threat threshold isn't met. Warn isn't a supported value
     * for this property. Possible values are: block, wipe, warn.
     */
    mobileThreatDefenseRemediationAction?: ManagedAppRemediationAction;
    // Specify app notification restriction. Possible values are: allow, blockOrganizationalData, block.
    notificationRestriction?: ManagedAppNotificationRestriction;
    // Indicates whether organizational credentials are required for app use.
    organizationalCredentialsRequired?: boolean;
    // TimePeriod before the all-level pin must be reset if PinRequired is set to True.
    periodBeforePinReset?: string;
    // The period after which access is checked when the device is not connected to the internet.
    periodOfflineBeforeAccessCheck?: string;
    // The amount of time an app is allowed to remain disconnected from the internet before all managed data it is wiped.
    periodOfflineBeforeWipeIsEnforced?: string;
    // The period after which access is checked when the device is connected to the internet.
    periodOnlineBeforeAccessCheck?: string;
    /**
     * Character set which may be used for an app-level pin if PinRequired is set to True. Possible values are: numeric,
     * alphanumericAndSymbol.
     */
    pinCharacterSet?: ManagedAppPinCharacterSet;
    // Indicates whether an app-level pin is required.
    pinRequired?: boolean;
    // Timeout in minutes for an app pin instead of non biometrics passcode
    pinRequiredInsteadOfBiometricTimeout?: NullableOption<string>;
    // Requires a pin to be unique from the number specified in this property.
    previousPinBlockCount?: number;
    // Indicates whether printing is allowed from managed apps.
    printBlocked?: boolean;
    // Indicates whether users may use the 'Save As' menu item to save a copy of protected files.
    saveAsBlocked?: boolean;
    // Indicates whether simplePin is blocked.
    simplePinBlocked?: boolean;
}
export interface TargetedManagedAppProtection extends ManagedAppProtection {
    // Public Apps selection: group or individual
    appGroupType?: TargetedManagedAppGroupType;
    // Indicates if the policy is deployed to any inclusion groups or not.
    isAssigned?: boolean;
    /**
     * The intended app management levels for this policy. Possible values are: unspecified, unmanaged, mdm,
     * androidEnterprise.
     */
    targetedAppManagementLevels?: AppManagementLevel;
    // Navigation property to list of inclusion and exclusion groups to which the policy is deployed.
    assignments?: NullableOption<TargetedManagedAppPolicyAssignment[]>;
}
export interface AndroidManagedAppProtection extends TargetedManagedAppProtection {
    // Semicolon seperated list of device manufacturers allowed, as a string, for the managed app to work.
    allowedAndroidDeviceManufacturers?: NullableOption<string>;
    // List of device models allowed, as a string, for the managed app to work.
    allowedAndroidDeviceModels?: NullableOption<string[]>;
    /**
     * Defines a managed app behavior, either block or wipe, if the specified device manufacturer is not allowed. Possible
     * values are: block, wipe, warn.
     */
    appActionIfAndroidDeviceManufacturerNotAllowed?: ManagedAppRemediationAction;
    // Defines a managed app behavior, either block or wipe, if the specified device model is not allowed.
    appActionIfAndroidDeviceModelNotAllowed?: ManagedAppRemediationAction;
    /**
     * Defines a managed app behavior, either warn or block, if the specified Android App Verification requirment fails.
     * Possible values are: block, wipe, warn.
     */
    appActionIfAndroidSafetyNetAppsVerificationFailed?: ManagedAppRemediationAction;
    /**
     * Defines a managed app behavior, either warn or block, if the specified Android SafetyNet Attestation requirment fails.
     * Possible values are: block, wipe, warn.
     */
    appActionIfAndroidSafetyNetDeviceAttestationFailed?: ManagedAppRemediationAction;
    /**
     * Defines a managed app behavior, either warn, block or wipe, if the screen lock is required on android device but is not
     * set.
     */
    appActionIfDeviceLockNotSet?: ManagedAppRemediationAction;
    /**
     * If Keyboard Restriction is enabled, only keyboards in this approved list will be allowed. A key should be Android
     * package id for a keyboard and value should be a friendly name
     */
    approvedKeyboards?: NullableOption<KeyValuePair[]>;
    // Indicates whether use of the biometric authentication is allowed in place of a pin if PinRequired is set to True.
    biometricAuthenticationBlocked?: boolean;
    // Maximum number of days Company Portal update can be deferred on the device or app access will be blocked.
    blockAfterCompanyPortalUpdateDeferralInDays?: number;
    // Friendly name of the preferred custom browser to open weblink on Android.
    customBrowserDisplayName?: NullableOption<string>;
    // Unique identifier of a custom browser to open weblink on Android.
    customBrowserPackageId?: NullableOption<string>;
    // Friendly name of a custom dialer app to click-to-open a phone number on Android.
    customDialerAppDisplayName?: NullableOption<string>;
    // PackageId of a custom dialer app to click-to-open a phone number on Android.
    customDialerAppPackageId?: NullableOption<string>;
    // Count of apps to which the current policy is deployed.
    deployedAppCount?: number;
    // Defines if any kind of lock must be required on android device
    deviceLockRequired?: boolean;
    // When this setting is enabled, app level encryption is disabled if device level encryption is enabled
    disableAppEncryptionIfDeviceEncryptionIsEnabled?: boolean;
    // Indicates whether application data for managed apps should be encrypted
    encryptAppData?: boolean;
    // App packages in this list will be exempt from the policy and will be able to receive data from managed apps.
    exemptedAppPackages?: NullableOption<KeyValuePair[]>;
    // Indicates if keyboard restriction is enabled. If enabled list of approved keyboards must be provided as well.
    keyboardsRestricted?: boolean;
    // Minimum version of the Company portal that must be installed on the device or app access will be blocked
    minimumRequiredCompanyPortalVersion?: NullableOption<string>;
    // Define the oldest required Android security patch level a user can have to gain secure access to the app.
    minimumRequiredPatchVersion?: NullableOption<string>;
    // Minimum version of the Company portal that must be installed on the device or the user will receive a warning
    minimumWarningCompanyPortalVersion?: NullableOption<string>;
    // Define the oldest recommended Android security patch level a user can have for secure access to the app.
    minimumWarningPatchVersion?: NullableOption<string>;
    // Minimum version of the Company portal that must be installed on the device or the company data on the app will be wiped
    minimumWipeCompanyPortalVersion?: NullableOption<string>;
    /**
     * Android security patch level less than or equal to the specified value will wipe the managed app and the associated
     * company data.
     */
    minimumWipePatchVersion?: NullableOption<string>;
    /**
     * Defines the Android SafetyNet Apps Verification requirement for a managed app to work. Possible values are: none,
     * enabled.
     */
    requiredAndroidSafetyNetAppsVerificationType?: AndroidManagedAppSafetyNetAppsVerificationType;
    /**
     * Defines the Android SafetyNet Device Attestation requirement for a managed app to work. Possible values are: none,
     * basicIntegrity, basicIntegrityAndDeviceCertification.
     */
    requiredAndroidSafetyNetDeviceAttestationType?: AndroidManagedAppSafetyNetDeviceAttestationType;
    // Defines the Android SafetyNet evaluation type requirement for a managed app to work.
    requiredAndroidSafetyNetEvaluationType?: AndroidManagedAppSafetyNetEvaluationType;
    // Indicates whether a managed user can take screen captures of managed apps
    screenCaptureBlocked?: boolean;
    // Maximum number of days Company Portal update can be deferred on the device or the user will receive the warning
    warnAfterCompanyPortalUpdateDeferralInDays?: number;
    // Maximum number of days Company Portal update can be deferred on the device or the company data on the app will be wiped
    wipeAfterCompanyPortalUpdateDeferralInDays?: number;
    // List of apps to which the policy is deployed.
    apps?: NullableOption<ManagedMobileApp[]>;
    // Navigation property to deployment summary of the configuration.
    deploymentSummary?: NullableOption<ManagedAppPolicyDeploymentSummary>;
}
export interface DefaultManagedAppProtection extends ManagedAppProtection {
    // Semicolon seperated list of device manufacturers allowed, as a string, for the managed app to work. (Android only)
    allowedAndroidDeviceManufacturers?: NullableOption<string>;
    // List of device models allowed, as a string, for the managed app to work. (Android Only)
    allowedAndroidDeviceModels?: NullableOption<string[]>;
    // Semicolon seperated list of device models allowed, as a string, for the managed app to work. (iOS Only)
    allowedIosDeviceModels?: NullableOption<string>;
    /**
     * Defines a managed app behavior, either block or wipe, if the specified device manufacturer is not allowed. (Android
     * only). Possible values are: block, wipe, warn.
     */
    appActionIfAndroidDeviceManufacturerNotAllowed?: ManagedAppRemediationAction;
    /**
     * Defines a managed app behavior, either block or wipe, if the specified device model is not allowed. (Android Only).
     * Possible values are: block, wipe, warn.
     */
    appActionIfAndroidDeviceModelNotAllowed?: ManagedAppRemediationAction;
    /**
     * Defines a managed app behavior, either warn or block, if the specified Android App Verification requirement fails.
     * Possible values are: block, wipe, warn.
     */
    appActionIfAndroidSafetyNetAppsVerificationFailed?: ManagedAppRemediationAction;
    /**
     * Defines a managed app behavior, either warn or block, if the specified Android SafetyNet Attestation requirement fails.
     * Possible values are: block, wipe, warn.
     */
    appActionIfAndroidSafetyNetDeviceAttestationFailed?: ManagedAppRemediationAction;
    /**
     * Defines a managed app behavior, either warn, block or wipe, if the screen lock is required on device but is not set.
     * (android only). Possible values are: block, wipe, warn.
     */
    appActionIfDeviceLockNotSet?: ManagedAppRemediationAction;
    /**
     * Defines a managed app behavior, either block or wipe, if the specified device model is not allowed. (iOS Only).
     * Possible values are: block, wipe, warn.
     */
    appActionIfIosDeviceModelNotAllowed?: ManagedAppRemediationAction;
    /**
     * Type of encryption which should be used for data in a managed app. (iOS Only). Possible values are: useDeviceSettings,
     * afterDeviceRestart, whenDeviceLockedExceptOpenFiles, whenDeviceLocked.
     */
    appDataEncryptionType?: ManagedAppDataEncryptionType;
    /**
     * Indicates whether use of the biometric authentication is allowed in place of a pin if PinRequired is set to True.
     * (Android Only)
     */
    biometricAuthenticationBlocked?: boolean;
    // Maximum number of days Company Portal update can be deferred on the device or app access will be blocked.
    blockAfterCompanyPortalUpdateDeferralInDays?: number;
    // Friendly name of the preferred custom browser to open weblink on Android. (Android only)
    customBrowserDisplayName?: NullableOption<string>;
    // Unique identifier of a custom browser to open weblink on Android. (Android only)
    customBrowserPackageId?: NullableOption<string>;
    // A custom browser protocol to open weblink on iOS. (iOS only)
    customBrowserProtocol?: NullableOption<string>;
    // Friendly name of a custom dialer app to click-to-open a phone number on Android.
    customDialerAppDisplayName?: NullableOption<string>;
    // PackageId of a custom dialer app to click-to-open a phone number on Android.
    customDialerAppPackageId?: NullableOption<string>;
    // Protocol of a custom dialer app to click-to-open a phone number on iOS, for example, skype:.
    customDialerAppProtocol?: NullableOption<string>;
    // A set of string key and string value pairs to be sent to the affected users, unalterned by this service
    customSettings?: KeyValuePair[];
    // Count of apps to which the current policy is deployed.
    deployedAppCount?: number;
    // Defines if any kind of lock must be required on device. (android only)
    deviceLockRequired?: boolean;
    // When this setting is enabled, app level encryption is disabled if device level encryption is enabled. (Android only)
    disableAppEncryptionIfDeviceEncryptionIsEnabled?: boolean;
    /**
     * Disable protection of data transferred to other apps through IOS OpenIn option. This setting is only allowed to be True
     * when AllowedOutboundDataTransferDestinations is set to ManagedApps. (iOS Only)
     */
    disableProtectionOfManagedOutboundOpenInData?: boolean;
    // Indicates whether managed-app data should be encrypted. (Android only)
    encryptAppData?: boolean;
    /**
     * Android App packages in this list will be exempt from the policy and will be able to receive data from managed apps.
     * (Android only)
     */
    exemptedAppPackages?: NullableOption<KeyValuePair[]>;
    // iOS Apps in this list will be exempt from the policy and will be able to receive data from managed apps. (iOS Only)
    exemptedAppProtocols?: NullableOption<KeyValuePair[]>;
    // Indicates whether use of the FaceID is allowed in place of a pin if PinRequired is set to True. (iOS Only)
    faceIdBlocked?: boolean;
    /**
     * Defines if open-in operation is supported from the managed app to the filesharing locations selected. This setting only
     * applies when AllowedOutboundDataTransferDestinations is set to ManagedApps and
     * DisableProtectionOfManagedOutboundOpenInData is set to False. (iOS Only)
     */
    filterOpenInToOnlyManagedApps?: boolean;
    // Minimum version of the Company portal that must be installed on the device or app access will be blocked
    minimumRequiredCompanyPortalVersion?: NullableOption<string>;
    /**
     * Define the oldest required Android security patch level a user can have to gain secure access to the app. (Android
     * only)
     */
    minimumRequiredPatchVersion?: NullableOption<string>;
    // Versions less than the specified version will block the managed app from accessing company data. (iOS Only)
    minimumRequiredSdkVersion?: NullableOption<string>;
    // Minimum version of the Company portal that must be installed on the device or the user will receive a warning
    minimumWarningCompanyPortalVersion?: NullableOption<string>;
    // Define the oldest recommended Android security patch level a user can have for secure access to the app. (Android only)
    minimumWarningPatchVersion?: NullableOption<string>;
    // Minimum version of the Company portal that must be installed on the device or the company data on the app will be wiped
    minimumWipeCompanyPortalVersion?: NullableOption<string>;
    /**
     * Android security patch level less than or equal to the specified value will wipe the managed app and the associated
     * company data. (Android only)
     */
    minimumWipePatchVersion?: NullableOption<string>;
    // Versions less than the specified version will block the managed app from accessing company data.
    minimumWipeSdkVersion?: NullableOption<string>;
    /**
     * Protect incoming data from unknown source. This setting is only allowed to be True when
     * AllowedInboundDataTransferSources is set to AllApps. (iOS Only)
     */
    protectInboundDataFromUnknownSources?: boolean;
    /**
     * Defines the Android SafetyNet Apps Verification requirement for a managed app to work. Possible values are: none,
     * enabled.
     */
    requiredAndroidSafetyNetAppsVerificationType?: AndroidManagedAppSafetyNetAppsVerificationType;
    /**
     * Defines the Android SafetyNet Device Attestation requirement for a managed app to work. Possible values are: none,
     * basicIntegrity, basicIntegrityAndDeviceCertification.
     */
    requiredAndroidSafetyNetDeviceAttestationType?: AndroidManagedAppSafetyNetDeviceAttestationType;
    /**
     * Defines the Android SafetyNet evaluation type requirement for a managed app to work. (Android Only). Possible values
     * are: basic, hardwareBacked.
     */
    requiredAndroidSafetyNetEvaluationType?: AndroidManagedAppSafetyNetEvaluationType;
    // Indicates whether screen capture is blocked. (Android only)
    screenCaptureBlocked?: boolean;
    // Defines if third party keyboards are allowed while accessing a managed app. (iOS Only)
    thirdPartyKeyboardsBlocked?: boolean;
    // Maximum number of days Company Portal update can be deferred on the device or the user will receive the warning
    warnAfterCompanyPortalUpdateDeferralInDays?: number;
    // Maximum number of days Company Portal update can be deferred on the device or the company data on the app will be wiped
    wipeAfterCompanyPortalUpdateDeferralInDays?: number;
    // List of apps to which the policy is deployed.
    apps?: NullableOption<ManagedMobileApp[]>;
    // Navigation property to deployment summary of the configuration.
    deploymentSummary?: NullableOption<ManagedAppPolicyDeploymentSummary>;
}
// tslint:disable-next-line: interface-name
export interface IosManagedAppProtection extends TargetedManagedAppProtection {
    // Semicolon seperated list of device models allowed, as a string, for the managed app to work.
    allowedIosDeviceModels?: NullableOption<string>;
    /**
     * Defines a managed app behavior, either block or wipe, if the specified device model is not allowed. Possible values
     * are: block, wipe, warn.
     */
    appActionIfIosDeviceModelNotAllowed?: ManagedAppRemediationAction;
    /**
     * Type of encryption which should be used for data in a managed app. Possible values are: useDeviceSettings,
     * afterDeviceRestart, whenDeviceLockedExceptOpenFiles, whenDeviceLocked.
     */
    appDataEncryptionType?: ManagedAppDataEncryptionType;
    // A custom browser protocol to open weblink on iOS.
    customBrowserProtocol?: NullableOption<string>;
    // Protocol of a custom dialer app to click-to-open a phone number on iOS, for example, skype:.
    customDialerAppProtocol?: NullableOption<string>;
    // Count of apps to which the current policy is deployed.
    deployedAppCount?: number;
    /**
     * Disable protection of data transferred to other apps through IOS OpenIn option. This setting is only allowed to be True
     * when AllowedOutboundDataTransferDestinations is set to ManagedApps.
     */
    disableProtectionOfManagedOutboundOpenInData?: boolean;
    // Apps in this list will be exempt from the policy and will be able to receive data from managed apps.
    exemptedAppProtocols?: NullableOption<KeyValuePair[]>;
    // Indicates whether use of the FaceID is allowed in place of a pin if PinRequired is set to True.
    faceIdBlocked?: boolean;
    /**
     * Defines if open-in operation is supported from the managed app to the filesharing locations selected. This setting only
     * applies when AllowedOutboundDataTransferDestinations is set to ManagedApps and
     * DisableProtectionOfManagedOutboundOpenInData is set to False.
     */
    filterOpenInToOnlyManagedApps?: boolean;
    // Versions less than the specified version will block the managed app from accessing company data.
    minimumRequiredSdkVersion?: NullableOption<string>;
    // Versions less than the specified version will block the managed app from accessing company data.
    minimumWipeSdkVersion?: NullableOption<string>;
    /**
     * Protect incoming data from unknown source. This setting is only allowed to be True when
     * AllowedInboundDataTransferSources is set to AllApps.
     */
    protectInboundDataFromUnknownSources?: boolean;
    // Defines if third party keyboards are allowed while accessing a managed app
    thirdPartyKeyboardsBlocked?: boolean;
    // List of apps to which the policy is deployed.
    apps?: NullableOption<ManagedMobileApp[]>;
    // Navigation property to deployment summary of the configuration.
    deploymentSummary?: NullableOption<ManagedAppPolicyDeploymentSummary>;
}
export interface ManagedAppStatus extends Entity {
    // Friendly name of the status report.
    displayName?: NullableOption<string>;
    // Version of the entity.
    version?: NullableOption<string>;
}
export interface WindowsInformationProtection extends ManagedAppPolicy {
    // Specifies whether to allow Azure RMS encryption for WIP
    azureRightsManagementServicesAllowed?: boolean;
    /**
     * Specifies a recovery certificate that can be used for data recovery of encrypted files. This is the same as the data
     * recovery agent(DRA) certificate for encrypting file system(EFS)
     */
    dataRecoveryCertificate?: NullableOption<WindowsInformationProtectionDataRecoveryCertificate>;
    /**
     * WIP enforcement level.See the Enum definition for supported values. Possible values are: noProtection,
     * encryptAndAuditOnly, encryptAuditAndPrompt, encryptAuditAndBlock.
     */
    enforcementLevel?: WindowsInformationProtectionEnforcementLevel;
    // Primary enterprise domain
    enterpriseDomain?: NullableOption<string>;
    /**
     * This is the comma-separated list of internal proxy servers. For example, '157.54.14.28, 157.54.11.118, 10.202.14.167,
     * 157.53.14.163, 157.69.210.59'. These proxies have been configured by the admin to connect to specific resources on the
     * Internet. They are considered to be enterprise network locations. The proxies are only leveraged in configuring the
     * EnterpriseProxiedDomains policy to force traffic to the matched domains through these proxies
     */
    enterpriseInternalProxyServers?: NullableOption<WindowsInformationProtectionResourceCollection[]>;
    /**
     * Sets the enterprise IP ranges that define the computers in the enterprise network. Data that comes from those computers
     * will be considered part of the enterprise and protected. These locations will be considered a safe destination for
     * enterprise data to be shared to
     */
    enterpriseIPRanges?: NullableOption<WindowsInformationProtectionIPRangeCollection[]>;
    /**
     * Boolean value that tells the client to accept the configured list and not to use heuristics to attempt to find other
     * subnets. Default is false
     */
    enterpriseIPRangesAreAuthoritative?: boolean;
    /**
     * This is the list of domains that comprise the boundaries of the enterprise. Data from one of these domains that is sent
     * to a device will be considered enterprise data and protected These locations will be considered a safe destination for
     * enterprise data to be shared to
     */
    enterpriseNetworkDomainNames?: NullableOption<WindowsInformationProtectionResourceCollection[]>;
    // List of enterprise domains to be protected
    enterpriseProtectedDomainNames?: NullableOption<WindowsInformationProtectionResourceCollection[]>;
    /**
     * Contains a list of Enterprise resource domains hosted in the cloud that need to be protected. Connections to these
     * resources are considered enterprise data. If a proxy is paired with a cloud resource, traffic to the cloud resource
     * will be routed through the enterprise network via the denoted proxy server (on Port 80). A proxy server used for this
     * purpose must also be configured using the EnterpriseInternalProxyServers policy
     */
    enterpriseProxiedDomains?: NullableOption<WindowsInformationProtectionProxiedDomainCollection[]>;
    // This is a list of proxy servers. Any server not on this list is considered non-enterprise
    enterpriseProxyServers?: NullableOption<WindowsInformationProtectionResourceCollection[]>;
    /**
     * Boolean value that tells the client to accept the configured list of proxies and not try to detect other work proxies.
     * Default is false
     */
    enterpriseProxyServersAreAuthoritative?: boolean;
    /**
     * Exempt applications can also access enterprise data, but the data handled by those applications are not protected. This
     * is because some critical enterprise applications may have compatibility problems with encrypted data.
     */
    exemptApps?: NullableOption<WindowsInformationProtectionApp[]>;
    /**
     * Determines whether overlays are added to icons for WIP protected files in Explorer and enterprise only app tiles in the
     * Start menu. Starting in Windows 10, version 1703 this setting also configures the visibility of the WIP icon in the
     * title bar of a WIP-protected app
     */
    iconsVisible?: boolean;
    // This switch is for the Windows Search Indexer, to allow or disallow indexing of items
    indexingEncryptedStoresOrItemsBlocked?: boolean;
    // Indicates if the policy is deployed to any inclusion groups or not.
    isAssigned?: boolean;
    // List of domain names that can used for work or personal resource
    neutralDomainResources?: NullableOption<WindowsInformationProtectionResourceCollection[]>;
    /**
     * Protected applications can access enterprise data and the data handled by those applications are protected with
     * encryption
     */
    protectedApps?: NullableOption<WindowsInformationProtectionApp[]>;
    // Specifies whether the protection under lock feature (also known as encrypt under pin) should be configured
    protectionUnderLockConfigRequired?: boolean;
    /**
     * This policy controls whether to revoke the WIP keys when a device unenrolls from the management service. If set to 1
     * (Don't revoke keys), the keys will not be revoked and the user will continue to have access to protected files after
     * unenrollment. If the keys are not revoked, there will be no revoked file cleanup subsequently.
     */
    revokeOnUnenrollDisabled?: boolean;
    /**
     * TemplateID GUID to use for RMS encryption. The RMS template allows the IT admin to configure the details about who has
     * access to RMS-protected file and how long they have access
     */
    rightsManagementServicesTemplateId?: NullableOption<string>;
    /**
     * Specifies a list of file extensions, so that files with these extensions are encrypted when copying from an SMB share
     * within the corporate boundary
     */
    smbAutoEncryptedFileExtensions?: NullableOption<WindowsInformationProtectionResourceCollection[]>;
    // Navigation property to list of security groups targeted for policy.
    assignments?: NullableOption<TargetedManagedAppPolicyAssignment[]>;
    // Another way to input exempt apps through xml files
    exemptAppLockerFiles?: NullableOption<WindowsInformationProtectionAppLockerFile[]>;
    // Another way to input protected apps through xml files
    protectedAppLockerFiles?: NullableOption<WindowsInformationProtectionAppLockerFile[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface MdmWindowsInformationProtectionPolicy extends WindowsInformationProtection {}
export interface ManagedAppConfiguration extends ManagedAppPolicy {
    /**
     * A set of string key and string value pairs to be sent to apps for users to whom the configuration is scoped, unalterned
     * by this service
     */
    customSettings?: KeyValuePair[];
}
export interface TargetedManagedAppConfiguration extends ManagedAppConfiguration {
    // Public Apps selection: group or individual
    appGroupType?: TargetedManagedAppGroupType;
    // Count of apps to which the current policy is deployed.
    deployedAppCount?: number;
    // Indicates if the policy is deployed to any inclusion groups or not.
    isAssigned?: boolean;
    // List of apps to which the policy is deployed.
    apps?: NullableOption<ManagedMobileApp[]>;
    // Navigation property to list of inclusion and exclusion groups to which the policy is deployed.
    assignments?: NullableOption<TargetedManagedAppPolicyAssignment[]>;
    // Navigation property to deployment summary of the configuration.
    deploymentSummary?: NullableOption<ManagedAppPolicyDeploymentSummary>;
}
export interface WindowsInformationProtectionPolicy extends WindowsInformationProtection {
    // Offline interval before app data is wiped (days)
    daysWithoutContactBeforeUnenroll?: number;
    // Enrollment url for the MDM
    mdmEnrollmentUrl?: NullableOption<string>;
    /**
     * Specifies the maximum amount of time (in minutes) allowed after the device is idle that will cause the device to become
     * PIN or password locked. Range is an integer X where 0 &amp;lt;= X &amp;lt;= 999.
     */
    minutesOfInactivityBeforeDeviceLock?: number;
    /**
     * Integer value that specifies the number of past PINs that can be associated to a user account that can't be reused. The
     * largest number you can configure for this policy setting is 50. The lowest number you can configure for this policy
     * setting is 0. If this policy is set to 0, then storage of previous PINs is not required. This node was added in Windows
     * 10, version 1511. Default is 0.
     */
    numberOfPastPinsRemembered?: number;
    /**
     * The number of authentication failures allowed before the device will be wiped. A value of 0 disables device wipe
     * functionality. Range is an integer X where 4 &amp;lt;= X &amp;lt;= 16 for desktop and 0 &amp;lt;= X &amp;lt;= 999 for
     * mobile devices.
     */
    passwordMaximumAttemptCount?: number;
    /**
     * Integer value specifies the period of time (in days) that a PIN can be used before the system requires the user to
     * change it. The largest number you can configure for this policy setting is 730. The lowest number you can configure for
     * this policy setting is 0. If this policy is set to 0, then the user's PIN will never expire. This node was added in
     * Windows 10, version 1511. Default is 0.
     */
    pinExpirationDays?: number;
    /**
     * Integer value that configures the use of lowercase letters in the Windows Hello for Business PIN. Default is NotAllow.
     * Possible values are: notAllow, requireAtLeastOne, allow.
     */
    pinLowercaseLetters?: WindowsInformationProtectionPinCharacterRequirements;
    /**
     * Integer value that sets the minimum number of characters required for the PIN. Default value is 4. The lowest number
     * you can configure for this policy setting is 4. The largest number you can configure must be less than the number
     * configured in the Maximum PIN length policy setting or the number 127, whichever is the lowest.
     */
    pinMinimumLength?: number;
    /**
     * Integer value that configures the use of special characters in the Windows Hello for Business PIN. Valid special
     * characters for Windows Hello for Business PIN gestures include: ! ' # $ % &amp; ' ( ) + , - . / : ; &amp;lt; = &amp;gt;
     * ? @ [ / ] ^ ` {
     */
    pinSpecialCharacters?: WindowsInformationProtectionPinCharacterRequirements;
    /**
     * Integer value that configures the use of uppercase letters in the Windows Hello for Business PIN. Default is NotAllow.
     * Possible values are: notAllow, requireAtLeastOne, allow.
     */
    pinUppercaseLetters?: WindowsInformationProtectionPinCharacterRequirements;
    // New property in RS2, pending documentation
    revokeOnMdmHandoffDisabled?: boolean;
    // Boolean value that sets Windows Hello for Business as a method for signing into Windows.
    windowsHelloForBusinessBlocked?: boolean;
}
export interface WindowsInformationProtectionWipeAction extends Entity {
    // Last checkin time of the device that was targeted by this wipe action.
    lastCheckInDateTime?: string;
    // Wipe action status. Possible values are: none, pending, canceled, active, done, failed, notSupported.
    status?: ActionState;
    // Targeted device Mac address.
    targetedDeviceMacAddress?: NullableOption<string>;
    // Targeted device name.
    targetedDeviceName?: NullableOption<string>;
    // The DeviceRegistrationId being targeted by this wipe action.
    targetedDeviceRegistrationId?: NullableOption<string>;
    // The UserId being targeted by this wipe action.
    targetedUserId?: NullableOption<string>;
}
export interface DeviceAppManagementTask extends Entity {
    // The name or email of the admin this task is assigned to.
    assignedTo?: NullableOption<string>;
    // The category. Possible values are: unknown, advancedThreatProtection.
    category?: DeviceAppManagementTaskCategory;
    // The created date.
    createdDateTime?: string;
    // The email address of the creator.
    creator?: NullableOption<string>;
    // Notes from the creator.
    creatorNotes?: NullableOption<string>;
    // The description.
    description?: NullableOption<string>;
    // The name.
    displayName?: NullableOption<string>;
    // The due date.
    dueDateTime?: string;
    // The priority. Possible values are: none, high, low.
    priority?: DeviceAppManagementTaskPriority;
    // The status. Possible values are: unknown, pending, active, completed, rejected.
    status?: DeviceAppManagementTaskStatus;
}
export interface WindowsDefenderApplicationControlSupplementalPolicy extends Entity {
    // The WindowsDefenderApplicationControl supplemental policy content in byte array format.
    content?: NullableOption<number>;
    // The WindowsDefenderApplicationControl supplemental policy content's file name.
    contentFileName?: NullableOption<string>;
    // The date and time when the WindowsDefenderApplicationControl supplemental policy was uploaded.
    creationDateTime?: string;
    // The description of WindowsDefenderApplicationControl supplemental policy.
    description?: NullableOption<string>;
    // The display name of WindowsDefenderApplicationControl supplemental policy.
    displayName?: NullableOption<string>;
    // The date and time when the WindowsDefenderApplicationControl supplemental policy was last modified.
    lastModifiedDateTime?: string;
    // List of Scope Tags for this WindowsDefenderApplicationControl supplemental policy entity.
    roleScopeTagIds?: NullableOption<string[]>;
    // The WindowsDefenderApplicationControl supplemental policy's version.
    version?: NullableOption<string>;
    // The associated group assignments for this WindowsDefenderApplicationControl supplemental policy.
    assignments?: NullableOption<WindowsDefenderApplicationControlSupplementalPolicyAssignment[]>;
    // WindowsDefenderApplicationControl supplemental policy deployment summary.
    deploySummary?: NullableOption<WindowsDefenderApplicationControlSupplementalPolicyDeploymentSummary>;
    // The list of device deployment states for this WindowsDefenderApplicationControl supplemental policy.
    deviceStatuses?: NullableOption<WindowsDefenderApplicationControlSupplementalPolicyDeploymentStatus[]>;
}
export interface DeviceManagementCachedReportConfiguration extends Entity {
    // Time that the cached report expires
    expirationDateTime?: string;
    // Filters applied on report creation.
    filter?: NullableOption<string>;
    // Time that the cached report was last refreshed
    lastRefreshDateTime?: string;
    // Caller-managed metadata associated with the report
    metadata?: NullableOption<string>;
    // Ordering of columns in the report
    orderBy?: NullableOption<string[]>;
    // Name of the report
    reportName?: NullableOption<string>;
    // Columns selected from the report
    select?: NullableOption<string[]>;
    // Status of the cached report. Possible values are: unknown, notStarted, inProgress, completed, failed.
    status?: DeviceManagementReportStatus;
}
export interface DeviceManagementExportJob extends Entity {
    // Time that the exported report expires
    expirationDateTime?: string;
    // Filters applied on the report
    filter?: NullableOption<string>;
    // Format of the exported report. Possible values are: csv, pdf.
    format?: DeviceManagementReportFileFormat;
    /**
     * Configures how the requested export job is localized. Possible values are: localizedValuesAsAdditionalColumn,
     * replaceLocalizableValues.
     */
    localizationType?: DeviceManagementExportJobLocalizationType;
    // Name of the report
    reportName?: string;
    // Time that the exported report was requested
    requestDateTime?: string;
    // Columns selected from the report
    select?: NullableOption<string[]>;
    /**
     * A snapshot is an identifiable subset of the dataset represented by the ReportName. A sessionId or
     * CachedReportConfiguration id can be used here. If a sessionId is specified, Filter, Select, and OrderBy are applied to
     * the data represented by the sessionId. Filter, Select, and OrderBy cannot be specified together with a
     * CachedReportConfiguration id.
     */
    snapshotId?: NullableOption<string>;
    // Status of the export job. Possible values are: unknown, notStarted, inProgress, completed, failed.
    status?: DeviceManagementReportStatus;
    // Temporary location of the exported report
    url?: NullableOption<string>;
}
export interface DeviceManagementReportSchedule extends Entity {
    // Emails to which the scheduled reports are delivered
    emails?: NullableOption<string[]>;
    // Time that the delivery of the scheduled reports ends
    endDateTime?: string;
    // Filters applied on the report
    filter?: NullableOption<string>;
    // Format of the scheduled report. Possible values are: csv, pdf.
    format?: DeviceManagementReportFileFormat;
    // Ordering of columns in the report
    orderBy?: NullableOption<string[]>;
    // Frequency of scheduled report delivery. Possible values are: none, daily, weekly, monthly.
    recurrence?: DeviceManagementScheduledReportRecurrence;
    // Name of the report
    reportName?: string;
    // Name of the schedule
    reportScheduleName?: string;
    // Columns selected from the report
    select?: NullableOption<string[]>;
    // Time that the delivery of the scheduled reports starts
    startDateTime?: string;
    // Subject of the scheduled reports that are delivered
    subject?: string;
    // The Id of the User who created the report
    userId?: string;
}
// tslint:disable-next-line: interface-name
export interface IosLobApp extends MobileLobApp {
    // The iOS architecture for which this app can run on.
    applicableDeviceType?: IosDeviceType;
    // The build number of iOS Line of Business (LoB) app.
    buildNumber?: NullableOption<string>;
    // The Identity Name.
    bundleId?: NullableOption<string>;
    // The expiration time.
    expirationDateTime?: NullableOption<string>;
    // The identity version.
    identityVersion?: NullableOption<string>;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: NullableOption<IosMinimumOperatingSystem>;
    // The version number of iOS Line of Business (LoB) app.
    versionNumber?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosLobAppProvisioningConfigurationAssignment extends Entity {
    // The target group assignment defined by the admin.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface ManagedDeviceMobileAppConfigurationDeviceStatus extends Entity {
    // The DateTime when device compliance grace period expires
    complianceGracePeriodExpirationDateTime?: string;
    // Device name of the DevicePolicyStatus.
    deviceDisplayName?: NullableOption<string>;
    // The device model that is being reported
    deviceModel?: NullableOption<string>;
    // Last modified date time of the policy report.
    lastReportedDateTime?: string;
    // Platform of the device that is being reported
    platform?: number;
    /**
     * Compliance status of the policy report. Possible values are: unknown, notApplicable, compliant, remediated,
     * nonCompliant, error, conflict, notAssigned.
     */
    status?: ComplianceStatus;
    // The User Name that is being reported
    userName?: NullableOption<string>;
    // UserPrincipalName.
    userPrincipalName?: NullableOption<string>;
}
export interface MobileAppProvisioningConfigGroupAssignment extends Entity {
    // The ID of the AAD group in which the app provisioning configuration is being targeted.
    targetGroupId?: NullableOption<string>;
}
export interface ManagedDeviceMobileAppConfigurationUserStatus extends Entity {
    // Devices count for that user.
    devicesCount?: number;
    // Last modified date time of the policy report.
    lastReportedDateTime?: string;
    /**
     * Compliance status of the policy report. Possible values are: unknown, notApplicable, compliant, remediated,
     * nonCompliant, error, conflict, notAssigned.
     */
    status?: ComplianceStatus;
    // User name of the DevicePolicyStatus.
    userDisplayName?: NullableOption<string>;
    // UserPrincipalName.
    userPrincipalName?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosMobileAppConfiguration extends ManagedDeviceMobileAppConfiguration {
    // mdm app configuration Base64 binary.
    encodedSettingXml?: NullableOption<number>;
    // app configuration setting items.
    settings?: NullableOption<AppConfigurationSettingItem[]>;
}
// tslint:disable-next-line: interface-name
export interface IosStoreApp extends MobileApp {
    // The iOS architecture for which this app can run on.
    applicableDeviceType?: IosDeviceType;
    // The Apple App Store URL
    appStoreUrl?: NullableOption<string>;
    // The Identity Name.
    bundleId?: NullableOption<string>;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: NullableOption<IosMinimumOperatingSystem>;
}
// tslint:disable-next-line: interface-name
export interface IosVppApp extends MobileApp {
    // The applicable iOS Device Type.
    applicableDeviceType?: NullableOption<IosDeviceType>;
    // The store URL.
    appStoreUrl?: NullableOption<string>;
    // The Identity Name.
    bundleId?: NullableOption<string>;
    // The supported License Type.
    licensingType?: NullableOption<VppLicensingType>;
    // The VPP application release date and time.
    releaseDateTime?: NullableOption<string>;
    // Results of revoke license actions on this app.
    revokeLicenseActionResults?: NullableOption<IosVppAppRevokeLicensesActionResult[]>;
    // The total number of VPP licenses.
    totalLicenseCount?: number;
    // The number of VPP licenses in use.
    usedLicenseCount?: number;
    /**
     * The type of volume purchase program which the given Apple Volume Purchase Program Token is associated with. Possible
     * values are: business, education. Possible values are: business, education.
     */
    vppTokenAccountType?: VppTokenAccountType;
    // The Apple Id associated with the given Apple Volume Purchase Program Token.
    vppTokenAppleId?: NullableOption<string>;
    // Identifier of the VPP token associated with this app.
    vppTokenId?: NullableOption<string>;
    // The organization associated with the Apple Volume Purchase Program Token
    vppTokenOrganizationName?: NullableOption<string>;
    // The licenses assigned to this app.
    assignedLicenses?: NullableOption<IosVppAppAssignedLicense[]>;
}
// tslint:disable-next-line: interface-name
export interface IosVppAppAssignedLicense extends Entity {
    // The user email address.
    userEmailAddress?: NullableOption<string>;
    // The user ID.
    userId?: NullableOption<string>;
    // The user name.
    userName?: NullableOption<string>;
    // The user principal name.
    userPrincipalName?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosVppAppAssignedDeviceLicense extends IosVppAppAssignedLicense {
    // The device name.
    deviceName?: NullableOption<string>;
    // The managed device ID.
    managedDeviceId?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IosVppAppAssignedUserLicense extends IosVppAppAssignedLicense {}
export interface MacOSLobApp extends MobileLobApp {
    // The build number of MacOS Line of Business (LoB) app.
    buildNumber?: NullableOption<string>;
    // The bundle id.
    bundleId?: NullableOption<string>;
    // The app list in this bundle package
    childApps?: NullableOption<MacOSLobChildApp[]>;
    // The identity version.
    identityVersion?: NullableOption<string>;
    /**
     * A boolean to control whether the app's version will be used to detect the app after it is installed on a device. Set
     * this to true for macOS Line of Business (LoB) apps that use a self update feature.
     */
    ignoreVersionDetection?: boolean;
    // A boolean to control whether the app will be installed as managed (requires macOS 11.0 and other PKG restrictions).
    installAsManaged?: boolean;
    // The MD5 hash codes
    md5Hash?: NullableOption<string[]>;
    // The chunk size for MD5 hash
    md5HashChunkSize?: number;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: NullableOption<MacOSMinimumOperatingSystem>;
    // The version number of MacOS Line of Business (LoB) app.
    versionNumber?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface MacOSMdatpApp extends MobileApp {}
export interface MacOSMicrosoftEdgeApp extends MobileApp {
    // The channel to install on target devices. Possible values are: dev, beta, stable.
    channel?: MicrosoftEdgeChannel;
}
// tslint:disable-next-line: no-empty-interface
export interface MacOSOfficeSuiteApp extends MobileApp {}
export interface MacOsVppApp extends MobileApp {
    // The store URL.
    appStoreUrl?: NullableOption<string>;
    // The Identity Name.
    bundleId?: NullableOption<string>;
    // The supported License Type.
    licensingType?: NullableOption<VppLicensingType>;
    // The VPP application release date and time.
    releaseDateTime?: NullableOption<string>;
    // Results of revoke license actions on this app.
    revokeLicenseActionResults?: NullableOption<MacOsVppAppRevokeLicensesActionResult[]>;
    // The total number of VPP licenses.
    totalLicenseCount?: number;
    // The number of VPP licenses in use.
    usedLicenseCount?: number;
    /**
     * The type of volume purchase program which the given Apple Volume Purchase Program Token is associated with. Possible
     * values are: business, education. Possible values are: business, education.
     */
    vppTokenAccountType?: VppTokenAccountType;
    // The Apple Id associated with the given Apple Volume Purchase Program Token.
    vppTokenAppleId?: NullableOption<string>;
    // Identifier of the VPP token associated with this app.
    vppTokenId?: NullableOption<string>;
    // The organization associated with the Apple Volume Purchase Program Token
    vppTokenOrganizationName?: NullableOption<string>;
    // The licenses assigned to this app.
    assignedLicenses?: NullableOption<MacOsVppAppAssignedLicense[]>;
}
export interface MacOsVppAppAssignedLicense extends Entity {
    // The user email address.
    userEmailAddress?: NullableOption<string>;
    // The user ID.
    userId?: NullableOption<string>;
    // The user name.
    userName?: NullableOption<string>;
    // The user principal name.
    userPrincipalName?: NullableOption<string>;
}
export interface ManagedApp extends MobileApp {
    // The Application's availability. Possible values are: global, lineOfBusiness.
    appAvailability?: ManagedAppAvailability;
    // The Application's version.
    version?: NullableOption<string>;
}
export interface ManagedMobileLobApp extends ManagedApp {
    // The internal committed content version.
    committedContentVersion?: NullableOption<string>;
    // The name of the main Lob application file.
    fileName?: NullableOption<string>;
    // The total size, including all uploaded files.
    size?: number;
    // The list of content versions for this app.
    contentVersions?: NullableOption<MobileAppContent[]>;
}
export interface ManagedAndroidLobApp extends ManagedMobileLobApp {
    // The Identity Name.
    identityName?: NullableOption<string>;
    // The identity version.
    identityVersion?: NullableOption<string>;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: NullableOption<AndroidMinimumOperatingSystem>;
    // The package identifier.
    packageId?: NullableOption<string>;
    // The version code of managed Android Line of Business (LoB) app.
    versionCode?: NullableOption<string>;
    // The version name of managed Android Line of Business (LoB) app.
    versionName?: NullableOption<string>;
}
export interface ManagedAndroidStoreApp extends ManagedApp {
    // The Android AppStoreUrl.
    appStoreUrl?: string;
    // The value for the minimum supported operating system.
    minimumSupportedOperatingSystem?: AndroidMinimumOperatingSystem;
    // The app's package ID.
    packageId?: NullableOption<string>;
}
export interface ManagedDeviceMobileAppConfigurationAssignment extends Entity {
    // Assignment target that the T&amp;C policy is assigned to.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface ManagedDeviceMobileAppConfigurationDeviceSummary extends Entity {
    // Version of the policy for that overview
    configurationVersion?: number;
    // Number of devices in conflict
    conflictCount?: number;
    // Number of error devices
    errorCount?: number;
    // Number of failed devices
    failedCount?: number;
    // Last update time
    lastUpdateDateTime?: string;
    // Number of not applicable devices
    notApplicableCount?: number;
    // Number of not applicable devices due to mismatch platform and policy
    notApplicablePlatformCount?: number;
    // Number of pending devices
    pendingCount?: number;
    // Number of succeeded devices
    successCount?: number;
}
export interface ManagedDeviceMobileAppConfigurationUserSummary extends Entity {
    // Version of the policy for that overview
    configurationVersion?: number;
    // Number of users in conflict
    conflictCount?: number;
    // Number of error Users
    errorCount?: number;
    // Number of failed Users
    failedCount?: number;
    // Last update time
    lastUpdateDateTime?: string;
    // Number of not applicable users
    notApplicableCount?: number;
    // Number of pending Users
    pendingCount?: number;
    // Number of succeeded Users
    successCount?: number;
}
export interface ManagedIOSLobApp extends ManagedMobileLobApp {
    // The iOS architecture for which this app can run on.
    applicableDeviceType?: IosDeviceType;
    // The build number of managed iOS Line of Business (LoB) app.
    buildNumber?: NullableOption<string>;
    // The Identity Name.
    bundleId?: NullableOption<string>;
    // The expiration time.
    expirationDateTime?: NullableOption<string>;
    // The identity version.
    identityVersion?: NullableOption<string>;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: NullableOption<IosMinimumOperatingSystem>;
    // The version number of managed iOS Line of Business (LoB) app.
    versionNumber?: NullableOption<string>;
}
export interface ManagedIOSStoreApp extends ManagedApp {
    // The iOS architecture for which this app can run on.
    applicableDeviceType?: IosDeviceType;
    // The Apple AppStoreUrl.
    appStoreUrl?: string;
    // The app's Bundle ID.
    bundleId?: NullableOption<string>;
    // The value for the minimum supported operating system.
    minimumSupportedOperatingSystem?: IosMinimumOperatingSystem;
}
export interface MobileAppContent extends Entity {
    // The collection of contained apps in a MobileLobApp acting as a package.
    containedApps?: NullableOption<MobileContainedApp[]>;
    // The list of files for this app content version.
    files?: NullableOption<MobileAppContentFile[]>;
}
export interface MicrosoftStoreForBusinessApp extends MobileApp {
    // The app license type. Possible values are: offline, online.
    licenseType?: MicrosoftStoreForBusinessLicenseType;
    // The supported License Type.
    licensingType?: NullableOption<VppLicensingType>;
    // The app package identifier
    packageIdentityName?: NullableOption<string>;
    // The app product key
    productKey?: NullableOption<string>;
    // The total number of Microsoft Store for Business licenses.
    totalLicenseCount?: number;
    // The number of Microsoft Store for Business licenses in use.
    usedLicenseCount?: number;
    // The collection of contained apps in a mobileApp acting as a package.
    containedApps?: NullableOption<MobileContainedApp[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface MobileContainedApp extends Entity {}
export interface MicrosoftStoreForBusinessContainedApp extends MobileContainedApp {
    // The app user model ID of the contained app of a MicrosoftStoreForBusinessApp.
    appUserModelId?: NullableOption<string>;
}
export interface MobileAppAssignment extends Entity {
    /**
     * The install intent defined by the admin. Possible values are: available, required, uninstall,
     * availableWithoutEnrollment.
     */
    intent?: InstallIntent;
    // The settings for target assignment defined by the admin.
    settings?: NullableOption<MobileAppAssignmentSettings>;
    // The resource type which is the source for the assignment. Possible values are: direct, policySets.
    source?: DeviceAndAppManagementAssignmentSource;
    // The identifier of the source of the assignment.
    sourceId?: NullableOption<string>;
    // The target group assignment defined by the admin.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface MobileAppInstallStatus extends Entity {
    // Device ID
    deviceId?: NullableOption<string>;
    // Device name
    deviceName?: NullableOption<string>;
    // Human readable version of the application
    displayVersion?: NullableOption<string>;
    // The error code for install or uninstall failures.
    errorCode?: number;
    /**
     * The install state of the app. Possible values are: installed, failed, notInstalled, uninstallFailed, pendingInstall,
     * unknown, notApplicable.
     */
    installState?: ResultantAppState;
    /**
     * The install state detail of the app. Possible values are: noAdditionalDetails, dependencyFailedToInstall,
     * dependencyWithRequirementsNotMet, dependencyPendingReboot, dependencyWithAutoInstallDisabled,
     * iosAppStoreUpdateFailedToInstall, vppAppHasUpdateAvailable, userRejectedUpdate, seeInstallErrorCode,
     * autoInstallDisabled, managedAppNoLongerPresent, userRejectedInstall, userIsNotLoggedIntoAppStore,
     * seeUninstallErrorCode, pendingReboot, installingDependencies, contentDownloaded, powerShellScriptRequirementNotMet,
     * registryRequirementNotMet, fileSystemRequirementNotMet, platformNotApplicable, minimumCpuSpeedNotMet,
     * minimumLogicalProcessorCountNotMet, minimumPhysicalMemoryNotMet, minimumOsVersionNotMet, minimumDiskSpaceNotMet,
     * processorArchitectureNotApplicable.
     */
    installStateDetail?: ResultantAppStateDetail;
    // Last sync date time
    lastSyncDateTime?: string;
    /**
     * The install state of the app. Possible values are: installed, failed, notInstalled, uninstallFailed, pendingInstall,
     * unknown, notApplicable.
     */
    mobileAppInstallStatusValue?: ResultantAppState;
    // OS Description
    osDescription?: NullableOption<string>;
    // OS Version
    osVersion?: NullableOption<string>;
    // Device User Name
    userName?: NullableOption<string>;
    // User Principal Name
    userPrincipalName?: NullableOption<string>;
    // The navigation link to the mobile app.
    app?: NullableOption<MobileApp>;
}
export interface MobileAppInstallSummary extends Entity {
    // Number of Devices that have failed to install this app.
    failedDeviceCount?: number;
    // Number of Users that have 1 or more device that failed to install this app.
    failedUserCount?: number;
    // Number of Devices that have successfully installed this app.
    installedDeviceCount?: number;
    // Number of Users whose devices have all succeeded to install this app.
    installedUserCount?: number;
    // Number of Devices that are not applicable for this app.
    notApplicableDeviceCount?: number;
    // Number of Users whose devices were all not applicable for this app.
    notApplicableUserCount?: number;
    // Number of Devices that does not have this app installed.
    notInstalledDeviceCount?: number;
    // Number of Users that have 1 or more devices that did not install this app.
    notInstalledUserCount?: number;
    // Number of Devices that have been notified to install this app.
    pendingInstallDeviceCount?: number;
    /**
     * Number of Users that have 1 or more device that have been notified to install this app and have 0 devices with
     * failures.
     */
    pendingInstallUserCount?: number;
}
export interface MobileAppRelationship extends Entity {
    // The target mobile app's display name.
    targetDisplayName?: NullableOption<string>;
    // The target mobile app's display version.
    targetDisplayVersion?: NullableOption<string>;
    // The target mobile app's app id.
    targetId?: NullableOption<string>;
    // The target mobile app's publisher.
    targetPublisher?: NullableOption<string>;
    // The type of relationship indicating whether the target is a parent or child. Possible values are: child, parent.
    targetType?: MobileAppRelationshipType;
}
export interface UserAppInstallStatus extends Entity {
    // Failed Device Count.
    failedDeviceCount?: number;
    // Installed Device Count.
    installedDeviceCount?: number;
    // Not installed device count.
    notInstalledDeviceCount?: number;
    // User name.
    userName?: NullableOption<string>;
    // User Principal Name.
    userPrincipalName?: NullableOption<string>;
    // The navigation link to the mobile app.
    app?: NullableOption<MobileApp>;
    // The install state of the app on devices.
    deviceStatuses?: NullableOption<MobileAppInstallStatus[]>;
}
export interface MobileAppContentFile extends Entity {
    // The Azure Storage URI.
    azureStorageUri?: NullableOption<string>;
    // The time the Azure storage Uri expires.
    azureStorageUriExpirationDateTime?: NullableOption<string>;
    // The time the file was created.
    createdDateTime?: string;
    // A value indicating whether the file is committed.
    isCommitted?: boolean;
    // Whether the content file is a dependency for the main content file.
    isDependency?: boolean;
    // A value indicating whether the file is a framework file.
    isFrameworkFile?: boolean;
    // The manifest information.
    manifest?: NullableOption<number>;
    // the file name.
    name?: NullableOption<string>;
    // The size of the file prior to encryption.
    size?: number;
    // The size of the file after encryption.
    sizeEncrypted?: number;
    /**
     * The state of the current upload request. Possible values are: success, transientError, error, unknown,
     * azureStorageUriRequestSuccess, azureStorageUriRequestPending, azureStorageUriRequestFailed,
     * azureStorageUriRequestTimedOut, azureStorageUriRenewalSuccess, azureStorageUriRenewalPending,
     * azureStorageUriRenewalFailed, azureStorageUriRenewalTimedOut, commitFileSuccess, commitFilePending, commitFileFailed,
     * commitFileTimedOut.
     */
    uploadState?: MobileAppContentFileUploadState;
}
export interface MobileAppDependency extends MobileAppRelationship {
    // The type of dependency relationship between the parent and child apps. Possible values are: detect, autoInstall.
    dependencyType?: MobileAppDependencyType;
    // The total number of apps that directly or indirectly depend on the parent app.
    dependentAppCount?: number;
    // The total number of apps the child app directly or indirectly depends on.
    dependsOnAppCount?: number;
}
export interface MobileAppSupersedence extends MobileAppRelationship {
    // The total number of apps directly or indirectly superseded by the child app.
    supersededAppCount?: number;
    // The supersedence relationship type between the parent and child apps. Possible values are: update, replace.
    supersedenceType?: MobileAppSupersedenceType;
    // The total number of apps directly or indirectly superseding the parent app.
    supersedingAppCount?: number;
}
export interface OfficeSuiteApp extends MobileApp {
    // The value to accept the EULA automatically on the enduser's device.
    autoAcceptEula?: boolean;
    // The property to represent the apps which are excluded from the selected Office365 Product Id.
    excludedApps?: NullableOption<ExcludedApps>;
    // To specify the level of display for the Installation Progress Setup UI on the Device. Possible values are: none, full.
    installProgressDisplayLevel?: OfficeSuiteInstallProgressDisplayLevel;
    /**
     * The property to represent the locales which are installed when the apps from Office365 is installed. It uses standard
     * RFC 6033. Ref: https://technet.microsoft.com/library/cc179219(v=office.16).aspx
     */
    localesToInstall?: NullableOption<string[]>;
    /**
     * The property to represent the XML configuration file that can be specified for Office ProPlus Apps. Takes precedence
     * over all other properties. When present, the XML configuration file will be used to create the app.
     */
    officeConfigurationXml?: NullableOption<number>;
    // The property to represent the Office365 app suite version. Possible values are: none, x86, x64, arm, neutral, arm64.
    officePlatformArchitecture?: WindowsArchitecture;
    // The Product Ids that represent the Office365 Suite SKU.
    productIds?: OfficeProductId[];
    /**
     * The property to determine whether to uninstall existing Office MSI if an Office365 app suite is deployed to the device
     * or not.
     */
    shouldUninstallOlderVersionsOfOffice?: boolean;
    /**
     * The property to represent the specific target version for the Office365 app suite that should be remained deployed on
     * the devices.
     */
    targetVersion?: NullableOption<string>;
    /**
     * The property to represent the Office365 Update Channel. Possible values are: none, current, deferred,
     * firstReleaseCurrent, firstReleaseDeferred, monthlyEnterprise.
     */
    updateChannel?: OfficeUpdateChannel;
    /**
     * The property to represent the update version in which the specific target version is available for the Office365 app
     * suite.
     */
    updateVersion?: NullableOption<string>;
    // The property to represent that whether the shared computer activation is used not for Office365 app suite.
    useSharedComputerActivation?: boolean;
}
export interface WebApp extends MobileApp {
    // The web app URL. This property cannot be PATCHed.
    appUrl?: NullableOption<string>;
    // Whether or not to use managed browser. This property is only applicable for Android and IOS.
    useManagedBrowser?: boolean;
}
export interface Win32LobApp extends MobileLobApp {
    // The Windows architecture(s) for which this app can run on. Possible values are: none, x86, x64, arm, neutral, arm64.
    applicableArchitectures?: WindowsArchitecture;
    // The detection rules to detect Win32 Line of Business (LoB) app.
    detectionRules?: NullableOption<Win32LobAppDetection[]>;
    // The version displayed in the UX for this app.
    displayVersion?: NullableOption<string>;
    // The command line to install this app
    installCommandLine?: NullableOption<string>;
    // The install experience for this app.
    installExperience?: NullableOption<Win32LobAppInstallExperience>;
    // The value for the minimum CPU speed which is required to install this app.
    minimumCpuSpeedInMHz?: NullableOption<number>;
    // The value for the minimum free disk space which is required to install this app.
    minimumFreeDiskSpaceInMB?: NullableOption<number>;
    // The value for the minimum physical memory which is required to install this app.
    minimumMemoryInMB?: NullableOption<number>;
    // The value for the minimum number of processors which is required to install this app.
    minimumNumberOfProcessors?: NullableOption<number>;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: NullableOption<WindowsMinimumOperatingSystem>;
    // The value for the minimum supported windows release.
    minimumSupportedWindowsRelease?: NullableOption<string>;
    // The MSI details if this Win32 app is an MSI app.
    msiInformation?: NullableOption<Win32LobAppMsiInformation>;
    // The requirement rules to detect Win32 Line of Business (LoB) app.
    requirementRules?: NullableOption<Win32LobAppRequirement[]>;
    // The return codes for post installation behavior.
    returnCodes?: NullableOption<Win32LobAppReturnCode[]>;
    // The detection and requirement rules for this app.
    rules?: NullableOption<Win32LobAppRule[]>;
    // The relative path of the setup file in the encrypted Win32LobApp package.
    setupFilePath?: NullableOption<string>;
    // The command line to uninstall this app
    uninstallCommandLine?: NullableOption<string>;
}
export interface WindowsAppX extends MobileLobApp {
    // The Windows architecture(s) for which this app can run on. Possible values are: none, x86, x64, arm, neutral, arm64.
    applicableArchitectures?: WindowsArchitecture;
    // The Identity Name.
    identityName?: NullableOption<string>;
    // The Identity Publisher Hash.
    identityPublisherHash?: string;
    // The Identity Resource Identifier.
    identityResourceIdentifier?: NullableOption<string>;
    // The identity version.
    identityVersion?: NullableOption<string>;
    // Whether or not the app is a bundle.
    isBundle?: boolean;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: WindowsMinimumOperatingSystem;
}
export interface WindowsMicrosoftEdgeApp extends MobileApp {
    // The channel to install on target devices. Possible values are: dev, beta, stable.
    channel?: MicrosoftEdgeChannel;
    // The language locale to use when the Edge app displays text to the user.
    displayLanguageLocale?: NullableOption<string>;
}
export interface WindowsMobileMSI extends MobileLobApp {
    // The command line.
    commandLine?: NullableOption<string>;
    // The identity version.
    identityVersion?: NullableOption<string>;
    /**
     * A boolean to control whether the app's version will be used to detect the app after it is installed on a device. Set
     * this to true for Windows Mobile MSI Line of Business (LoB) apps that use a self update feature.
     */
    ignoreVersionDetection?: boolean;
    // The product code.
    productCode?: NullableOption<string>;
    // The product version of Windows Mobile MSI Line of Business (LoB) app.
    productVersion?: NullableOption<string>;
    /**
     * Indicates whether to install a dual-mode MSI in the device context. If true, app will be installed for all users. If
     * false, app will be installed per-user. If null, service will use the MSI package's default install context. In case of
     * dual-mode MSI, this default will be per-user. Cannot be set for non-dual-mode apps. Cannot be changed after initial
     * creation of the application.
     */
    useDeviceContext?: NullableOption<boolean>;
}
export interface WindowsPhone81AppX extends MobileLobApp {
    // The Windows architecture(s) for which this app can run on. Possible values are: none, x86, x64, arm, neutral, arm64.
    applicableArchitectures?: WindowsArchitecture;
    // The Identity Name.
    identityName?: NullableOption<string>;
    // The Identity Publisher Hash.
    identityPublisherHash?: string;
    // The Identity Resource Identifier.
    identityResourceIdentifier?: NullableOption<string>;
    // The identity version.
    identityVersion?: NullableOption<string>;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: WindowsMinimumOperatingSystem;
    // The Phone Product Identifier.
    phoneProductIdentifier?: NullableOption<string>;
    // The Phone Publisher Id.
    phonePublisherId?: NullableOption<string>;
}
export interface WindowsPhone81AppXBundle extends WindowsPhone81AppX {
    // The list of AppX Package Information.
    appXPackageInformationList?: NullableOption<WindowsPackageInformation[]>;
}
export interface WindowsPhone81StoreApp extends MobileApp {
    // The Windows Phone 8.1 app store URL.
    appStoreUrl?: NullableOption<string>;
}
export interface WindowsPhoneXAP extends MobileLobApp {
    // The identity version.
    identityVersion?: NullableOption<string>;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: WindowsMinimumOperatingSystem;
    // The Product Identifier.
    productIdentifier?: string;
}
export interface WindowsStoreApp extends MobileApp {
    // The Windows app store URL.
    appStoreUrl?: NullableOption<string>;
}
export interface WindowsUniversalAppX extends MobileLobApp {
    // The Windows architecture(s) for which this app can run on. Possible values are: none, x86, x64, arm, neutral, arm64.
    applicableArchitectures?: WindowsArchitecture;
    /**
     * The Windows device type(s) for which this app can run on. Possible values are: none, desktop, mobile, holographic,
     * team.
     */
    applicableDeviceTypes?: WindowsDeviceType;
    // The Identity Name.
    identityName?: NullableOption<string>;
    // The Identity Publisher Hash.
    identityPublisherHash?: string;
    // The Identity Resource Identifier.
    identityResourceIdentifier?: NullableOption<string>;
    // The identity version.
    identityVersion?: NullableOption<string>;
    // Whether or not the app is a bundle.
    isBundle?: boolean;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: WindowsMinimumOperatingSystem;
    // The collection of contained apps in the committed mobileAppContent of a windowsUniversalAppX app.
    committedContainedApps?: NullableOption<MobileContainedApp[]>;
}
export interface WindowsUniversalAppXContainedApp extends MobileContainedApp {
    // The app user model ID of the contained app of a WindowsUniversalAppX app.
    appUserModelId?: NullableOption<string>;
}
export interface DeviceInstallState extends Entity {
    // Device Id.
    deviceId?: NullableOption<string>;
    // Device name.
    deviceName?: NullableOption<string>;
    // The error code for install failures.
    errorCode?: NullableOption<string>;
    /**
     * The install state of the eBook. Possible values are: notApplicable, installed, failed, notInstalled, uninstallFailed,
     * unknown.
     */
    installState?: InstallState;
    // Last sync date and time.
    lastSyncDateTime?: string;
    // OS Description.
    osDescription?: NullableOption<string>;
    // OS Version.
    osVersion?: NullableOption<string>;
    // Device User Name.
    userName?: NullableOption<string>;
}
export interface EBookInstallSummary extends Entity {
    // Number of Devices that have failed to install this book.
    failedDeviceCount?: number;
    // Number of Users that have 1 or more device that failed to install this book.
    failedUserCount?: number;
    // Number of Devices that have successfully installed this book.
    installedDeviceCount?: number;
    // Number of Users whose devices have all succeeded to install this book.
    installedUserCount?: number;
    // Number of Devices that does not have this book installed.
    notInstalledDeviceCount?: number;
    // Number of Users that did not install this book.
    notInstalledUserCount?: number;
}
// tslint:disable-next-line: interface-name
export interface IosVppEBook extends ManagedEBook {
    // The Apple ID associated with Vpp token.
    appleId?: NullableOption<string>;
    // Genres.
    genres?: NullableOption<string[]>;
    // Language.
    language?: NullableOption<string>;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
    // Seller.
    seller?: NullableOption<string>;
    // Total license count.
    totalLicenseCount?: number;
    // Used license count.
    usedLicenseCount?: number;
    // The Vpp token's organization name.
    vppOrganizationName?: NullableOption<string>;
    // The Vpp token ID.
    vppTokenId?: string;
}
export interface ManagedEBookAssignment extends Entity {
    // The install intent for eBook. Possible values are: available, required, uninstall, availableWithoutEnrollment.
    installIntent?: InstallIntent;
    // The assignment target for eBook.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IosVppEBookAssignment extends ManagedEBookAssignment {}
export interface UserInstallStateSummary extends Entity {
    // Failed Device Count.
    failedDeviceCount?: number;
    // Installed Device Count.
    installedDeviceCount?: number;
    // Not installed device count.
    notInstalledDeviceCount?: number;
    // User name.
    userName?: NullableOption<string>;
    // The install state of the eBook.
    deviceStates?: NullableOption<DeviceInstallState[]>;
}
export interface ManagedMobileApp extends Entity {
    // The identifier for an app with it's operating system type.
    mobileAppIdentifier?: NullableOption<MobileAppIdentifier>;
    // Version of the entity.
    version?: NullableOption<string>;
}
export interface ManagedAppPolicyDeploymentSummary extends Entity {
    // Not yet documented
    configurationDeployedUserCount?: number;
    // Not yet documented
    configurationDeploymentSummaryPerApp?: NullableOption<ManagedAppPolicyDeploymentSummaryPerApp[]>;
    // Not yet documented
    displayName?: NullableOption<string>;
    // Not yet documented
    lastRefreshTime?: string;
    // Version of the entity.
    version?: NullableOption<string>;
}
export interface DeviceCompliancePolicyAssignment extends Entity {
    /**
     * The assignment source for the device compliance policy, direct or parcel/policySet. Possible values are: direct,
     * policySets.
     */
    source?: DeviceAndAppManagementAssignmentSource;
    // The identifier of the source of the assignment.
    sourceId?: NullableOption<string>;
    // Target for the compliance policy assignment.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface SettingStateDeviceSummary extends Entity {
    // Device Compliant count for the setting
    compliantDeviceCount?: number;
    // Device conflict error count for the setting
    conflictDeviceCount?: number;
    // Device error count for the setting
    errorDeviceCount?: number;
    // Name of the InstancePath for the setting
    instancePath?: NullableOption<string>;
    // Device NonCompliant count for the setting
    nonCompliantDeviceCount?: number;
    // Device Not Applicable count for the setting
    notApplicableDeviceCount?: number;
    // Device Compliant count for the setting
    remediatedDeviceCount?: number;
    // Name of the setting
    settingName?: NullableOption<string>;
    // Device Unkown count for the setting
    unknownDeviceCount?: number;
}
export interface DeviceComplianceDeviceStatus extends Entity {
    // The DateTime when device compliance grace period expires
    complianceGracePeriodExpirationDateTime?: string;
    // Device name of the DevicePolicyStatus.
    deviceDisplayName?: NullableOption<string>;
    // The device model that is being reported
    deviceModel?: NullableOption<string>;
    // Last modified date time of the policy report.
    lastReportedDateTime?: string;
    // Platform of the device that is being reported
    platform?: number;
    /**
     * Compliance status of the policy report. Possible values are: unknown, notApplicable, compliant, remediated,
     * nonCompliant, error, conflict, notAssigned.
     */
    status?: ComplianceStatus;
    // The User Name that is being reported
    userName?: NullableOption<string>;
    // UserPrincipalName.
    userPrincipalName?: NullableOption<string>;
}
export interface DeviceComplianceDeviceOverview extends Entity {
    // Version of the policy for that overview
    configurationVersion?: number;
    // Number of devices in conflict
    conflictCount?: number;
    // Number of error devices
    errorCount?: number;
    // Number of failed devices
    failedCount?: number;
    // Last update time
    lastUpdateDateTime?: string;
    // Number of not applicable devices
    notApplicableCount?: number;
    // Number of not applicable devices due to mismatch platform and policy
    notApplicablePlatformCount?: number;
    // Number of pending devices
    pendingCount?: number;
    // Number of succeeded devices
    successCount?: number;
}
export interface DeviceComplianceScheduledActionForRule extends Entity {
    // Name of the rule which this scheduled action applies to.
    ruleName?: NullableOption<string>;
    // The list of scheduled action configurations for this compliance policy.
    scheduledActionConfigurations?: NullableOption<DeviceComplianceActionItem[]>;
}
export interface DeviceComplianceUserStatus extends Entity {
    // Devices count for that user.
    devicesCount?: number;
    // Last modified date time of the policy report.
    lastReportedDateTime?: string;
    /**
     * Compliance status of the policy report. Possible values are: unknown, notApplicable, compliant, remediated,
     * nonCompliant, error, conflict, notAssigned.
     */
    status?: ComplianceStatus;
    // User name of the DevicePolicyStatus.
    userDisplayName?: NullableOption<string>;
    // UserPrincipalName.
    userPrincipalName?: NullableOption<string>;
}
export interface DeviceComplianceUserOverview extends Entity {
    // Version of the policy for that overview
    configurationVersion?: number;
    // Number of users in conflict
    conflictCount?: number;
    // Number of error Users
    errorCount?: number;
    // Number of failed Users
    failedCount?: number;
    // Last update time
    lastUpdateDateTime?: string;
    // Number of not applicable users
    notApplicableCount?: number;
    // Number of pending Users
    pendingCount?: number;
    // Number of succeeded Users
    successCount?: number;
}
export interface PolicySetItem extends Entity {
    // Creation time of the PolicySetItem.
    createdDateTime?: string;
    // DisplayName of the PolicySetItem.
    displayName?: NullableOption<string>;
    // Error code if any occured. Possible values are: noError, unauthorized, notFound, deleted.
    errorCode?: ErrorCode;
    // Tags of the guided deployment
    guidedDeploymentTags?: NullableOption<string[]>;
    // policySetType of the PolicySetItem.
    itemType?: NullableOption<string>;
    // Last modified time of the PolicySetItem.
    lastModifiedDateTime?: string;
    // PayloadId of the PolicySetItem.
    payloadId?: string;
    // Status of the PolicySetItem. Possible values are: unknown, validating, partialSuccess, success, error, notAssigned.
    status?: PolicySetStatus;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceCompliancePolicyPolicySetItem extends PolicySetItem {}
export interface DeviceConfigurationAssignment extends Entity {
    /**
     * The assignment source for the device configuration, direct or parcel/policySet. This property is read-only. Possible
     * values are: direct, policySets.
     */
    source?: DeviceAndAppManagementAssignmentSource;
    // The identifier of the source of the assignment. This property is read-only.
    sourceId?: NullableOption<string>;
    // The assignment target for the device configuration.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface DeviceConfigurationDeviceStatus extends Entity {
    // The DateTime when device compliance grace period expires
    complianceGracePeriodExpirationDateTime?: string;
    // Device name of the DevicePolicyStatus.
    deviceDisplayName?: NullableOption<string>;
    // The device model that is being reported
    deviceModel?: NullableOption<string>;
    // Last modified date time of the policy report.
    lastReportedDateTime?: string;
    // Platform of the device that is being reported
    platform?: number;
    /**
     * Compliance status of the policy report. Possible values are: unknown, notApplicable, compliant, remediated,
     * nonCompliant, error, conflict, notAssigned.
     */
    status?: ComplianceStatus;
    // The User Name that is being reported
    userName?: NullableOption<string>;
    // UserPrincipalName.
    userPrincipalName?: NullableOption<string>;
}
export interface DeviceConfigurationDeviceOverview extends Entity {
    // Version of the policy for that overview
    configurationVersion?: number;
    // Number of devices in conflict
    conflictCount?: number;
    // Number of error devices
    errorCount?: number;
    // Number of failed devices
    failedCount?: number;
    // Last update time
    lastUpdateDateTime?: string;
    // Number of not applicable devices
    notApplicableCount?: number;
    // Number of not applicable devices due to mismatch platform and policy
    notApplicablePlatformCount?: number;
    // Number of pending devices
    pendingCount?: number;
    // Number of succeeded devices
    successCount?: number;
}
export interface DeviceConfigurationGroupAssignment extends Entity {
    // Indicates if this group is should be excluded. Defaults that the group should be included
    excludeGroup?: boolean;
    // The Id of the AAD group we are targeting the device configuration to.
    targetGroupId?: NullableOption<string>;
    // The navigation link to the Device Configuration being targeted.
    deviceConfiguration?: NullableOption<DeviceConfiguration>;
}
export interface DeviceConfigurationUserStatus extends Entity {
    // Devices count for that user.
    devicesCount?: number;
    // Last modified date time of the policy report.
    lastReportedDateTime?: string;
    /**
     * Compliance status of the policy report. Possible values are: unknown, notApplicable, compliant, remediated,
     * nonCompliant, error, conflict, notAssigned.
     */
    status?: ComplianceStatus;
    // User name of the DevicePolicyStatus.
    userDisplayName?: NullableOption<string>;
    // UserPrincipalName.
    userPrincipalName?: NullableOption<string>;
}
export interface DeviceConfigurationUserOverview extends Entity {
    // Version of the policy for that overview
    configurationVersion?: number;
    // Number of users in conflict
    conflictCount?: number;
    // Number of error Users
    errorCount?: number;
    // Number of failed Users
    failedCount?: number;
    // Last update time
    lastUpdateDateTime?: string;
    // Number of not applicable users
    notApplicableCount?: number;
    // Number of pending Users
    pendingCount?: number;
    // Number of succeeded Users
    successCount?: number;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceConfigurationPolicySetItem extends PolicySetItem {}
export interface EnrollmentConfigurationAssignment extends Entity {
    // Type of resource used for deployment to a group, direct or policySet. Possible values are: direct, policySets.
    source?: DeviceAndAppManagementAssignmentSource;
    // Identifier for resource used for deployment to a group
    sourceId?: NullableOption<string>;
    // Represents an assignment to managed devices in the tenant
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementConfigurationPolicyPolicySetItem extends PolicySetItem {}
export interface DeviceManagementScriptAssignment extends Entity {
    // The Id of the Azure Active Directory group we are targeting the script to.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface DeviceManagementScriptDeviceState extends Entity {
    // Error code corresponding to erroneous execution of the device management script.
    errorCode?: number;
    // Error description corresponding to erroneous execution of the device management script.
    errorDescription?: NullableOption<string>;
    // Latest time the device management script executes.
    lastStateUpdateDateTime?: string;
    // Details of execution output.
    resultMessage?: NullableOption<string>;
    /**
     * State of latest run of the device management script. Possible values are: unknown, success, fail, scriptError, pending,
     * notApplicable.
     */
    runState?: RunState;
    // The managed devices that executes the device management script.
    managedDevice?: NullableOption<ManagedDevice>;
}
export interface DeviceManagementScriptGroupAssignment extends Entity {
    // The Id of the Azure Active Directory group we are targeting the script to.
    targetGroupId?: NullableOption<string>;
}
export interface DeviceManagementScriptRunSummary extends Entity {
    // Error device count.
    errorDeviceCount?: number;
    // Error user count.
    errorUserCount?: number;
    // Success device count.
    successDeviceCount?: number;
    // Success user count.
    successUserCount?: number;
}
export interface DeviceManagementScriptUserState extends Entity {
    // Error device count for specific user.
    errorDeviceCount?: number;
    // Success device count for specific user.
    successDeviceCount?: number;
    // User principle name of specific user.
    userPrincipalName?: NullableOption<string>;
    // List of run states for this script across all devices of specific user.
    deviceRunStates?: NullableOption<DeviceManagementScriptDeviceState[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementScriptPolicySetItem extends PolicySetItem {}
export interface EnrollmentRestrictionsConfigurationPolicySetItem extends PolicySetItem {
    // Limit of the EnrollmentRestrictionsConfigurationPolicySetItem.
    limit?: NullableOption<number>;
    // Priority of the EnrollmentRestrictionsConfigurationPolicySetItem.
    priority?: NullableOption<number>;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IosLobAppProvisioningConfigurationPolicySetItem extends PolicySetItem {}
export interface ManagedAppProtectionPolicySetItem extends PolicySetItem {
    // TargetedAppManagementLevels of the ManagedAppPolicySetItem.
    targetedAppManagementLevels?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface ManagedDeviceMobileAppConfigurationPolicySetItem extends PolicySetItem {}
// tslint:disable-next-line: no-empty-interface
export interface MdmWindowsInformationProtectionPolicyPolicySetItem extends PolicySetItem {}
export interface MobileAppPolicySetItem extends PolicySetItem {
    /**
     * Install intent of the MobileAppPolicySetItem. Possible values are: available, required, uninstall,
     * availableWithoutEnrollment.
     */
    intent?: InstallIntent;
    // Settings of the MobileAppPolicySetItem.
    settings?: NullableOption<MobileAppAssignmentSettings>;
}
export interface PayloadCompatibleAssignmentFilter extends DeviceAndAppManagementAssignmentFilter {
    // PayloadType of the Assignment Filter.
    payloadType?: AssignmentFilterPayloadType;
}
export interface PolicySetAssignment extends Entity {
    // Last modified time of the PolicySetAssignment.
    lastModifiedDateTime?: string;
    // The target group of PolicySetAssignment
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface TargetedManagedAppPolicyAssignment extends Entity {
    // Type of resource used for deployment to a group, direct or parcel/policySet. Possible values are: direct, policySets.
    source?: DeviceAndAppManagementAssignmentSource;
    // Identifier for resource used for deployment to a group
    sourceId?: NullableOption<string>;
    // Identifier for deployment to a group or app
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
// tslint:disable-next-line: no-empty-interface
export interface TargetedManagedAppConfigurationPolicySetItem extends PolicySetItem {}
export interface Windows10EnrollmentCompletionPageConfigurationPolicySetItem extends PolicySetItem {
    // Priority of the Windows10EnrollmentCompletionPageConfigurationPolicySetItem.
    priority?: NullableOption<number>;
}
export interface WindowsAutopilotDeploymentProfileAssignment extends Entity {
    // Type of resource used for deployment to a group, direct or parcel/policySet. Possible values are: direct, policySets.
    source?: DeviceAndAppManagementAssignmentSource;
    // Identifier for resource used for deployment to a group
    sourceId?: NullableOption<string>;
    // The assignment target for the Windows Autopilot deployment profile.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
// tslint:disable-next-line: no-empty-interface
export interface WindowsAutopilotDeploymentProfilePolicySetItem extends PolicySetItem {}
export interface OfficeClientConfiguration extends Entity {
    // List of office Client check-in status.
    checkinStatuses?: NullableOption<OfficeClientCheckinStatus[]>;
    // Not yet documented
    description?: NullableOption<string>;
    // Admin provided description of the office client configuration policy.
    displayName?: NullableOption<string>;
    // Policy settings JSON string in binary format, these values cannot be changed by the user.
    policyPayload?: NullableOption<any>;
    /**
     * Priority value should be unique value for each policy under a tenant and will be used for conflict resolution, lower
     * values mean priority is high.
     */
    priority?: number;
    // User check-in summary for the policy.
    userCheckinSummary?: NullableOption<OfficeUserCheckinSummary>;
    // Preference settings JSON string in binary format, these values can be overridden by the user.
    userPreferencePayload?: NullableOption<any>;
    // The list of group assignments for the policy.
    assignments?: NullableOption<OfficeClientConfigurationAssignment[]>;
}
export interface OfficeClientConfigurationAssignment extends Entity {
    // The target assignment defined by the admin.
    target?: NullableOption<OfficeConfigurationAssignmentTarget>;
}
export interface OfficeConfiguration {
    // List of office Client check-in status.
    tenantCheckinStatuses?: NullableOption<OfficeClientCheckinStatus[]>;
    // Entity that describes tenant check-in statues
    tenantUserCheckinSummary?: NullableOption<OfficeUserCheckinSummary>;
    // List of office Client configuration.
    clientConfigurations?: NullableOption<OfficeClientConfiguration[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface WindowsOfficeClientConfiguration extends OfficeClientConfiguration {}
// tslint:disable-next-line: no-empty-interface
export interface WindowsOfficeClientSecurityConfiguration extends OfficeClientConfiguration {}
export interface TermsAndConditionsAcceptanceStatus extends Entity {
    // DateTime when the terms were last accepted by the user.
    acceptedDateTime?: string;
    // Most recent version number of the T&amp;C accepted by the user.
    acceptedVersion?: number;
    // Display name of the user whose acceptance the entity represents.
    userDisplayName?: NullableOption<string>;
    // The userPrincipalName of the User that accepted the term.
    userPrincipalName?: NullableOption<string>;
    // Navigation link to the terms and conditions that are assigned.
    termsAndConditions?: NullableOption<TermsAndConditions>;
}
export interface TermsAndConditionsAssignment extends Entity {
    // Assignment target that the T&amp;C policy is assigned to.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface TermsAndConditionsGroupAssignment extends Entity {
    // Unique identifier of a group that the T&amp;C policy is assigned to.
    targetGroupId?: NullableOption<string>;
    // Navigation link to the terms and conditions that are assigned.
    termsAndConditions?: NullableOption<TermsAndConditions>;
}
export interface AdvancedThreatProtectionOnboardingDeviceSettingState extends Entity {
    // The DateTime when device compliance grace period expires
    complianceGracePeriodExpirationDateTime?: string;
    // The Device Id that is being reported
    deviceId?: NullableOption<string>;
    // The device model that is being reported
    deviceModel?: NullableOption<string>;
    // The Device Name that is being reported
    deviceName?: NullableOption<string>;
    /**
     * Device platform type. Possible values are: desktop, windowsRT, winMO6, nokia, windowsPhone, mac, winCE, winEmbedded,
     * iPhone, iPad, iPod, android, iSocConsumer, unix, macMDM, holoLens, surfaceHub, androidForWork, androidEnterprise,
     * windows10x, androidnGMS, cloudPC, blackberry, palm, unknown.
     */
    platformType?: DeviceType;
    // The setting class name and property name.
    setting?: NullableOption<string>;
    // The Setting Name that is being reported
    settingName?: NullableOption<string>;
    /**
     * The compliance state of the setting. Possible values are: unknown, notApplicable, compliant, remediated, nonCompliant,
     * error, conflict, notAssigned.
     */
    state?: ComplianceStatus;
    // The User email address that is being reported
    userEmail?: NullableOption<string>;
    // The user Id that is being reported
    userId?: NullableOption<string>;
    // The User Name that is being reported
    userName?: NullableOption<string>;
    // The User PrincipalName that is being reported
    userPrincipalName?: NullableOption<string>;
}
export interface AndroidCertificateProfileBase extends DeviceConfiguration {
    // Scale for the Certificate Validity Period. Possible values are: days, months, years.
    certificateValidityPeriodScale?: CertificateValidityPeriodScale;
    // Value for the Certificate Validity Period.
    certificateValidityPeriodValue?: number;
    // Extended Key Usage (EKU) settings. This collection can contain a maximum of 500 elements.
    extendedKeyUsages?: ExtendedKeyUsage[];
    // Certificate renewal threshold percentage. Valid values 1 to 99
    renewalThresholdPercentage?: number;
    /**
     * Certificate Subject Alternative Name Type. Possible values are: none, emailAddress, userPrincipalName,
     * customAzureADAttribute, domainNameService, universalResourceIdentifier.
     */
    subjectAlternativeNameType?: SubjectAlternativeNameType;
    /**
     * Certificate Subject Name Format. Possible values are: commonName, commonNameIncludingEmail, commonNameAsEmail, custom,
     * commonNameAsIMEI, commonNameAsSerialNumber, commonNameAsAadDeviceId, commonNameAsIntuneDeviceId,
     * commonNameAsDurableDeviceId.
     */
    subjectNameFormat?: SubjectNameFormat;
    // Trusted Root Certificate.
    rootCertificate?: NullableOption<AndroidTrustedRootCertificate>;
}
export interface AndroidTrustedRootCertificate extends DeviceConfiguration {
    // File name to display in UI.
    certFileName?: NullableOption<string>;
    // Trusted Root Certificate
    trustedRootCertificate?: number;
}
export interface AndroidCompliancePolicy extends DeviceCompliancePolicy {
    /**
     * MDATP Require Mobile Threat Protection minimum risk level to report noncompliance. Possible values are: unavailable,
     * secured, low, medium, high, notSet.
     */
    advancedThreatProtectionRequiredSecurityLevel?: DeviceThreatProtectionLevel;
    // Condition statement id.
    conditionStatementId?: NullableOption<string>;
    // Require that devices have enabled device threat protection.
    deviceThreatProtectionEnabled?: boolean;
    /**
     * Require Mobile Threat Protection minimum risk level to report noncompliance. Possible values are: unavailable, secured,
     * low, medium, high, notSet.
     */
    deviceThreatProtectionRequiredSecurityLevel?: DeviceThreatProtectionLevel;
    // Minimum Android security patch level.
    minAndroidSecurityPatchLevel?: NullableOption<string>;
    // Maximum Android version.
    osMaximumVersion?: NullableOption<string>;
    // Minimum Android version.
    osMinimumVersion?: NullableOption<string>;
    // Number of days before the password expires. Valid values 1 to 365
    passwordExpirationDays?: NullableOption<number>;
    // Minimum password length. Valid values 4 to 16
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before a password is required.
    passwordMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // Number of previous passwords to block. Valid values 1 to 24
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Require a password to unlock device.
    passwordRequired?: boolean;
    /**
     * Type of characters in password. Possible values are: deviceDefault, alphabetic, alphanumeric, alphanumericWithSymbols,
     * lowSecurityBiometric, numeric, numericComplex, any.
     */
    passwordRequiredType?: AndroidRequiredPasswordType;
    // Number of sign-in failures allowed before factory reset. Valid values 1 to 16
    passwordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    /**
     * Indicates the required password complexity on Android. One of: NONE, LOW, MEDIUM, HIGH. This is a new API targeted to
     * Android 11+. Possible values are: none, low, medium, high.
     */
    requiredPasswordComplexity?: AndroidRequiredPasswordComplexity;
    // Require the device to not have the specified apps installed. This collection can contain a maximum of 100 elements.
    restrictedApps?: NullableOption<AppListItem[]>;
    // Block device administrator managed devices.
    securityBlockDeviceAdministratorManagedDevices?: boolean;
    // Devices must not be jailbroken or rooted.
    securityBlockJailbrokenDevices?: boolean;
    // Disable USB debugging on Android devices.
    securityDisableUsbDebugging?: boolean;
    // Require that devices disallow installation of apps from unknown sources.
    securityPreventInstallAppsFromUnknownSources?: boolean;
    // Require the device to pass the Company Portal client app runtime integrity check.
    securityRequireCompanyPortalAppIntegrity?: boolean;
    // Require Google Play Services to be installed and enabled on the device.
    securityRequireGooglePlayServices?: boolean;
    // Require the device to pass the SafetyNet basic integrity check.
    securityRequireSafetyNetAttestationBasicIntegrity?: boolean;
    // Require the device to pass the SafetyNet certified device check.
    securityRequireSafetyNetAttestationCertifiedDevice?: boolean;
    /**
     * Require the device to have up to date security providers. The device will require Google Play Services to be enabled
     * and up to date.
     */
    securityRequireUpToDateSecurityProviders?: boolean;
    // Require the Android Verify apps feature is turned on.
    securityRequireVerifyApps?: boolean;
    // Require encryption on Android devices.
    storageRequireEncryption?: boolean;
}
export interface AndroidCustomConfiguration extends DeviceConfiguration {
    // OMA settings. This collection can contain a maximum of 1000 elements.
    omaSettings?: NullableOption<OmaSetting[]>;
}
export interface AndroidDeviceComplianceLocalActionBase extends Entity {
    // Number of minutes to wait till a local action is enforced. Valid values 0 to 2147483647
    gracePeriodInMinutes?: number;
}
// tslint:disable-next-line: no-empty-interface
export interface AndroidDeviceComplianceLocalActionLockDevice extends AndroidDeviceComplianceLocalActionBase {}
export interface AndroidDeviceComplianceLocalActionLockDeviceWithPasscode extends AndroidDeviceComplianceLocalActionBase {
    // Passcode to reset to Android device. This property is read-only.
    passcode?: NullableOption<string>;
    // Number of sign in failures before wiping device, the value can be 4-11. Valid values 4 to 11
    passcodeSignInFailureCountBeforeWipe?: NullableOption<number>;
}
export interface AndroidDeviceOwnerCertificateProfileBase extends DeviceConfiguration {
    // Scale for the Certificate Validity Period. Possible values are: days, months, years.
    certificateValidityPeriodScale?: CertificateValidityPeriodScale;
    // Value for the Certificate Validity Period.
    certificateValidityPeriodValue?: number;
    // Extended Key Usage (EKU) settings. This collection can contain a maximum of 500 elements.
    extendedKeyUsages?: ExtendedKeyUsage[];
    // Certificate renewal threshold percentage. Valid values 1 to 99
    renewalThresholdPercentage?: number;
    /**
     * Certificate Subject Alternative Name Type. Possible values are: none, emailAddress, userPrincipalName,
     * customAzureADAttribute, domainNameService, universalResourceIdentifier.
     */
    subjectAlternativeNameType?: NullableOption<SubjectAlternativeNameType>;
    /**
     * Certificate Subject Name Format. Possible values are: commonName, commonNameIncludingEmail, commonNameAsEmail, custom,
     * commonNameAsIMEI, commonNameAsSerialNumber, commonNameAsAadDeviceId, commonNameAsIntuneDeviceId,
     * commonNameAsDurableDeviceId.
     */
    subjectNameFormat?: NullableOption<SubjectNameFormat>;
    // Trusted Root Certificate.
    rootCertificate?: NullableOption<AndroidDeviceOwnerTrustedRootCertificate>;
}
export interface AndroidDeviceOwnerTrustedRootCertificate extends DeviceConfiguration {
    // File name to display in UI.
    certFileName?: NullableOption<string>;
    // Trusted Root Certificate
    trustedRootCertificate?: number;
}
export interface AndroidDeviceOwnerCompliancePolicy extends DeviceCompliancePolicy {
    /**
     * MDATP Require Mobile Threat Protection minimum risk level to report noncompliance. Possible values are: unavailable,
     * secured, low, medium, high, notSet.
     */
    advancedThreatProtectionRequiredSecurityLevel?: NullableOption<DeviceThreatProtectionLevel>;
    // Require that devices have enabled device threat protection.
    deviceThreatProtectionEnabled?: NullableOption<boolean>;
    /**
     * Require Mobile Threat Protection minimum risk level to report noncompliance. Possible values are: unavailable, secured,
     * low, medium, high, notSet.
     */
    deviceThreatProtectionRequiredSecurityLevel?: NullableOption<DeviceThreatProtectionLevel>;
    // Minimum Android security patch level.
    minAndroidSecurityPatchLevel?: NullableOption<string>;
    // Maximum Android version.
    osMaximumVersion?: NullableOption<string>;
    // Minimum Android version.
    osMinimumVersion?: NullableOption<string>;
    // Number of days before the password expires. Valid values 1 to 365
    passwordExpirationDays?: NullableOption<number>;
    // Minimum password length. Valid values 4 to 16
    passwordMinimumLength?: NullableOption<number>;
    // Indicates the minimum number of letter characters required for device password. Valid values 1 to 16
    passwordMinimumLetterCharacters?: NullableOption<number>;
    // Indicates the minimum number of lower case characters required for device password. Valid values 1 to 16
    passwordMinimumLowerCaseCharacters?: NullableOption<number>;
    // Indicates the minimum number of non-letter characters required for device password. Valid values 1 to 16
    passwordMinimumNonLetterCharacters?: NullableOption<number>;
    // Indicates the minimum number of numeric characters required for device password. Valid values 1 to 16
    passwordMinimumNumericCharacters?: NullableOption<number>;
    // Indicates the minimum number of symbol characters required for device password. Valid values 1 to 16
    passwordMinimumSymbolCharacters?: NullableOption<number>;
    // Indicates the minimum number of upper case letter characters required for device password. Valid values 1 to 16
    passwordMinimumUpperCaseCharacters?: NullableOption<number>;
    // Minutes of inactivity before a password is required.
    passwordMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // Number of previous passwords to block. Valid values 1 to 24
    passwordPreviousPasswordCountToBlock?: NullableOption<number>;
    // Require a password to unlock device.
    passwordRequired?: NullableOption<boolean>;
    /**
     * Type of characters in password. Possible values are: deviceDefault, required, numeric, numericComplex, alphabetic,
     * alphanumeric, alphanumericWithSymbols, lowSecurityBiometric, customPassword.
     */
    passwordRequiredType?: NullableOption<AndroidDeviceOwnerRequiredPasswordType>;
    /**
     * If setting is set to true, checks that the Intune app installed on fully managed, dedicated, or corporate-owned work
     * profile Android Enterprise enrolled devices, is the one provided by Microsoft from the Managed Google Playstore. If the
     * check fails, the device will be reported as non-compliant.
     */
    securityRequireIntuneAppIntegrity?: NullableOption<boolean>;
    // Require the device to pass the SafetyNet basic integrity check.
    securityRequireSafetyNetAttestationBasicIntegrity?: NullableOption<boolean>;
    // Require the device to pass the SafetyNet certified device check.
    securityRequireSafetyNetAttestationCertifiedDevice?: NullableOption<boolean>;
    // Require encryption on Android devices.
    storageRequireEncryption?: NullableOption<boolean>;
}
export interface AndroidDeviceOwnerDerivedCredentialAuthenticationConfiguration extends DeviceConfiguration {
    // Tenant level settings for the Derived Credentials to be used for authentication.
    derivedCredentialSettings?: NullableOption<DeviceManagementDerivedCredentialSettings>;
}
export interface AndroidDeviceOwnerWiFiConfiguration extends DeviceConfiguration {
    /**
     * Connect automatically when this network is in range. Setting this to true will skip the user prompt and automatically
     * connect the device to Wi-Fi network.
     */
    connectAutomatically?: NullableOption<boolean>;
    /**
     * When set to true, this profile forces the device to connect to a network that doesn't broadcast its SSID to all
     * devices.
     */
    connectWhenNetworkNameIsHidden?: NullableOption<boolean>;
    // Network Name
    networkName?: string;
    // This is the pre-shared key for WPA Personal Wi-Fi network.
    preSharedKey?: NullableOption<string>;
    // This is the pre-shared key for WPA Personal Wi-Fi network.
    preSharedKeyIsSet?: boolean;
    // This is the name of the Wi-Fi network that is broadcast to all devices.
    ssid?: string;
    /**
     * Indicates whether Wi-Fi endpoint uses an EAP based security type. Possible values are: open, wep, wpaPersonal,
     * wpaEnterprise.
     */
    wiFiSecurityType?: AndroidDeviceOwnerWiFiSecurityType;
}
export interface AndroidDeviceOwnerEnterpriseWiFiConfiguration extends AndroidDeviceOwnerWiFiConfiguration {
    /**
     * Indicates the Authentication Method the client (device) needs to use when the EAP Type is configured to PEAP or
     * EAP-TTLS. Possible values are: certificate, usernameAndPassword, derivedCredential.
     */
    authenticationMethod?: NullableOption<WiFiAuthenticationMethod>;
    // Indicates the type of EAP protocol set on the Wi-Fi endpoint (router). Possible values are: eapTls, eapTtls, peap.
    eapType?: AndroidEapType;
    /**
     * Non-EAP Method for Authentication (Inner Identity) when EAP Type is EAP-TTLS and Authenticationmethod is Username and
     * Password. Possible values are: unencryptedPassword, challengeHandshakeAuthenticationProtocol, microsoftChap,
     * microsoftChapVersionTwo.
     */
    innerAuthenticationProtocolForEapTtls?: NullableOption<NonEapAuthenticationMethodForEapTtlsType>;
    /**
     * Non-EAP Method for Authentication (Inner Identity) when EAP Type is PEAP and Authenticationmethod is Username and
     * Password. Possible values are: none, microsoftChapVersionTwo.
     */
    innerAuthenticationProtocolForPeap?: NullableOption<NonEapAuthenticationMethodForPeap>;
    /**
     * Enable identity privacy (Outer Identity) when EAP Type is configured to EAP-TTLS or PEAP. The String provided here is
     * used to mask the username of individual users when they attempt to connect to Wi-Fi network.
     */
    outerIdentityPrivacyTemporaryValue?: NullableOption<string>;
    // Tenant level settings for the Derived Credentials to be used for authentication.
    derivedCredentialSettings?: NullableOption<DeviceManagementDerivedCredentialSettings>;
    /**
     * Identity Certificate for client authentication when EAP Type is configured to EAP-TLS, EAP-TTLS (with Certificate
     * Authentication), or PEAP (with Certificate Authentication). This is the certificate presented by client to the Wi-Fi
     * endpoint. The authentication server sitting behind the Wi-Fi endpoint must accept this certificate to successfully
     * establish a Wi-Fi connection.
     */
    identityCertificateForClientAuthentication?: NullableOption<AndroidDeviceOwnerCertificateProfileBase>;
    /**
     * Trusted Root Certificate for Server Validation when EAP Type is configured to EAP-TLS, EAP-TTLS or PEAP. This is the
     * certificate presented by the Wi-Fi endpoint when the device attempts to connect to Wi-Fi endpoint. The device (or user)
     * must accept this certificate to continue the connection attempt.
     */
    rootCertificateForServerValidation?: NullableOption<AndroidDeviceOwnerTrustedRootCertificate>;
}
export interface AndroidDeviceOwnerGeneralDeviceConfiguration extends DeviceConfiguration {
    // Indicates whether or not adding or removing accounts is disabled.
    accountsBlockModification?: NullableOption<boolean>;
    // Indicates whether or not the user is allowed to enable to unknown sources setting.
    appsAllowInstallFromUnknownSources?: NullableOption<boolean>;
    /**
     * Indicates the value of the app auto update policy. Possible values are: notConfigured, userChoice, never, wiFiOnly,
     * always.
     */
    appsAutoUpdatePolicy?: NullableOption<AndroidDeviceOwnerAppAutoUpdatePolicyType>;
    /**
     * Indicates the permission policy for requests for runtime permissions if one is not defined for the app specifically.
     * Possible values are: deviceDefault, prompt, autoGrant, autoDeny.
     */
    appsDefaultPermissionPolicy?: NullableOption<AndroidDeviceOwnerDefaultAppPermissionPolicyType>;
    // Whether or not to recommend all apps skip any first-time-use hints they may have added.
    appsRecommendSkippingFirstUseHints?: NullableOption<boolean>;
    // Indicates whether or not to block a user from configuring bluetooth.
    bluetoothBlockConfiguration?: NullableOption<boolean>;
    // Indicates whether or not to block a user from sharing contacts via bluetooth.
    bluetoothBlockContactSharing?: NullableOption<boolean>;
    // Indicates whether or not to disable the use of the camera.
    cameraBlocked?: NullableOption<boolean>;
    // Indicates whether or not to block Wi-Fi tethering.
    cellularBlockWiFiTethering?: NullableOption<boolean>;
    // Indicates whether or not to block users from any certificate credential configuration.
    certificateCredentialConfigurationDisabled?: NullableOption<boolean>;
    // Indicates whether or not to block a user from data roaming.
    dataRoamingBlocked?: NullableOption<boolean>;
    // Indicates whether or not to block the user from manually changing the date or time on the device
    dateTimeConfigurationBlocked?: NullableOption<boolean>;
    /**
     * Indicates which enrollment profile you want to configure. Possible values are: notConfigured, dedicatedDevice,
     * fullyManaged.
     */
    enrollmentProfile?: AndroidDeviceOwnerEnrollmentProfileType;
    // Indicates whether or not the factory reset option in settings is disabled.
    factoryResetBlocked?: NullableOption<boolean>;
    /**
     * List of Google account emails that will be required to authenticate after a device is factory reset before it can be
     * set up.
     */
    factoryResetDeviceAdministratorEmails?: NullableOption<string[]>;
    // Proxy is set up directly with host, port and excluded hosts.
    globalProxy?: NullableOption<AndroidDeviceOwnerGlobalProxy>;
    // Indicates whether or not google accounts will be blocked.
    googleAccountsBlocked?: NullableOption<boolean>;
    // Indicates whether a user can access the device's Settings app while in Kiosk Mode.
    kioskCustomizationDeviceSettingsBlocked?: NullableOption<boolean>;
    // Whether the power menu is shown when a user long presses the Power button of a device in Kiosk Mode.
    kioskCustomizationPowerButtonActionsBlocked?: NullableOption<boolean>;
    /**
     * Indicates whether system info and notifications are disabled in Kiosk Mode. Possible values are: notConfigured,
     * notificationsAndSystemInfoEnabled, systemInfoOnly.
     */
    kioskCustomizationStatusBar?: NullableOption<AndroidDeviceOwnerKioskCustomizationStatusBar>;
    // Indicates whether system error dialogs for crashed or unresponsive apps are shown in Kiosk Mode.
    kioskCustomizationSystemErrorWarnings?: NullableOption<boolean>;
    /**
     * Indicates which navigation features are enabled in Kiosk Mode. Possible values are: notConfigured, navigationEnabled,
     * homeButtonOnly.
     */
    kioskCustomizationSystemNavigation?: NullableOption<AndroidDeviceOwnerKioskCustomizationSystemNavigation>;
    // Whether or not to enable app ordering in Kiosk Mode.
    kioskModeAppOrderEnabled?: NullableOption<boolean>;
    // The ordering of items on Kiosk Mode Managed Home Screen. This collection can contain a maximum of 500 elements.
    kioskModeAppPositions?: NullableOption<AndroidDeviceOwnerKioskModeAppPositionItem[]>;
    /**
     * A list of managed apps that will be shown when the device is in Kiosk Mode. This collection can contain a maximum of
     * 500 elements.
     */
    kioskModeApps?: NullableOption<AppListItem[]>;
    // Whether or not to alphabetize applications within a folder in Kiosk Mode.
    kioskModeAppsInFolderOrderedByName?: NullableOption<boolean>;
    // Whether or not to allow a user to configure Bluetooth settings in Kiosk Mode.
    kioskModeBluetoothConfigurationEnabled?: NullableOption<boolean>;
    // Whether or not to allow a user to easy access to the debug menu in Kiosk Mode.
    kioskModeDebugMenuEasyAccessEnabled?: NullableOption<boolean>;
    // Exit code to allow a user to escape from Kiosk Mode when the device is in Kiosk Mode.
    kioskModeExitCode?: NullableOption<string>;
    // Whether or not to allow a user to use the flashlight in Kiosk Mode.
    kioskModeFlashlightConfigurationEnabled?: NullableOption<boolean>;
    /**
     * Folder icon configuration for managed home screen in Kiosk Mode. Possible values are: notConfigured, darkSquare,
     * darkCircle, lightSquare, lightCircle.
     */
    kioskModeFolderIcon?: NullableOption<AndroidDeviceOwnerKioskModeFolderIcon>;
    // Number of rows for Managed Home Screen grid with app ordering enabled in Kiosk Mode. Valid values 1 to 9999999
    kioskModeGridHeight?: NullableOption<number>;
    // Number of columns for Managed Home Screen grid with app ordering enabled in Kiosk Mode. Valid values 1 to 9999999
    kioskModeGridWidth?: NullableOption<number>;
    /**
     * Icon size configuration for managed home screen in Kiosk Mode. Possible values are: notConfigured, smallest, small,
     * regular, large, largest.
     */
    kioskModeIconSize?: NullableOption<AndroidDeviceOwnerKioskModeIconSize>;
    // Whether or not to lock home screen to the end user in Kiosk Mode.
    kioskModeLockHomeScreen?: NullableOption<boolean>;
    // A list of managed folders for a device in Kiosk Mode. This collection can contain a maximum of 500 elements.
    kioskModeManagedFolders?: NullableOption<AndroidDeviceOwnerKioskModeManagedFolder[]>;
    // Whether or not to display the Managed Settings entry point on the managed home screen in Kiosk Mode.
    kioskModeManagedSettingsEntryDisabled?: NullableOption<boolean>;
    // Whether or not to allow a user to change the media volume in Kiosk Mode.
    kioskModeMediaVolumeConfigurationEnabled?: NullableOption<boolean>;
    /**
     * Screen orientation configuration for managed home screen in Kiosk Mode. Possible values are: notConfigured, portrait,
     * landscape, autoRotate.
     */
    kioskModeScreenOrientation?: NullableOption<AndroidDeviceOwnerKioskModeScreenOrientation>;
    // Whether or not to enable screen saver mode or not in Kiosk Mode.
    kioskModeScreenSaverConfigurationEnabled?: NullableOption<boolean>;
    // Whether or not the device screen should show the screen saver if audio/video is playing in Kiosk Mode.
    kioskModeScreenSaverDetectMediaDisabled?: NullableOption<boolean>;
    // The number of seconds that the device will display the screen saver for in Kiosk Mode. Valid values 0 to 9999999
    kioskModeScreenSaverDisplayTimeInSeconds?: NullableOption<number>;
    // URL for an image that will be the device's screen saver in Kiosk Mode.
    kioskModeScreenSaverImageUrl?: NullableOption<string>;
    /**
     * The number of seconds the device needs to be inactive for before the screen saver is shown in Kiosk Mode. Valid values
     * 1 to 9999999
     */
    kioskModeScreenSaverStartDelayInSeconds?: NullableOption<number>;
    // Whether or not to display application notification badges in Kiosk Mode.
    kioskModeShowAppNotificationBadge?: NullableOption<boolean>;
    // Whether or not to allow a user to access basic device information.
    kioskModeShowDeviceInfo?: NullableOption<boolean>;
    // Whether or not to display a virtual home button when the device is in Kiosk Mode.
    kioskModeVirtualHomeButtonEnabled?: NullableOption<boolean>;
    /**
     * Indicates whether the virtual home button is a swipe up home button or a floating home button. Possible values are:
     * notConfigured, swipeUp, floating.
     */
    kioskModeVirtualHomeButtonType?: NullableOption<AndroidDeviceOwnerVirtualHomeButtonType>;
    // URL to a publicly accessible image to use for the wallpaper when the device is in Kiosk Mode.
    kioskModeWallpaperUrl?: NullableOption<string>;
    /**
     * The restricted set of WIFI SSIDs available for the user to configure in Kiosk Mode. This collection can contain a
     * maximum of 500 elements.
     */
    kioskModeWifiAllowedSsids?: NullableOption<string[]>;
    // Whether or not to allow a user to configure Wi-Fi settings in Kiosk Mode.
    kioskModeWiFiConfigurationEnabled?: NullableOption<boolean>;
    // Indicates whether or not to block unmuting the microphone on the device.
    microphoneForceMute?: NullableOption<boolean>;
    // Indicates whether or not to you want configure Microsoft Launcher.
    microsoftLauncherConfigurationEnabled?: NullableOption<boolean>;
    // Indicates whether or not the user can modify the wallpaper to personalize their device.
    microsoftLauncherCustomWallpaperAllowUserModification?: NullableOption<boolean>;
    // Indicates whether or not to configure the wallpaper on the targeted devices.
    microsoftLauncherCustomWallpaperEnabled?: NullableOption<boolean>;
    // Indicates the URL for the image file to use as the wallpaper on the targeted devices.
    microsoftLauncherCustomWallpaperImageUrl?: NullableOption<string>;
    // Indicates whether or not the user can modify the device dock configuration on the device.
    microsoftLauncherDockPresenceAllowUserModification?: NullableOption<boolean>;
    /**
     * Indicates whether or not you want to configure the device dock. Possible values are: notConfigured, show, hide,
     * disabled.
     */
    microsoftLauncherDockPresenceConfiguration?: NullableOption<MicrosoftLauncherDockPresence>;
    // Indicates whether or not the user can modify the launcher feed on the device.
    microsoftLauncherFeedAllowUserModification?: NullableOption<boolean>;
    // Indicates whether or not you want to enable the launcher feed on the device.
    microsoftLauncherFeedEnabled?: NullableOption<boolean>;
    // Indicates the search bar placement configuration on the device. Possible values are: notConfigured, top, bottom, hide.
    microsoftLauncherSearchBarPlacementConfiguration?: NullableOption<MicrosoftLauncherSearchBarPlacement>;
    // Indicates whether or not the device will allow connecting to a temporary network connection at boot time.
    networkEscapeHatchAllowed?: NullableOption<boolean>;
    // Indicates whether or not to block NFC outgoing beam.
    nfcBlockOutgoingBeam?: NullableOption<boolean>;
    // Indicates whether or not the keyguard is disabled.
    passwordBlockKeyguard?: NullableOption<boolean>;
    // List of device keyguard features to block. This collection can contain a maximum of 7 elements.
    passwordBlockKeyguardFeatures?: AndroidKeyguardFeature[];
    /**
     * Indicates the amount of time that a password can be set for before it expires and a new password will be required.
     * Valid values 1 to 365
     */
    passwordExpirationDays?: NullableOption<number>;
    // Indicates the minimum length of the password required on the device. Valid values 4 to 16
    passwordMinimumLength?: NullableOption<number>;
    // Indicates the minimum number of letter characters required for device password. Valid values 1 to 16
    passwordMinimumLetterCharacters?: NullableOption<number>;
    // Indicates the minimum number of lower case characters required for device password. Valid values 1 to 16
    passwordMinimumLowerCaseCharacters?: NullableOption<number>;
    // Indicates the minimum number of non-letter characters required for device password. Valid values 1 to 16
    passwordMinimumNonLetterCharacters?: NullableOption<number>;
    // Indicates the minimum number of numeric characters required for device password. Valid values 1 to 16
    passwordMinimumNumericCharacters?: NullableOption<number>;
    // Indicates the minimum number of symbol characters required for device password. Valid values 1 to 16
    passwordMinimumSymbolCharacters?: NullableOption<number>;
    // Indicates the minimum number of upper case letter characters required for device password. Valid values 1 to 16
    passwordMinimumUpperCaseCharacters?: NullableOption<number>;
    // Minutes of inactivity before the screen times out.
    passwordMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    /**
     * Indicates the length of password history, where the user will not be able to enter a new password that is the same as
     * any password in the history. Valid values 0 to 24
     */
    passwordPreviousPasswordCountToBlock?: NullableOption<number>;
    /**
     * Indicates the minimum password quality required on the device. Possible values are: deviceDefault, required, numeric,
     * numericComplex, alphabetic, alphanumeric, alphanumericWithSymbols, lowSecurityBiometric, customPassword.
     */
    passwordRequiredType?: NullableOption<AndroidDeviceOwnerRequiredPasswordType>;
    // Indicates the number of times a user can enter an incorrect password before the device is wiped. Valid values 4 to 11
    passwordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    // Indicates whether the user can install apps from unknown sources on the personal profile.
    personalProfileAppsAllowInstallFromUnknownSources?: NullableOption<boolean>;
    // Indicates whether to disable the use of the camera on the personal profile.
    personalProfileCameraBlocked?: NullableOption<boolean>;
    // Indicates whether to disable the capability to take screenshots on the personal profile.
    personalProfileScreenCaptureBlocked?: NullableOption<boolean>;
    // Indicates the Play Store mode of the device. Possible values are: notConfigured, allowList, blockList.
    playStoreMode?: NullableOption<AndroidDeviceOwnerPlayStoreMode>;
    // Indicates whether or not rebooting the device into safe boot is disabled.
    safeBootBlocked?: NullableOption<boolean>;
    // Indicates whether or not to disable the capability to take screenshots.
    screenCaptureBlocked?: NullableOption<boolean>;
    // Indicates whether or not to block the user from enabling debugging features on the device.
    securityAllowDebuggingFeatures?: NullableOption<boolean>;
    // Indicates whether or not verify apps is required.
    securityRequireVerifyApps?: NullableOption<boolean>;
    // Indicates whether or the status bar is disabled, including notifications, quick settings and other screen overlays.
    statusBarBlocked?: NullableOption<boolean>;
    // List of modes in which the device's display will stay powered-on. This collection can contain a maximum of 4 elements.
    stayOnModes?: AndroidDeviceOwnerBatteryPluggedMode[];
    // Indicates whether or not to allow USB mass storage.
    storageAllowUsb?: NullableOption<boolean>;
    // Indicates whether or not to block external media.
    storageBlockExternalMedia?: NullableOption<boolean>;
    // Indicates whether or not to block USB file transfer.
    storageBlockUsbFileTransfer?: NullableOption<boolean>;
    // The type of system update configuration. Possible values are: deviceDefault, postpone, windowed, automatic.
    systemUpdateInstallType?: NullableOption<AndroidDeviceOwnerSystemUpdateInstallType>;
    // Indicates the number of minutes after midnight that the system update window ends. Valid values 0 to 1440
    systemUpdateWindowEndMinutesAfterMidnight?: NullableOption<number>;
    // Indicates the number of minutes after midnight that the system update window starts. Valid values 0 to 1440
    systemUpdateWindowStartMinutesAfterMidnight?: NullableOption<number>;
    // Whether or not to block Android system prompt windows, like toasts, phone activities, and system alerts.
    systemWindowsBlocked?: NullableOption<boolean>;
    // Indicates whether or not adding users and profiles is disabled.
    usersBlockAdd?: NullableOption<boolean>;
    // Indicates whether or not to disable removing other users from the device.
    usersBlockRemove?: NullableOption<boolean>;
    // Indicates whether or not adjusting the master volume is disabled.
    volumeBlockAdjustment?: NullableOption<boolean>;
    // If an always on VPN package name is specified, whether or not to lock network traffic when that VPN is disconnected.
    vpnAlwaysOnLockdownMode?: NullableOption<boolean>;
    // Android app package name for app that will handle an always-on VPN connection.
    vpnAlwaysOnPackageIdentifier?: NullableOption<string>;
    // Indicates whether or not to block the user from editing the wifi connection settings.
    wifiBlockEditConfigurations?: NullableOption<boolean>;
    // Indicates whether or not to block the user from editing just the networks defined by the policy.
    wifiBlockEditPolicyDefinedConfigurations?: NullableOption<boolean>;
    /**
     * Indicates the number of days that a work profile password can be set before it expires and a new password will be
     * required. Valid values 1 to 365
     */
    workProfilePasswordExpirationDays?: NullableOption<number>;
    // Indicates the minimum length of the work profile password. Valid values 4 to 16
    workProfilePasswordMinimumLength?: NullableOption<number>;
    // Indicates the minimum number of letter characters required for the work profile password. Valid values 1 to 16
    workProfilePasswordMinimumLetterCharacters?: NullableOption<number>;
    // Indicates the minimum number of lower-case characters required for the work profile password. Valid values 1 to 16
    workProfilePasswordMinimumLowerCaseCharacters?: NullableOption<number>;
    // Indicates the minimum number of non-letter characters required for the work profile password. Valid values 1 to 16
    workProfilePasswordMinimumNonLetterCharacters?: NullableOption<number>;
    // Indicates the minimum number of numeric characters required for the work profile password. Valid values 1 to 16
    workProfilePasswordMinimumNumericCharacters?: NullableOption<number>;
    // Indicates the minimum number of symbol characters required for the work profile password. Valid values 1 to 16
    workProfilePasswordMinimumSymbolCharacters?: NullableOption<number>;
    /**
     * Indicates the minimum number of upper-case letter characters required for the work profile password. Valid values 1 to
     * 16
     */
    workProfilePasswordMinimumUpperCaseCharacters?: NullableOption<number>;
    /**
     * Indicates the length of the work profile password history, where the user will not be able to enter a new password that
     * is the same as any password in the history. Valid values 0 to 24
     */
    workProfilePasswordPreviousPasswordCountToBlock?: NullableOption<number>;
    /**
     * Indicates the minimum password quality required on the work profile password. Possible values are: deviceDefault,
     * required, numeric, numericComplex, alphabetic, alphanumeric, alphanumericWithSymbols, lowSecurityBiometric,
     * customPassword.
     */
    workProfilePasswordRequiredType?: NullableOption<AndroidDeviceOwnerRequiredPasswordType>;
    /**
     * Indicates the number of times a user can enter an incorrect work profile password before the device is wiped. Valid
     * values 4 to 11
     */
    workProfilePasswordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
}
export interface AndroidDeviceOwnerImportedPFXCertificateProfile extends AndroidDeviceOwnerCertificateProfileBase {
    /**
     * Intended Purpose of the Certificate Profile - which could be Unassigned, SmimeEncryption, SmimeSigning etc. Possible
     * values are: unassigned, smimeEncryption, smimeSigning, vpn, wifi.
     */
    intendedPurpose?: IntendedPurpose;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface ManagedDeviceCertificateState extends Entity {
    // Extended key usage
    certificateEnhancedKeyUsage?: NullableOption<string>;
    // Error code
    certificateErrorCode?: number;
    // Certificate expiry date
    certificateExpirationDateTime?: string;
    // Issuance date
    certificateIssuanceDateTime?: string;
    /**
     * Issuance State. Possible values are: unknown, challengeIssued, challengeIssueFailed, requestCreationFailed,
     * requestSubmitFailed, challengeValidationSucceeded, challengeValidationFailed, issueFailed, issuePending, issued,
     * responseProcessingFailed, responsePending, enrollmentSucceeded, enrollmentNotNeeded, revoked, removedFromCollection,
     * renewVerified, installFailed, installed, deleteFailed, deleted, renewalRequested, requested.
     */
    certificateIssuanceState?: CertificateIssuanceStates;
    // Issuer
    certificateIssuer?: NullableOption<string>;
    // Key length
    certificateKeyLength?: number;
    /**
     * Key Storage Provider. Possible values are: useTpmKspOtherwiseUseSoftwareKsp, useTpmKspOtherwiseFail,
     * usePassportForWorkKspOtherwiseFail, useSoftwareKsp.
     */
    certificateKeyStorageProvider?: KeyStorageProviderOption;
    // Key usage. Possible values are: keyEncipherment, digitalSignature.
    certificateKeyUsage?: KeyUsages;
    // Last certificate issuance state change
    certificateLastIssuanceStateChangedDateTime?: string;
    // Certificate profile display name
    certificateProfileDisplayName?: NullableOption<string>;
    // Revoke status. Possible values are: none, pending, issued, failed, revoked.
    certificateRevokeStatus?: CertificateRevocationStatus;
    // Serial number
    certificateSerialNumber?: NullableOption<string>;
    /**
     * Subject alternative name format. Possible values are: none, emailAddress, userPrincipalName, customAzureADAttribute,
     * domainNameService, universalResourceIdentifier.
     */
    certificateSubjectAlternativeNameFormat?: SubjectAlternativeNameType;
    // Subject alternative name format string for custom formats
    certificateSubjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Subject name format. Possible values are: commonName, commonNameIncludingEmail, commonNameAsEmail, custom,
     * commonNameAsIMEI, commonNameAsSerialNumber, commonNameAsAadDeviceId, commonNameAsIntuneDeviceId,
     * commonNameAsDurableDeviceId.
     */
    certificateSubjectNameFormat?: SubjectNameFormat;
    // Subject name format string for custom subject name formats
    certificateSubjectNameFormatString?: NullableOption<string>;
    // Thumbprint
    certificateThumbprint?: NullableOption<string>;
    // Validity period
    certificateValidityPeriod?: number;
    // Validity period units. Possible values are: days, months, years.
    certificateValidityPeriodUnits?: CertificateValidityPeriodScale;
    // Device display name
    deviceDisplayName?: NullableOption<string>;
    /**
     * Device platform. Possible values are: android, androidForWork, iOS, macOS, windowsPhone81, windows81AndLater,
     * windows10AndLater, androidWorkProfile, unknown, androidAOSP.
     */
    devicePlatform?: DevicePlatformType;
    // Last certificate issuance state change
    lastCertificateStateChangeDateTime?: string;
    // User display name
    userDisplayName?: NullableOption<string>;
}
export interface AndroidDeviceOwnerPkcsCertificateProfile extends AndroidDeviceOwnerCertificateProfileBase {
    // Target store certificate. Possible values are: user, machine.
    certificateStore?: CertificateStore;
    // PKCS Certificate Template Name
    certificateTemplateName?: string;
    // PKCS Certification Authority
    certificationAuthority?: string;
    // PKCS Certification Authority Name
    certificationAuthorityName?: NullableOption<string>;
    // Certification authority type. Possible values are: notConfigured, microsoft, digiCert.
    certificationAuthorityType?: DeviceManagementCertificationAuthority;
    // Custom Subject Alternative Name Settings. This collection can contain a maximum of 500 elements.
    customSubjectAlternativeNames?: NullableOption<CustomSubjectAlternativeName[]>;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: string;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface AndroidDeviceOwnerScepCertificateProfile extends AndroidDeviceOwnerCertificateProfileBase {
    // Target store certificate. Possible values are: user, machine.
    certificateStore?: NullableOption<CertificateStore>;
    // Custom Subject Alternative Name Settings. This collection can contain a maximum of 500 elements.
    customSubjectAlternativeNames?: NullableOption<CustomSubjectAlternativeName[]>;
    // SCEP Hash Algorithm. Possible values are: sha1, sha2.
    hashAlgorithm?: HashAlgorithms;
    // SCEP Key Size. Possible values are: size1024, size2048, size4096.
    keySize?: KeySize;
    // SCEP Key Usage. Possible values are: keyEncipherment, digitalSignature.
    keyUsage?: KeyUsages;
    // SCEP Server Url(s)
    scepServerUrls?: NullableOption<string[]>;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface VpnConfiguration extends DeviceConfiguration {
    // Authentication method. Possible values are: certificate, usernameAndPassword, sharedSecret, derivedCredential, azureAD.
    authenticationMethod?: VpnAuthenticationMethod;
    // Connection name displayed to the user.
    connectionName?: string;
    // Realm when connection type is set to Pulse Secure.
    realm?: NullableOption<string>;
    // Role when connection type is set to Pulse Secure.
    role?: NullableOption<string>;
    /**
     * List of VPN Servers on the network. Make sure end users can access these network locations. This collection can contain
     * a maximum of 500 elements.
     */
    servers?: VpnServer[];
}
export interface AndroidDeviceOwnerVpnConfiguration extends VpnConfiguration {
    // Whether or not to enable always-on VPN connection.
    alwaysOn?: NullableOption<boolean>;
    // If always-on VPN connection is enabled, whether or not to lock network traffic when that VPN is disconnected.
    alwaysOnLockdown?: NullableOption<boolean>;
    /**
     * Connection type. Possible values are: ciscoAnyConnect, pulseSecure, f5EdgeClient, dellSonicWallMobileConnect,
     * checkPointCapsuleVpn, citrix, microsoftTunnel, netMotionMobility, microsoftProtect.
     */
    connectionType?: AndroidVpnConnectionType;
    // Custom data to define key/value pairs specific to a VPN provider. This collection can contain a maximum of 25 elements.
    customData?: NullableOption<KeyValue[]>;
    // Custom data to define key/value pairs specific to a VPN provider. This collection can contain a maximum of 25 elements.
    customKeyValueData?: NullableOption<KeyValuePair[]>;
    // Microsoft Tunnel site ID.
    microsoftTunnelSiteId?: NullableOption<string>;
    // Proxy server.
    proxyServer?: NullableOption<VpnProxyServer>;
    // Targeted mobile apps. This collection can contain a maximum of 500 elements.
    targetedMobileApps?: NullableOption<AppListItem[]>;
    // Targeted App package IDs.
    targetedPackageIds?: NullableOption<string[]>;
    // Tenant level settings for the Derived Credentials to be used for authentication.
    derivedCredentialSettings?: NullableOption<DeviceManagementDerivedCredentialSettings>;
    // Identity certificate for client authentication when authentication method is certificate.
    identityCertificate?: NullableOption<AndroidDeviceOwnerCertificateProfileBase>;
}
export interface AndroidEasEmailProfileConfiguration extends DeviceConfiguration {
    // Exchange ActiveSync account name, displayed to users as name of EAS (this) profile.
    accountName?: string;
    /**
     * Authentication method for Exchange ActiveSync. Possible values are: usernameAndPassword, certificate,
     * derivedCredential.
     */
    authenticationMethod?: EasAuthenticationMethod;
    // Custom domain name value used while generating an email profile before installing on the device.
    customDomainName?: NullableOption<string>;
    /**
     * Duration of time email should be synced to. Possible values are: userDefined, oneDay, threeDays, oneWeek, twoWeeks,
     * oneMonth, unlimited.
     */
    durationOfEmailToSync?: EmailSyncDuration;
    /**
     * Email attribute that is picked from AAD and injected into this profile before installing on the device. Possible values
     * are: userPrincipalName, primarySmtpAddress.
     */
    emailAddressSource?: UserEmailSource;
    /**
     * Email sync schedule. Possible values are: userDefined, asMessagesArrive, manual, fifteenMinutes, thirtyMinutes,
     * sixtyMinutes, basedOnMyUsage.
     */
    emailSyncSchedule?: EmailSyncSchedule;
    // Exchange location (URL) that the native mail app connects to.
    hostName?: string;
    // Indicates whether or not to use S/MIME certificate.
    requireSmime?: boolean;
    // Indicates whether or not to use SSL.
    requireSsl?: boolean;
    // Toggles syncing the calendar. If set to false calendar is turned off on the device.
    syncCalendar?: boolean;
    // Toggles syncing contacts. If set to false contacts are turned off on the device.
    syncContacts?: boolean;
    // Toggles syncing notes. If set to false notes are turned off on the device.
    syncNotes?: boolean;
    // Toggles syncing tasks. If set to false tasks are turned off on the device.
    syncTasks?: boolean;
    /**
     * UserDomainname attribute that is picked from AAD and injected into this profile before installing on the device.
     * Possible values are: fullDomainName, netBiosDomainName.
     */
    userDomainNameSource?: NullableOption<DomainNameSource>;
    /**
     * Username attribute that is picked from AAD and injected into this profile before installing on the device. Possible
     * values are: username, userPrincipalName, samAccountName, primarySmtpAddress.
     */
    usernameSource?: AndroidUsernameSource;
    // Identity certificate.
    identityCertificate?: NullableOption<AndroidCertificateProfileBase>;
    // S/MIME signing certificate.
    smimeSigningCertificate?: NullableOption<AndroidCertificateProfileBase>;
}
export interface AndroidWiFiConfiguration extends DeviceConfiguration {
    /**
     * Connect automatically when this network is in range. Setting this to true will skip the user prompt and automatically
     * connect the device to Wi-Fi network.
     */
    connectAutomatically?: boolean;
    /**
     * When set to true, this profile forces the device to connect to a network that doesn't broadcast its SSID to all
     * devices.
     */
    connectWhenNetworkNameIsHidden?: boolean;
    // Network Name
    networkName?: string;
    // This is the name of the Wi-Fi network that is broadcast to all devices.
    ssid?: string;
    /**
     * Indicates whether Wi-Fi endpoint uses an EAP based security type. Possible values are: open, wpaEnterprise,
     * wpa2Enterprise.
     */
    wiFiSecurityType?: AndroidWiFiSecurityType;
}
export interface AndroidEnterpriseWiFiConfiguration extends AndroidWiFiConfiguration {
    /**
     * Indicates the Authentication Method the client (device) needs to use when the EAP Type is configured to PEAP or
     * EAP-TTLS. Possible values are: certificate, usernameAndPassword, derivedCredential.
     */
    authenticationMethod?: NullableOption<WiFiAuthenticationMethod>;
    // Indicates the type of EAP protocol set on the Wi-Fi endpoint (router). Possible values are: eapTls, eapTtls, peap.
    eapType?: AndroidEapType;
    /**
     * Non-EAP Method for Authentication (Inner Identity) when EAP Type is EAP-TTLS and Authenticationmethod is Username and
     * Password. Possible values are: unencryptedPassword, challengeHandshakeAuthenticationProtocol, microsoftChap,
     * microsoftChapVersionTwo.
     */
    innerAuthenticationProtocolForEapTtls?: NullableOption<NonEapAuthenticationMethodForEapTtlsType>;
    /**
     * Non-EAP Method for Authentication (Inner Identity) when EAP Type is PEAP and Authenticationmethod is Username and
     * Password. Possible values are: none, microsoftChapVersionTwo.
     */
    innerAuthenticationProtocolForPeap?: NullableOption<NonEapAuthenticationMethodForPeap>;
    /**
     * Enable identity privacy (Outer Identity) when EAP Type is configured to EAP-TTLS or PEAP. The String provided here is
     * used to mask the username of individual users when they attempt to connect to Wi-Fi network.
     */
    outerIdentityPrivacyTemporaryValue?: NullableOption<string>;
    // Password format string used to build the password to connect to wifi
    passwordFormatString?: NullableOption<string>;
    // PreSharedKey used to build the password to connect to wifi
    preSharedKey?: NullableOption<string>;
    /**
     * Trusted server certificate names when EAP Type is configured to EAP-TLS/TTLS/FAST or PEAP. This is the common name used
     * in the certificates issued by your trusted certificate authority (CA). If you provide this information, you can bypass
     * the dynamic trust dialog that is displayed on end users' devices when they connect to this Wi-Fi network.
     */
    trustedServerCertificateNames?: NullableOption<string[]>;
    // Username format string used to build the username to connect to wifi
    usernameFormatString?: NullableOption<string>;
    /**
     * Identity Certificate for client authentication when EAP Type is configured to EAP-TLS, EAP-TTLS (with Certificate
     * Authentication), or PEAP (with Certificate Authentication). This is the certificate presented by client to the Wi-Fi
     * endpoint. The authentication server sitting behind the Wi-Fi endpoint must accept this certificate to successfully
     * establish a Wi-Fi connection.
     */
    identityCertificateForClientAuthentication?: NullableOption<AndroidCertificateProfileBase>;
    /**
     * Trusted Root Certificate for Server Validation when EAP Type is configured to EAP-TLS, EAP-TTLS or PEAP. This is the
     * certificate presented by the Wi-Fi endpoint when the device attempts to connect to Wi-Fi endpoint. The device (or user)
     * must accept this certificate to continue the connection attempt.
     */
    rootCertificateForServerValidation?: NullableOption<AndroidTrustedRootCertificate>;
}
export interface AndroidForWorkCertificateProfileBase extends DeviceConfiguration {
    // Scale for the Certificate Validity Period. Possible values are: days, months, years.
    certificateValidityPeriodScale?: CertificateValidityPeriodScale;
    // Value for the Certificate Validity Period.
    certificateValidityPeriodValue?: number;
    // Extended Key Usage (EKU) settings. This collection can contain a maximum of 500 elements.
    extendedKeyUsages?: ExtendedKeyUsage[];
    // Certificate renewal threshold percentage. Valid values 1 to 99
    renewalThresholdPercentage?: number;
    /**
     * Certificate Subject Alternative Name Type. Possible values are: none, emailAddress, userPrincipalName,
     * customAzureADAttribute, domainNameService, universalResourceIdentifier.
     */
    subjectAlternativeNameType?: NullableOption<SubjectAlternativeNameType>;
    /**
     * Certificate Subject Name Format. Possible values are: commonName, commonNameIncludingEmail, commonNameAsEmail, custom,
     * commonNameAsIMEI, commonNameAsSerialNumber, commonNameAsAadDeviceId, commonNameAsIntuneDeviceId,
     * commonNameAsDurableDeviceId.
     */
    subjectNameFormat?: SubjectNameFormat;
    // Trusted Root Certificate.
    rootCertificate?: NullableOption<AndroidForWorkTrustedRootCertificate>;
}
export interface AndroidForWorkTrustedRootCertificate extends DeviceConfiguration {
    // File name to display in UI.
    certFileName?: NullableOption<string>;
    // Trusted Root Certificate
    trustedRootCertificate?: number;
}
export interface AndroidForWorkCompliancePolicy extends DeviceCompliancePolicy {
    // Require that devices have enabled device threat protection.
    deviceThreatProtectionEnabled?: boolean;
    /**
     * Require Mobile Threat Protection minimum risk level to report noncompliance. Possible values are: unavailable, secured,
     * low, medium, high, notSet.
     */
    deviceThreatProtectionRequiredSecurityLevel?: DeviceThreatProtectionLevel;
    // Minimum Android security patch level.
    minAndroidSecurityPatchLevel?: NullableOption<string>;
    // Maximum Android version.
    osMaximumVersion?: NullableOption<string>;
    // Minimum Android version.
    osMinimumVersion?: NullableOption<string>;
    // Number of days before the password expires. Valid values 1 to 365
    passwordExpirationDays?: NullableOption<number>;
    // Minimum password length. Valid values 4 to 16
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before a password is required.
    passwordMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // Number of previous passwords to block. Valid values 1 to 24
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Require a password to unlock device.
    passwordRequired?: boolean;
    /**
     * Type of characters in password. Possible values are: deviceDefault, alphabetic, alphanumeric, alphanumericWithSymbols,
     * lowSecurityBiometric, numeric, numericComplex, any.
     */
    passwordRequiredType?: AndroidRequiredPasswordType;
    // Number of sign-in failures allowed before factory reset. Valid values 1 to 16
    passwordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    // Devices must not be jailbroken or rooted.
    securityBlockJailbrokenDevices?: boolean;
    // Disable USB debugging on Android devices.
    securityDisableUsbDebugging?: boolean;
    // Require that devices disallow installation of apps from unknown sources.
    securityPreventInstallAppsFromUnknownSources?: boolean;
    // Require the device to pass the Company Portal client app runtime integrity check.
    securityRequireCompanyPortalAppIntegrity?: boolean;
    // Require a specific SafetyNet evaluation type for compliance. Possible values are: basic, hardwareBacked.
    securityRequiredAndroidSafetyNetEvaluationType?: AndroidSafetyNetEvaluationType;
    // Require Google Play Services to be installed and enabled on the device.
    securityRequireGooglePlayServices?: boolean;
    // Require the device to pass the SafetyNet basic integrity check.
    securityRequireSafetyNetAttestationBasicIntegrity?: boolean;
    // Require the device to pass the SafetyNet certified device check.
    securityRequireSafetyNetAttestationCertifiedDevice?: boolean;
    /**
     * Require the device to have up to date security providers. The device will require Google Play Services to be enabled
     * and up to date.
     */
    securityRequireUpToDateSecurityProviders?: boolean;
    // Require the Android Verify apps feature is turned on.
    securityRequireVerifyApps?: boolean;
    // Require encryption on Android devices.
    storageRequireEncryption?: boolean;
}
export interface AndroidForWorkCustomConfiguration extends DeviceConfiguration {
    // OMA settings. This collection can contain a maximum of 500 elements.
    omaSettings?: NullableOption<OmaSetting[]>;
}
export interface AndroidForWorkEasEmailProfileBase extends DeviceConfiguration {
    /**
     * Authentication method for Exchange ActiveSync. Possible values are: usernameAndPassword, certificate,
     * derivedCredential.
     */
    authenticationMethod?: EasAuthenticationMethod;
    /**
     * Duration of time email should be synced to. Possible values are: userDefined, oneDay, threeDays, oneWeek, twoWeeks,
     * oneMonth, unlimited.
     */
    durationOfEmailToSync?: EmailSyncDuration;
    /**
     * Email attribute that is picked from AAD and injected into this profile before installing on the device. Possible values
     * are: userPrincipalName, primarySmtpAddress.
     */
    emailAddressSource?: UserEmailSource;
    // Exchange location (URL) that the mail app connects to.
    hostName?: string;
    // Indicates whether or not to use SSL.
    requireSsl?: boolean;
    /**
     * Username attribute that is picked from AAD and injected into this profile before installing on the device. Possible
     * values are: username, userPrincipalName, samAccountName, primarySmtpAddress.
     */
    usernameSource?: AndroidUsernameSource;
    // Identity certificate.
    identityCertificate?: NullableOption<AndroidForWorkCertificateProfileBase>;
}
export interface AndroidForWorkWiFiConfiguration extends DeviceConfiguration {
    /**
     * Connect automatically when this network is in range. Setting this to true will skip the user prompt and automatically
     * connect the device to Wi-Fi network.
     */
    connectAutomatically?: boolean;
    /**
     * When set to true, this profile forces the device to connect to a network that doesn't broadcast its SSID to all
     * devices.
     */
    connectWhenNetworkNameIsHidden?: boolean;
    // Network Name
    networkName?: string;
    // This is the name of the Wi-Fi network that is broadcast to all devices.
    ssid?: string;
    /**
     * Indicates whether Wi-Fi endpoint uses an EAP based security type. Possible values are: open, wpaEnterprise,
     * wpa2Enterprise.
     */
    wiFiSecurityType?: AndroidWiFiSecurityType;
}
export interface AndroidForWorkEnterpriseWiFiConfiguration extends AndroidForWorkWiFiConfiguration {
    /**
     * Indicates the Authentication Method the client (device) needs to use when the EAP Type is configured to PEAP or
     * EAP-TTLS. Possible values are: certificate, usernameAndPassword, derivedCredential.
     */
    authenticationMethod?: NullableOption<WiFiAuthenticationMethod>;
    // Indicates the type of EAP protocol set on the Wi-Fi endpoint (router). Possible values are: eapTls, eapTtls, peap.
    eapType?: AndroidEapType;
    /**
     * Non-EAP Method for Authentication (Inner Identity) when EAP Type is EAP-TTLS and Authenticationmethod is Username and
     * Password. Possible values are: unencryptedPassword, challengeHandshakeAuthenticationProtocol, microsoftChap,
     * microsoftChapVersionTwo.
     */
    innerAuthenticationProtocolForEapTtls?: NullableOption<NonEapAuthenticationMethodForEapTtlsType>;
    /**
     * Non-EAP Method for Authentication (Inner Identity) when EAP Type is PEAP and Authenticationmethod is Username and
     * Password. Possible values are: none, microsoftChapVersionTwo.
     */
    innerAuthenticationProtocolForPeap?: NullableOption<NonEapAuthenticationMethodForPeap>;
    /**
     * Enable identity privacy (Outer Identity) when EAP Type is configured to EAP-TTLS or PEAP. The String provided here is
     * used to mask the username of individual users when they attempt to connect to Wi-Fi network.
     */
    outerIdentityPrivacyTemporaryValue?: NullableOption<string>;
    /**
     * Trusted server certificate names when EAP Type is configured to EAP-TLS/TTLS/FAST or PEAP. This is the common name used
     * in the certificates issued by your trusted certificate authority (CA). If you provide this information, you can bypass
     * the dynamic trust dialog that is displayed on end users' devices when they connect to this Wi-Fi network.
     */
    trustedServerCertificateNames?: NullableOption<string[]>;
    /**
     * Identity Certificate for client authentication when EAP Type is configured to EAP-TLS, EAP-TTLS (with Certificate
     * Authentication), or PEAP (with Certificate Authentication). This is the certificate presented by client to the Wi-Fi
     * endpoint. The authentication server sitting behind the Wi-Fi endpoint must accept this certificate to successfully
     * establish a Wi-Fi connection.
     */
    identityCertificateForClientAuthentication?: NullableOption<AndroidForWorkCertificateProfileBase>;
    /**
     * Trusted Root Certificate for Server Validation when EAP Type is configured to EAP-TLS, EAP-TTLS or PEAP. This is the
     * certificate presented by the Wi-Fi endpoint when the device attempts to connect to Wi-Fi endpoint. The device (or user)
     * must accept this certificate to continue the connection attempt.
     */
    rootCertificateForServerValidation?: NullableOption<AndroidForWorkTrustedRootCertificate>;
}
export interface AndroidForWorkGeneralDeviceConfiguration extends DeviceConfiguration {
    // Indicates whether or not to block face unlock.
    passwordBlockFaceUnlock?: boolean;
    // Indicates whether or not to block fingerprint unlock.
    passwordBlockFingerprintUnlock?: boolean;
    // Indicates whether or not to block iris unlock.
    passwordBlockIrisUnlock?: boolean;
    // Indicates whether or not to block Smart Lock and other trust agents.
    passwordBlockTrustAgents?: boolean;
    // Number of days before the password expires. Valid values 1 to 365
    passwordExpirationDays?: NullableOption<number>;
    // Minimum length of passwords. Valid values 4 to 16
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before the screen times out.
    passwordMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    // Number of previous passwords to block. Valid values 0 to 24
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    /**
     * Type of password that is required. Possible values are: deviceDefault, lowSecurityBiometric, required, atLeastNumeric,
     * numericComplex, atLeastAlphabetic, atLeastAlphanumeric, alphanumericWithSymbols.
     */
    passwordRequiredType?: AndroidForWorkRequiredPasswordType;
    // Number of sign in failures allowed before factory reset. Valid values 1 to 16
    passwordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    // Require the Android Verify apps feature is turned on.
    securityRequireVerifyApps?: boolean;
    // Enable lockdown mode for always-on VPN.
    vpnAlwaysOnPackageIdentifier?: NullableOption<string>;
    // Enable lockdown mode for always-on VPN.
    vpnEnableAlwaysOnLockdownMode?: boolean;
    // Allow widgets from work profile apps.
    workProfileAllowWidgets?: boolean;
    // Block users from adding/removing accounts in work profile.
    workProfileBlockAddingAccounts?: boolean;
    // Block work profile camera.
    workProfileBlockCamera?: boolean;
    // Block display work profile caller ID in personal profile.
    workProfileBlockCrossProfileCallerId?: boolean;
    // Block work profile contacts availability in personal profile.
    workProfileBlockCrossProfileContactsSearch?: boolean;
    // Boolean that indicates if the setting disallow cross profile copy/paste is enabled.
    workProfileBlockCrossProfileCopyPaste?: boolean;
    // Indicates whether or not to block notifications while device locked.
    workProfileBlockNotificationsWhileDeviceLocked?: boolean;
    // Prevent app installations from unknown sources in the personal profile.
    workProfileBlockPersonalAppInstallsFromUnknownSources?: boolean;
    // Block screen capture in work profile.
    workProfileBlockScreenCapture?: boolean;
    // Allow bluetooth devices to access enterprise contacts.
    workProfileBluetoothEnableContactSharing?: boolean;
    /**
     * Type of data sharing that is allowed. Possible values are: deviceDefault, preventAny, allowPersonalToWork,
     * noRestrictions.
     */
    workProfileDataSharingType?: AndroidForWorkCrossProfileDataSharingType;
    // Type of password that is required. Possible values are: deviceDefault, prompt, autoGrant, autoDeny.
    workProfileDefaultAppPermissionPolicy?: AndroidForWorkDefaultAppPermissionPolicyType;
    // Indicates whether or not to block face unlock for work profile.
    workProfilePasswordBlockFaceUnlock?: boolean;
    // Indicates whether or not to block fingerprint unlock for work profile.
    workProfilePasswordBlockFingerprintUnlock?: boolean;
    // Indicates whether or not to block iris unlock for work profile.
    workProfilePasswordBlockIrisUnlock?: boolean;
    // Indicates whether or not to block Smart Lock and other trust agents for work profile.
    workProfilePasswordBlockTrustAgents?: boolean;
    // Number of days before the work profile password expires. Valid values 1 to 365
    workProfilePasswordExpirationDays?: NullableOption<number>;
    // Minimum length of work profile password. Valid values 4 to 16
    workProfilePasswordMinimumLength?: NullableOption<number>;
    // Minimum # of letter characters required in work profile password. Valid values 1 to 10
    workProfilePasswordMinLetterCharacters?: NullableOption<number>;
    // Minimum # of lower-case characters required in work profile password. Valid values 1 to 10
    workProfilePasswordMinLowerCaseCharacters?: NullableOption<number>;
    // Minimum # of non-letter characters required in work profile password. Valid values 1 to 10
    workProfilePasswordMinNonLetterCharacters?: NullableOption<number>;
    // Minimum # of numeric characters required in work profile password. Valid values 1 to 10
    workProfilePasswordMinNumericCharacters?: NullableOption<number>;
    // Minimum # of symbols required in work profile password. Valid values 1 to 10
    workProfilePasswordMinSymbolCharacters?: NullableOption<number>;
    // Minimum # of upper-case characters required in work profile password. Valid values 1 to 10
    workProfilePasswordMinUpperCaseCharacters?: NullableOption<number>;
    // Minutes of inactivity before the screen times out.
    workProfilePasswordMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    // Number of previous work profile passwords to block. Valid values 0 to 24
    workProfilePasswordPreviousPasswordBlockCount?: NullableOption<number>;
    /**
     * Type of work profile password that is required. Possible values are: deviceDefault, lowSecurityBiometric, required,
     * atLeastNumeric, numericComplex, atLeastAlphabetic, atLeastAlphanumeric, alphanumericWithSymbols.
     */
    workProfilePasswordRequiredType?: AndroidForWorkRequiredPasswordType;
    // Number of sign in failures allowed before work profile is removed and all corporate data deleted. Valid values 1 to 16
    workProfilePasswordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    // Password is required or not for work profile
    workProfileRequirePassword?: boolean;
}
// tslint:disable-next-line: no-empty-interface
export interface AndroidForWorkGmailEasConfiguration extends AndroidForWorkEasEmailProfileBase {}
export interface AndroidForWorkImportedPFXCertificateProfile extends AndroidCertificateProfileBase {
    /**
     * Intended Purpose of the Certificate Profile - which could be Unassigned, SmimeEncryption, SmimeSigning etc. Possible
     * values are: unassigned, smimeEncryption, smimeSigning, vpn, wifi.
     */
    intendedPurpose?: IntendedPurpose;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface AndroidForWorkNineWorkEasConfiguration extends AndroidForWorkEasEmailProfileBase {
    // Toggles syncing the calendar. If set to false the calendar is turned off on the device.
    syncCalendar?: boolean;
    // Toggles syncing contacts. If set to false contacts are turned off on the device.
    syncContacts?: boolean;
    // Toggles syncing tasks. If set to false tasks are turned off on the device.
    syncTasks?: boolean;
}
export interface AndroidForWorkPkcsCertificateProfile extends AndroidForWorkCertificateProfileBase {
    // PKCS Certificate Template Name
    certificateTemplateName?: string;
    // PKCS Certification Authority
    certificationAuthority?: string;
    // PKCS Certification Authority Name
    certificationAuthorityName?: string;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface AndroidForWorkScepCertificateProfile extends AndroidForWorkCertificateProfileBase {
    // Target store certificate. Possible values are: user, machine.
    certificateStore?: NullableOption<CertificateStore>;
    // Custom Subject Alternative Name Settings. This collection can contain a maximum of 500 elements.
    customSubjectAlternativeNames?: NullableOption<CustomSubjectAlternativeName[]>;
    // SCEP Hash Algorithm. Possible values are: sha1, sha2.
    hashAlgorithm?: HashAlgorithms;
    // SCEP Key Size. Possible values are: size1024, size2048, size4096.
    keySize?: KeySize;
    // SCEP Key Usage. Possible values are: keyEncipherment, digitalSignature.
    keyUsage?: KeyUsages;
    // SCEP Server Url(s)
    scepServerUrls?: NullableOption<string[]>;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface AndroidForWorkVpnConfiguration extends DeviceConfiguration {
    // Authentication method. Possible values are: certificate, usernameAndPassword, sharedSecret, derivedCredential, azureAD.
    authenticationMethod?: VpnAuthenticationMethod;
    // Connection name displayed to the user.
    connectionName?: string;
    /**
     * Connection type. Possible values are: ciscoAnyConnect, pulseSecure, f5EdgeClient, dellSonicWallMobileConnect,
     * checkPointCapsuleVpn, citrix.
     */
    connectionType?: AndroidForWorkVpnConnectionType;
    // Custom data when connection type is set to Citrix. This collection can contain a maximum of 25 elements.
    customData?: NullableOption<KeyValue[]>;
    // Custom data when connection type is set to Citrix. This collection can contain a maximum of 25 elements.
    customKeyValueData?: NullableOption<KeyValuePair[]>;
    /**
     * Fingerprint is a string that will be used to verify the VPN server can be trusted, which is only applicable when
     * connection type is Check Point Capsule VPN.
     */
    fingerprint?: NullableOption<string>;
    // Realm when connection type is set to Pulse Secure.
    realm?: NullableOption<string>;
    // Role when connection type is set to Pulse Secure.
    role?: NullableOption<string>;
    /**
     * List of VPN Servers on the network. Make sure end users can access these network locations. This collection can contain
     * a maximum of 500 elements.
     */
    servers?: VpnServer[];
    // Identity certificate for client authentication when authentication method is certificate.
    identityCertificate?: NullableOption<AndroidForWorkCertificateProfileBase>;
}
export interface AndroidGeneralDeviceConfiguration extends DeviceConfiguration {
    // Indicates whether or not to block clipboard sharing to copy and paste between applications.
    appsBlockClipboardSharing?: boolean;
    // Indicates whether or not to block copy and paste within applications.
    appsBlockCopyPaste?: boolean;
    // Indicates whether or not to block the YouTube app.
    appsBlockYouTube?: boolean;
    // List of apps to be hidden on the KNOX device. This collection can contain a maximum of 500 elements.
    appsHideList?: NullableOption<AppListItem[]>;
    // List of apps which can be installed on the KNOX device. This collection can contain a maximum of 500 elements.
    appsInstallAllowList?: NullableOption<AppListItem[]>;
    /**
     * List of apps which are blocked from being launched on the KNOX device. This collection can contain a maximum of 500
     * elements.
     */
    appsLaunchBlockList?: NullableOption<AppListItem[]>;
    // Indicates whether or not to block Bluetooth.
    bluetoothBlocked?: boolean;
    // Indicates whether or not to block the use of the camera.
    cameraBlocked?: boolean;
    // Indicates whether or not to block data roaming.
    cellularBlockDataRoaming?: boolean;
    // Indicates whether or not to block SMS/MMS messaging.
    cellularBlockMessaging?: boolean;
    // Indicates whether or not to block voice roaming.
    cellularBlockVoiceRoaming?: boolean;
    // Indicates whether or not to block syncing Wi-Fi tethering.
    cellularBlockWiFiTethering?: boolean;
    // Type of list that is in the CompliantAppsList. Possible values are: none, appsInListCompliant, appsNotInListCompliant.
    compliantAppListType?: AppListType;
    /**
     * List of apps in the compliance (either allow list or block list, controlled by CompliantAppListType). This collection
     * can contain a maximum of 10000 elements.
     */
    compliantAppsList?: NullableOption<AppListItem[]>;
    // Indicates whether or not to block changing date and time while in KNOX Mode.
    dateAndTimeBlockChanges?: boolean;
    // Indicates whether or not to allow device sharing mode.
    deviceSharingAllowed?: boolean;
    // Indicates whether or not to block diagnostic data submission.
    diagnosticDataBlockSubmission?: boolean;
    // Indicates whether or not to block user performing a factory reset.
    factoryResetBlocked?: boolean;
    // Indicates whether or not to block Google account auto sync.
    googleAccountBlockAutoSync?: boolean;
    // Indicates whether or not to block the Google Play store.
    googlePlayStoreBlocked?: boolean;
    /**
     * A list of apps that will be allowed to run when the device is in Kiosk Mode. This collection can contain a maximum of
     * 500 elements.
     */
    kioskModeApps?: NullableOption<AppListItem[]>;
    // Indicates whether or not to block the screen sleep button while in Kiosk Mode.
    kioskModeBlockSleepButton?: boolean;
    // Indicates whether or not to block the volume buttons while in Kiosk Mode.
    kioskModeBlockVolumeButtons?: boolean;
    // Indicates whether or not to block location services.
    locationServicesBlocked?: boolean;
    // Indicates whether or not to block Near-Field Communication.
    nfcBlocked?: boolean;
    // Indicates whether or not to block fingerprint unlock.
    passwordBlockFingerprintUnlock?: boolean;
    // Indicates whether or not to block Smart Lock and other trust agents.
    passwordBlockTrustAgents?: boolean;
    // Number of days before the password expires. Valid values 1 to 365
    passwordExpirationDays?: NullableOption<number>;
    // Minimum length of passwords. Valid values 4 to 16
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before the screen times out.
    passwordMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    // Number of previous passwords to block. Valid values 0 to 24
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Indicates whether or not to require a password.
    passwordRequired?: boolean;
    /**
     * Type of password that is required. Possible values are: deviceDefault, alphabetic, alphanumeric,
     * alphanumericWithSymbols, lowSecurityBiometric, numeric, numericComplex, any.
     */
    passwordRequiredType?: AndroidRequiredPasswordType;
    // Number of sign in failures allowed before factory reset. Valid values 1 to 16
    passwordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    // Indicates whether or not to block powering off the device.
    powerOffBlocked?: boolean;
    /**
     * Indicates the required password complexity on Android. One of: NONE, LOW, MEDIUM, HIGH. This is an API targeted to
     * Android 11+. Possible values are: none, low, medium, high.
     */
    requiredPasswordComplexity?: AndroidRequiredPasswordComplexity;
    // Indicates whether or not to block screenshots.
    screenCaptureBlocked?: boolean;
    // Require the Android Verify apps feature is turned on.
    securityRequireVerifyApps?: boolean;
    // Indicates whether or not to block Google Backup.
    storageBlockGoogleBackup?: boolean;
    // Indicates whether or not to block removable storage usage.
    storageBlockRemovableStorage?: boolean;
    // Indicates whether or not to require device encryption.
    storageRequireDeviceEncryption?: boolean;
    // Indicates whether or not to require removable storage encryption.
    storageRequireRemovableStorageEncryption?: boolean;
    // Indicates whether or not to block the use of the Voice Assistant.
    voiceAssistantBlocked?: boolean;
    // Indicates whether or not to block voice dialing.
    voiceDialingBlocked?: boolean;
    // Indicates whether or not to block the web browser's auto fill feature.
    webBrowserBlockAutofill?: boolean;
    // Indicates whether or not to block the web browser.
    webBrowserBlocked?: boolean;
    // Indicates whether or not to block JavaScript within the web browser.
    webBrowserBlockJavaScript?: boolean;
    // Indicates whether or not to block popups within the web browser.
    webBrowserBlockPopups?: boolean;
    /**
     * Cookie settings within the web browser. Possible values are: browserDefault, blockAlways, allowCurrentWebSite,
     * allowFromWebsitesVisited, allowAlways.
     */
    webBrowserCookieSettings?: WebBrowserCookieSettings;
    // Indicates whether or not to block syncing Wi-Fi.
    wiFiBlocked?: boolean;
}
export interface AndroidImportedPFXCertificateProfile extends AndroidCertificateProfileBase {
    /**
     * Intended Purpose of the Certificate Profile - which could be Unassigned, SmimeEncryption, SmimeSigning etc. Possible
     * values are: unassigned, smimeEncryption, smimeSigning, vpn, wifi.
     */
    intendedPurpose?: IntendedPurpose;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface AndroidOmaCpConfiguration extends DeviceConfiguration {
    /**
     * Configuration XML that will be applied to the device. When it is read, it only provides a placeholder string since the
     * original data is encrypted and stored.
     */
    configurationXml?: number;
}
export interface AndroidPkcsCertificateProfile extends AndroidCertificateProfileBase {
    // PKCS Certificate Template Name
    certificateTemplateName?: string;
    // PKCS Certification Authority
    certificationAuthority?: string;
    // PKCS Certification Authority Name
    certificationAuthorityName?: string;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface AndroidScepCertificateProfile extends AndroidCertificateProfileBase {
    // SCEP Hash Algorithm. Possible values are: sha1, sha2.
    hashAlgorithm?: HashAlgorithms;
    // SCEP Key Size. Possible values are: size1024, size2048, size4096.
    keySize?: KeySize;
    // SCEP Key Usage. Possible values are: keyEncipherment, digitalSignature.
    keyUsage?: KeyUsages;
    // SCEP Server Url(s)
    scepServerUrls?: NullableOption<string[]>;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface AndroidVpnConfiguration extends DeviceConfiguration {
    // Authentication method. Possible values are: certificate, usernameAndPassword, sharedSecret, derivedCredential, azureAD.
    authenticationMethod?: VpnAuthenticationMethod;
    // Connection name displayed to the user.
    connectionName?: string;
    /**
     * Connection type. Possible values are: ciscoAnyConnect, pulseSecure, f5EdgeClient, dellSonicWallMobileConnect,
     * checkPointCapsuleVpn, citrix, microsoftTunnel, netMotionMobility, microsoftProtect.
     */
    connectionType?: AndroidVpnConnectionType;
    // Custom data when connection type is set to Citrix. This collection can contain a maximum of 25 elements.
    customData?: NullableOption<KeyValue[]>;
    // Custom data when connection type is set to Citrix. This collection can contain a maximum of 25 elements.
    customKeyValueData?: NullableOption<KeyValuePair[]>;
    /**
     * Fingerprint is a string that will be used to verify the VPN server can be trusted, which is only applicable when
     * connection type is Check Point Capsule VPN.
     */
    fingerprint?: NullableOption<string>;
    // Realm when connection type is set to Pulse Secure.
    realm?: NullableOption<string>;
    // Role when connection type is set to Pulse Secure.
    role?: NullableOption<string>;
    /**
     * List of VPN Servers on the network. Make sure end users can access these network locations. This collection can contain
     * a maximum of 500 elements.
     */
    servers?: VpnServer[];
    // Identity certificate for client authentication when authentication method is certificate.
    identityCertificate?: NullableOption<AndroidCertificateProfileBase>;
}
export interface AndroidWorkProfileCertificateProfileBase extends DeviceConfiguration {
    // Scale for the Certificate Validity Period. Possible values are: days, months, years.
    certificateValidityPeriodScale?: CertificateValidityPeriodScale;
    // Value for the Certificate Validity Period.
    certificateValidityPeriodValue?: number;
    // Extended Key Usage (EKU) settings. This collection can contain a maximum of 500 elements.
    extendedKeyUsages?: ExtendedKeyUsage[];
    // Certificate renewal threshold percentage. Valid values 1 to 99
    renewalThresholdPercentage?: number;
    /**
     * Certificate Subject Alternative Name Type. Possible values are: none, emailAddress, userPrincipalName,
     * customAzureADAttribute, domainNameService, universalResourceIdentifier.
     */
    subjectAlternativeNameType?: NullableOption<SubjectAlternativeNameType>;
    /**
     * Certificate Subject Name Format. Possible values are: commonName, commonNameIncludingEmail, commonNameAsEmail, custom,
     * commonNameAsIMEI, commonNameAsSerialNumber, commonNameAsAadDeviceId, commonNameAsIntuneDeviceId,
     * commonNameAsDurableDeviceId.
     */
    subjectNameFormat?: SubjectNameFormat;
    // Trusted Root Certificate.
    rootCertificate?: NullableOption<AndroidWorkProfileTrustedRootCertificate>;
}
export interface AndroidWorkProfileTrustedRootCertificate extends DeviceConfiguration {
    // File name to display in UI.
    certFileName?: NullableOption<string>;
    // Trusted Root Certificate
    trustedRootCertificate?: number;
}
export interface AndroidWorkProfileCompliancePolicy extends DeviceCompliancePolicy {
    /**
     * MDATP Require Mobile Threat Protection minimum risk level to report noncompliance. Possible values are: unavailable,
     * secured, low, medium, high, notSet.
     */
    advancedThreatProtectionRequiredSecurityLevel?: DeviceThreatProtectionLevel;
    // Require that devices have enabled device threat protection.
    deviceThreatProtectionEnabled?: boolean;
    /**
     * Require Mobile Threat Protection minimum risk level to report noncompliance. Possible values are: unavailable, secured,
     * low, medium, high, notSet.
     */
    deviceThreatProtectionRequiredSecurityLevel?: DeviceThreatProtectionLevel;
    // Minimum Android security patch level.
    minAndroidSecurityPatchLevel?: NullableOption<string>;
    // Maximum Android version.
    osMaximumVersion?: NullableOption<string>;
    // Minimum Android version.
    osMinimumVersion?: NullableOption<string>;
    // Number of days before the password expires. Valid values 1 to 365
    passwordExpirationDays?: NullableOption<number>;
    // Minimum password length. Valid values 4 to 16
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before a password is required.
    passwordMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // Number of previous passwords to block. Valid values 1 to 24
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Require a password to unlock device.
    passwordRequired?: boolean;
    /**
     * Type of characters in password. Possible values are: deviceDefault, alphabetic, alphanumeric, alphanumericWithSymbols,
     * lowSecurityBiometric, numeric, numericComplex, any.
     */
    passwordRequiredType?: AndroidRequiredPasswordType;
    // Number of sign-in failures allowed before factory reset. Valid values 1 to 16
    passwordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    // Devices must not be jailbroken or rooted.
    securityBlockJailbrokenDevices?: boolean;
    // Disable USB debugging on Android devices.
    securityDisableUsbDebugging?: boolean;
    // Require that devices disallow installation of apps from unknown sources.
    securityPreventInstallAppsFromUnknownSources?: boolean;
    // Require the device to pass the Company Portal client app runtime integrity check.
    securityRequireCompanyPortalAppIntegrity?: boolean;
    // Require a specific SafetyNet evaluation type for compliance. Possible values are: basic, hardwareBacked.
    securityRequiredAndroidSafetyNetEvaluationType?: AndroidSafetyNetEvaluationType;
    // Require Google Play Services to be installed and enabled on the device.
    securityRequireGooglePlayServices?: boolean;
    // Require the device to pass the SafetyNet basic integrity check.
    securityRequireSafetyNetAttestationBasicIntegrity?: boolean;
    // Require the device to pass the SafetyNet certified device check.
    securityRequireSafetyNetAttestationCertifiedDevice?: boolean;
    /**
     * Require the device to have up to date security providers. The device will require Google Play Services to be enabled
     * and up to date.
     */
    securityRequireUpToDateSecurityProviders?: boolean;
    // Require the Android Verify apps feature is turned on.
    securityRequireVerifyApps?: boolean;
    // Require encryption on Android devices.
    storageRequireEncryption?: boolean;
}
export interface AndroidWorkProfileCustomConfiguration extends DeviceConfiguration {
    // OMA settings. This collection can contain a maximum of 500 elements.
    omaSettings?: NullableOption<OmaSetting[]>;
}
export interface AndroidWorkProfileEasEmailProfileBase extends DeviceConfiguration {
    /**
     * Authentication method for Exchange ActiveSync. Possible values are: usernameAndPassword, certificate,
     * derivedCredential.
     */
    authenticationMethod?: EasAuthenticationMethod;
    /**
     * Duration of time email should be synced to. Possible values are: userDefined, oneDay, threeDays, oneWeek, twoWeeks,
     * oneMonth, unlimited.
     */
    durationOfEmailToSync?: EmailSyncDuration;
    /**
     * Email attribute that is picked from AAD and injected into this profile before installing on the device. Possible values
     * are: userPrincipalName, primarySmtpAddress.
     */
    emailAddressSource?: UserEmailSource;
    // Exchange location (URL) that the mail app connects to.
    hostName?: string;
    // Indicates whether or not to use SSL.
    requireSsl?: boolean;
    /**
     * Username attribute that is picked from AAD and injected into this profile before installing on the device. Possible
     * values are: username, userPrincipalName, samAccountName, primarySmtpAddress.
     */
    usernameSource?: AndroidUsernameSource;
    // Identity certificate.
    identityCertificate?: NullableOption<AndroidWorkProfileCertificateProfileBase>;
}
export interface AndroidWorkProfileWiFiConfiguration extends DeviceConfiguration {
    /**
     * Connect automatically when this network is in range. Setting this to true will skip the user prompt and automatically
     * connect the device to Wi-Fi network.
     */
    connectAutomatically?: boolean;
    /**
     * When set to true, this profile forces the device to connect to a network that doesn't broadcast its SSID to all
     * devices.
     */
    connectWhenNetworkNameIsHidden?: boolean;
    // Network Name
    networkName?: string;
    // This is the name of the Wi-Fi network that is broadcast to all devices.
    ssid?: string;
    /**
     * Indicates whether Wi-Fi endpoint uses an EAP based security type. Possible values are: open, wpaEnterprise,
     * wpa2Enterprise.
     */
    wiFiSecurityType?: AndroidWiFiSecurityType;
}
export interface AndroidWorkProfileEnterpriseWiFiConfiguration extends AndroidWorkProfileWiFiConfiguration {
    /**
     * Indicates the Authentication Method the client (device) needs to use when the EAP Type is configured to PEAP or
     * EAP-TTLS. Possible values are: certificate, usernameAndPassword, derivedCredential.
     */
    authenticationMethod?: NullableOption<WiFiAuthenticationMethod>;
    // Indicates the type of EAP protocol set on the Wi-Fi endpoint (router). Possible values are: eapTls, eapTtls, peap.
    eapType?: AndroidEapType;
    /**
     * Non-EAP Method for Authentication (Inner Identity) when EAP Type is EAP-TTLS and Authenticationmethod is Username and
     * Password. Possible values are: unencryptedPassword, challengeHandshakeAuthenticationProtocol, microsoftChap,
     * microsoftChapVersionTwo.
     */
    innerAuthenticationProtocolForEapTtls?: NullableOption<NonEapAuthenticationMethodForEapTtlsType>;
    /**
     * Non-EAP Method for Authentication (Inner Identity) when EAP Type is PEAP and Authenticationmethod is Username and
     * Password. Possible values are: none, microsoftChapVersionTwo.
     */
    innerAuthenticationProtocolForPeap?: NullableOption<NonEapAuthenticationMethodForPeap>;
    /**
     * Enable identity privacy (Outer Identity) when EAP Type is configured to EAP-TTLS or PEAP. The String provided here is
     * used to mask the username of individual users when they attempt to connect to Wi-Fi network.
     */
    outerIdentityPrivacyTemporaryValue?: NullableOption<string>;
    /**
     * URL of the proxy server automatic configuration script when automatic configuration is selected. This URL is typically
     * the location of PAC (Proxy Auto Configuration) file.
     */
    proxyAutomaticConfigurationUrl?: NullableOption<string>;
    // Proxy Type for this Wi-Fi connection. Possible values are: none, manual, automatic.
    proxySettings?: WiFiProxySetting;
    /**
     * Trusted server certificate names when EAP Type is configured to EAP-TLS/TTLS/FAST or PEAP. This is the common name used
     * in the certificates issued by your trusted certificate authority (CA). If you provide this information, you can bypass
     * the dynamic trust dialog that is displayed on end users' devices when they connect to this Wi-Fi network.
     */
    trustedServerCertificateNames?: NullableOption<string[]>;
    /**
     * Identity Certificate for client authentication when EAP Type is configured to EAP-TLS, EAP-TTLS (with Certificate
     * Authentication), or PEAP (with Certificate Authentication). This is the certificate presented by client to the Wi-Fi
     * endpoint. The authentication server sitting behind the Wi-Fi endpoint must accept this certificate to successfully
     * establish a Wi-Fi connection.
     */
    identityCertificateForClientAuthentication?: NullableOption<AndroidWorkProfileCertificateProfileBase>;
    /**
     * Trusted Root Certificate for Server Validation when EAP Type is configured to EAP-TLS, EAP-TTLS or PEAP. This is the
     * certificate presented by the Wi-Fi endpoint when the device attempts to connect to Wi-Fi endpoint. The device (or user)
     * must accept this certificate to continue the connection attempt.
     */
    rootCertificateForServerValidation?: NullableOption<AndroidWorkProfileTrustedRootCertificate>;
}
export interface AndroidWorkProfileGeneralDeviceConfiguration extends DeviceConfiguration {
    // Indicates whether or not to block face unlock.
    passwordBlockFaceUnlock?: boolean;
    // Indicates whether or not to block fingerprint unlock.
    passwordBlockFingerprintUnlock?: boolean;
    // Indicates whether or not to block iris unlock.
    passwordBlockIrisUnlock?: boolean;
    // Indicates whether or not to block Smart Lock and other trust agents.
    passwordBlockTrustAgents?: boolean;
    // Number of days before the password expires. Valid values 1 to 365
    passwordExpirationDays?: NullableOption<number>;
    // Minimum length of passwords. Valid values 4 to 16
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before the screen times out.
    passwordMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    // Number of previous passwords to block. Valid values 0 to 24
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    /**
     * Type of password that is required. Possible values are: deviceDefault, lowSecurityBiometric, required, atLeastNumeric,
     * numericComplex, atLeastAlphabetic, atLeastAlphanumeric, alphanumericWithSymbols.
     */
    passwordRequiredType?: AndroidWorkProfileRequiredPasswordType;
    // Number of sign in failures allowed before factory reset. Valid values 1 to 16
    passwordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    // Require the Android Verify apps feature is turned on.
    securityRequireVerifyApps?: boolean;
    // Enable lockdown mode for always-on VPN.
    vpnAlwaysOnPackageIdentifier?: NullableOption<string>;
    // Enable lockdown mode for always-on VPN.
    vpnEnableAlwaysOnLockdownMode?: boolean;
    // Indicates whether to allow installation of apps from unknown sources.
    workProfileAllowAppInstallsFromUnknownSources?: boolean;
    // Allow widgets from work profile apps.
    workProfileAllowWidgets?: boolean;
    // Block users from adding/removing accounts in work profile.
    workProfileBlockAddingAccounts?: boolean;
    // Block work profile camera.
    workProfileBlockCamera?: boolean;
    // Block display work profile caller ID in personal profile.
    workProfileBlockCrossProfileCallerId?: boolean;
    // Block work profile contacts availability in personal profile.
    workProfileBlockCrossProfileContactsSearch?: boolean;
    // Boolean that indicates if the setting disallow cross profile copy/paste is enabled.
    workProfileBlockCrossProfileCopyPaste?: boolean;
    // Indicates whether or not to block notifications while device locked.
    workProfileBlockNotificationsWhileDeviceLocked?: boolean;
    // Prevent app installations from unknown sources in the personal profile.
    workProfileBlockPersonalAppInstallsFromUnknownSources?: boolean;
    // Block screen capture in work profile.
    workProfileBlockScreenCapture?: boolean;
    // Allow bluetooth devices to access enterprise contacts.
    workProfileBluetoothEnableContactSharing?: boolean;
    /**
     * Type of data sharing that is allowed. Possible values are: deviceDefault, preventAny, allowPersonalToWork,
     * noRestrictions.
     */
    workProfileDataSharingType?: AndroidWorkProfileCrossProfileDataSharingType;
    // Type of password that is required. Possible values are: deviceDefault, prompt, autoGrant, autoDeny.
    workProfileDefaultAppPermissionPolicy?: AndroidWorkProfileDefaultAppPermissionPolicyType;
    // Indicates whether or not to block face unlock for work profile.
    workProfilePasswordBlockFaceUnlock?: boolean;
    // Indicates whether or not to block fingerprint unlock for work profile.
    workProfilePasswordBlockFingerprintUnlock?: boolean;
    // Indicates whether or not to block iris unlock for work profile.
    workProfilePasswordBlockIrisUnlock?: boolean;
    // Indicates whether or not to block Smart Lock and other trust agents for work profile.
    workProfilePasswordBlockTrustAgents?: boolean;
    // Number of days before the work profile password expires. Valid values 1 to 365
    workProfilePasswordExpirationDays?: NullableOption<number>;
    // Minimum length of work profile password. Valid values 4 to 16
    workProfilePasswordMinimumLength?: NullableOption<number>;
    // Minimum # of letter characters required in work profile password. Valid values 1 to 10
    workProfilePasswordMinLetterCharacters?: NullableOption<number>;
    // Minimum # of lower-case characters required in work profile password. Valid values 1 to 10
    workProfilePasswordMinLowerCaseCharacters?: NullableOption<number>;
    // Minimum # of non-letter characters required in work profile password. Valid values 1 to 10
    workProfilePasswordMinNonLetterCharacters?: NullableOption<number>;
    // Minimum # of numeric characters required in work profile password. Valid values 1 to 10
    workProfilePasswordMinNumericCharacters?: NullableOption<number>;
    // Minimum # of symbols required in work profile password. Valid values 1 to 10
    workProfilePasswordMinSymbolCharacters?: NullableOption<number>;
    // Minimum # of upper-case characters required in work profile password. Valid values 1 to 10
    workProfilePasswordMinUpperCaseCharacters?: NullableOption<number>;
    // Minutes of inactivity before the screen times out.
    workProfilePasswordMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    // Number of previous work profile passwords to block. Valid values 0 to 24
    workProfilePasswordPreviousPasswordBlockCount?: NullableOption<number>;
    /**
     * Type of work profile password that is required. Possible values are: deviceDefault, lowSecurityBiometric, required,
     * atLeastNumeric, numericComplex, atLeastAlphabetic, atLeastAlphanumeric, alphanumericWithSymbols.
     */
    workProfilePasswordRequiredType?: AndroidWorkProfileRequiredPasswordType;
    // Number of sign in failures allowed before work profile is removed and all corporate data deleted. Valid values 1 to 16
    workProfilePasswordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    // Password is required or not for work profile
    workProfileRequirePassword?: boolean;
}
// tslint:disable-next-line: no-empty-interface
export interface AndroidWorkProfileGmailEasConfiguration extends AndroidWorkProfileEasEmailProfileBase {}
export interface AndroidWorkProfileNineWorkEasConfiguration extends AndroidWorkProfileEasEmailProfileBase {
    // Toggles syncing the calendar. If set to false the calendar is turned off on the device.
    syncCalendar?: boolean;
    // Toggles syncing contacts. If set to false contacts are turned off on the device.
    syncContacts?: boolean;
    // Toggles syncing tasks. If set to false tasks are turned off on the device.
    syncTasks?: boolean;
}
export interface AndroidWorkProfilePkcsCertificateProfile extends AndroidWorkProfileCertificateProfileBase {
    // Target store certificate. Possible values are: user, machine.
    certificateStore?: NullableOption<CertificateStore>;
    // PKCS Certificate Template Name
    certificateTemplateName?: string;
    // PKCS Certification Authority
    certificationAuthority?: string;
    // PKCS Certification Authority Name
    certificationAuthorityName?: string;
    // Custom Subject Alternative Name Settings. This collection can contain a maximum of 500 elements.
    customSubjectAlternativeNames?: NullableOption<CustomSubjectAlternativeName[]>;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface AndroidWorkProfileScepCertificateProfile extends AndroidWorkProfileCertificateProfileBase {
    // Target store certificate. Possible values are: user, machine.
    certificateStore?: NullableOption<CertificateStore>;
    // Custom Subject Alternative Name Settings. This collection can contain a maximum of 500 elements.
    customSubjectAlternativeNames?: NullableOption<CustomSubjectAlternativeName[]>;
    // SCEP Hash Algorithm. Possible values are: sha1, sha2.
    hashAlgorithm?: HashAlgorithms;
    // SCEP Key Size. Possible values are: size1024, size2048, size4096.
    keySize?: KeySize;
    // SCEP Key Usage. Possible values are: keyEncipherment, digitalSignature.
    keyUsage?: KeyUsages;
    // SCEP Server Url(s)
    scepServerUrls?: NullableOption<string[]>;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface AndroidWorkProfileVpnConfiguration extends DeviceConfiguration {
    // Whether or not to enable always-on VPN connection.
    alwaysOn?: NullableOption<boolean>;
    // If always-on VPN connection is enabled, whether or not to lock network traffic when that VPN is disconnected.
    alwaysOnLockdown?: NullableOption<boolean>;
    // Authentication method. Possible values are: certificate, usernameAndPassword, sharedSecret, derivedCredential, azureAD.
    authenticationMethod?: VpnAuthenticationMethod;
    // Connection name displayed to the user.
    connectionName?: string;
    /**
     * Connection type. Possible values are: ciscoAnyConnect, pulseSecure, f5EdgeClient, dellSonicWallMobileConnect,
     * checkPointCapsuleVpn, citrix, paloAltoGlobalProtect, microsoftTunnel, netMotionMobility, microsoftProtect.
     */
    connectionType?: AndroidWorkProfileVpnConnectionType;
    // Custom data when connection type is set to Citrix. This collection can contain a maximum of 25 elements.
    customData?: NullableOption<KeyValue[]>;
    // Custom data when connection type is set to Citrix. This collection can contain a maximum of 25 elements.
    customKeyValueData?: NullableOption<KeyValuePair[]>;
    /**
     * Fingerprint is a string that will be used to verify the VPN server can be trusted, which is only applicable when
     * connection type is Check Point Capsule VPN.
     */
    fingerprint?: NullableOption<string>;
    // Microsoft Tunnel site ID.
    microsoftTunnelSiteId?: NullableOption<string>;
    // Proxy server.
    proxyServer?: NullableOption<VpnProxyServer>;
    // Realm when connection type is set to Pulse Secure.
    realm?: NullableOption<string>;
    // Role when connection type is set to Pulse Secure.
    role?: NullableOption<string>;
    /**
     * List of VPN Servers on the network. Make sure end users can access these network locations. This collection can contain
     * a maximum of 500 elements.
     */
    servers?: VpnServer[];
    // Targeted mobile apps. This collection can contain a maximum of 500 elements.
    targetedMobileApps?: NullableOption<AppListItem[]>;
    // Targeted App package IDs.
    targetedPackageIds?: NullableOption<string[]>;
    // Identity certificate for client authentication when authentication method is certificate.
    identityCertificate?: NullableOption<AndroidWorkProfileCertificateProfileBase>;
}
export interface AospDeviceOwnerCompliancePolicy extends DeviceCompliancePolicy {
    // Minimum Android security patch level.
    minAndroidSecurityPatchLevel?: NullableOption<string>;
    // Maximum Android version.
    osMaximumVersion?: NullableOption<string>;
    // Minimum Android version.
    osMinimumVersion?: NullableOption<string>;
    // Minimum password length. Valid values 4 to 16
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before a password is required. Valid values 1 to 8640
    passwordMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // Require a password to unlock device.
    passwordRequired?: NullableOption<boolean>;
    /**
     * Type of characters in password. Possible values are: deviceDefault, required, numeric, numericComplex, alphabetic,
     * alphanumeric, alphanumericWithSymbols, lowSecurityBiometric, customPassword.
     */
    passwordRequiredType?: NullableOption<AndroidDeviceOwnerRequiredPasswordType>;
    // Devices must not be jailbroken or rooted.
    securityBlockJailbrokenDevices?: NullableOption<boolean>;
    // Require encryption on Android devices.
    storageRequireEncryption?: NullableOption<boolean>;
}
export interface AospDeviceOwnerDeviceConfiguration extends DeviceConfiguration {
    // Indicates whether or not the user is allowed to enable to unknown sources setting.
    appsAllowInstallFromUnknownSources?: NullableOption<boolean>;
    // Indicates whether or not to block backup service.
    backupBlocked?: NullableOption<boolean>;
    // Indicates whether or not to block a user from configuring bluetooth.
    bluetoothBlockConfiguration?: NullableOption<boolean>;
    // Indicates whether or not to block a user from sharing contacts via bluetooth.
    bluetoothBlockContactSharing?: NullableOption<boolean>;
    // Indicates whether or not to disable the use of bluetooth. When set to true, bluetooth cannot be enabled on the device.
    bluetoothBlocked?: NullableOption<boolean>;
    // Indicates whether or not to disable the use of the camera.
    cameraBlocked?: NullableOption<boolean>;
    // Indicates whether or not to block Wi-Fi tethering.
    cellularBlockWiFiTethering?: NullableOption<boolean>;
    // Indicates whether or not the factory reset option in settings is disabled.
    factoryResetBlocked?: NullableOption<boolean>;
    // Indicates the minimum length of the password required on the device. Valid values 4 to 16
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before the screen times out.
    passwordMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    /**
     * Indicates the minimum password quality required on the device. Possible values are: deviceDefault, required, numeric,
     * numericComplex, alphabetic, alphanumeric, alphanumericWithSymbols, lowSecurityBiometric, customPassword.
     */
    passwordRequiredType?: NullableOption<AndroidDeviceOwnerRequiredPasswordType>;
    // Indicates the number of times a user can enter an incorrect password before the device is wiped. Valid values 4 to 11
    passwordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    // Indicates whether or not to disable the capability to take screenshots.
    screenCaptureBlocked?: NullableOption<boolean>;
    // Indicates whether or not to block the user from enabling debugging features on the device.
    securityAllowDebuggingFeatures?: NullableOption<boolean>;
    // Indicates whether or not to block USB storage.
    storageAllowUsb?: NullableOption<boolean>;
    // Indicates whether or not to block external media.
    storageBlockExternalMedia?: NullableOption<boolean>;
    // Indicates whether or not to block USB file transfer.
    storageBlockUsbFileTransfer?: NullableOption<boolean>;
    // Indicates whether or not to block the user from editing the wifi connection settings.
    wifiBlockEditConfigurations?: NullableOption<boolean>;
}
export interface AppleDeviceFeaturesConfigurationBase extends DeviceConfiguration {
    // An array of AirPrint printers that should always be shown. This collection can contain a maximum of 500 elements.
    airPrintDestinations?: NullableOption<AirPrintDestination[]>;
}
export interface AppleExpeditedCheckinConfigurationBase extends DeviceConfiguration {
    // Gets or sets whether to enable expedited device check-ins.
    enableExpeditedCheckin?: boolean;
}
export interface AppleVpnConfiguration extends DeviceConfiguration {
    // Associated Domains
    associatedDomains?: NullableOption<string[]>;
    /**
     * Authentication method for this VPN connection. Possible values are: certificate, usernameAndPassword, sharedSecret,
     * derivedCredential, azureAD.
     */
    authenticationMethod?: VpnAuthenticationMethod;
    // Connection name displayed to the user.
    connectionName?: string;
    /**
     * Connection type. Possible values are: ciscoAnyConnect, pulseSecure, f5EdgeClient, dellSonicWallMobileConnect,
     * checkPointCapsuleVpn, customVpn, ciscoIPSec, citrix, ciscoAnyConnectV2, paloAltoGlobalProtect, zscalerPrivateAccess,
     * f5Access2018, citrixSso, paloAltoGlobalProtectV2, ikEv2, alwaysOn, microsoftTunnel, netMotionMobility,
     * microsoftProtect.
     */
    connectionType?: AppleVpnConnectionType;
    /**
     * Custom data when connection type is set to Custom VPN. Use this field to enable functionality not supported by Intune,
     * but available in your VPN solution. Contact your VPN vendor to learn how to add these key/value pairs. This collection
     * can contain a maximum of 25 elements.
     */
    customData?: NullableOption<KeyValue[]>;
    /**
     * Custom data when connection type is set to Custom VPN. Use this field to enable functionality not supported by Intune,
     * but available in your VPN solution. Contact your VPN vendor to learn how to add these key/value pairs. This collection
     * can contain a maximum of 25 elements.
     */
    customKeyValueData?: NullableOption<KeyValuePair[]>;
    // Toggle to prevent user from disabling automatic VPN in the Settings app
    disableOnDemandUserOverride?: NullableOption<boolean>;
    // Whether to disconnect after on-demand connection idles
    disconnectOnIdle?: NullableOption<boolean>;
    // The length of time in seconds to wait before disconnecting an on-demand connection. Valid values 0 to 65535
    disconnectOnIdleTimerInSeconds?: NullableOption<number>;
    /**
     * Setting this to true creates Per-App VPN payload which can later be associated with Apps that can trigger this VPN
     * conneciton on the end user's iOS device.
     */
    enablePerApp?: NullableOption<boolean>;
    // Send all network traffic through VPN.
    enableSplitTunneling?: boolean;
    // Domains that are accessed through the public internet instead of through VPN, even when per-app VPN is activated
    excludedDomains?: NullableOption<string[]>;
    /**
     * Identifier provided by VPN vendor when connection type is set to Custom VPN. For example: Cisco AnyConnect uses an
     * identifier of the form com.cisco.anyconnect.applevpn.plugin
     */
    identifier?: NullableOption<string>;
    // Login group or domain when connection type is set to Dell SonicWALL Mobile Connection.
    loginGroupOrDomain?: NullableOption<string>;
    // On-Demand Rules. This collection can contain a maximum of 500 elements.
    onDemandRules?: NullableOption<VpnOnDemandRule[]>;
    // Opt-In to sharing the device's Id to third-party vpn clients for use during network access control validation.
    optInToDeviceIdSharing?: NullableOption<boolean>;
    // Provider type for per-app VPN. Possible values are: notConfigured, appProxy, packetTunnel.
    providerType?: NullableOption<VpnProviderType>;
    // Proxy Server.
    proxyServer?: NullableOption<VpnProxyServer>;
    // Realm when connection type is set to Pulse Secure.
    realm?: NullableOption<string>;
    // Role when connection type is set to Pulse Secure.
    role?: NullableOption<string>;
    /**
     * Safari domains when this VPN per App setting is enabled. In addition to the apps associated with this VPN, Safari
     * domains specified here will also be able to trigger this VPN connection.
     */
    safariDomains?: NullableOption<string[]>;
    // VPN Server on the network. Make sure end users can access this network location.
    server?: VpnServer;
}
// tslint:disable-next-line: no-empty-interface
export interface DefaultDeviceCompliancePolicy extends DeviceCompliancePolicy {}
export interface DeviceComplianceActionItem extends Entity {
    /**
     * What action to take. Possible values are: noAction, notification, block, retire, wipe, removeResourceAccessProfiles,
     * pushNotification, remoteLock.
     */
    actionType?: DeviceComplianceActionType;
    // Number of hours to wait till the action will be enforced. Valid values 0 to 8760
    gracePeriodHours?: number;
    // A list of group IDs to speicify who to CC this notification message to.
    notificationMessageCCList?: NullableOption<string[]>;
    // What notification Message template to use
    notificationTemplateId?: NullableOption<string>;
}
export interface DeviceCompliancePolicyGroupAssignment extends Entity {
    // Indicates if this group is should be excluded. Defaults that the group should be included
    excludeGroup?: boolean;
    // The Id of the AAD group we are targeting the device compliance policy to.
    targetGroupId?: NullableOption<string>;
    // The navigation link to the device compliance polic targeted.
    deviceCompliancePolicy?: NullableOption<DeviceCompliancePolicy>;
}
export interface DeviceComplianceSettingState extends Entity {
    // The DateTime when device compliance grace period expires
    complianceGracePeriodExpirationDateTime?: string;
    // The Device Id that is being reported
    deviceId?: NullableOption<string>;
    // The device model that is being reported
    deviceModel?: NullableOption<string>;
    // The Device Name that is being reported
    deviceName?: NullableOption<string>;
    /**
     * Device platform type. Possible values are: desktop, windowsRT, winMO6, nokia, windowsPhone, mac, winCE, winEmbedded,
     * iPhone, iPad, iPod, android, iSocConsumer, unix, macMDM, holoLens, surfaceHub, androidForWork, androidEnterprise,
     * windows10x, androidnGMS, cloudPC, blackberry, palm, unknown.
     */
    platformType?: DeviceType;
    // The setting class name and property name.
    setting?: NullableOption<string>;
    // The Setting Name that is being reported
    settingName?: NullableOption<string>;
    /**
     * The compliance state of the setting. Possible values are: unknown, notApplicable, compliant, remediated, nonCompliant,
     * error, conflict, notAssigned.
     */
    state?: ComplianceStatus;
    // The User email address that is being reported
    userEmail?: NullableOption<string>;
    // The user Id that is being reported
    userId?: NullableOption<string>;
    // The User Name that is being reported
    userName?: NullableOption<string>;
    // The User PrincipalName that is being reported
    userPrincipalName?: NullableOption<string>;
}
export interface DeviceSetupConfiguration extends Entity {
    // DateTime the object was created.
    createdDateTime?: string;
    // Admin provided description of the Device Configuration.
    description?: NullableOption<string>;
    // Admin provided name of the device configuration.
    displayName?: string;
    // DateTime the object was last modified.
    lastModifiedDateTime?: string;
    // Version of the device configuration.
    version?: number;
}
export interface EasEmailProfileConfigurationBase extends DeviceConfiguration {
    // Custom domain name value used while generating an email profile before installing on the device.
    customDomainName?: NullableOption<string>;
    /**
     * UserDomainname attribute that is picked from AAD and injected into this profile before installing on the device.
     * Possible values are: fullDomainName, netBiosDomainName.
     */
    userDomainNameSource?: NullableOption<DomainNameSource>;
    /**
     * Name of the AAD field, that will be used to retrieve UserName for email profile. Possible values are:
     * userPrincipalName, primarySmtpAddress, samAccountName.
     */
    usernameAADSource?: NullableOption<UsernameSource>;
    /**
     * Username attribute that is picked from AAD and injected into this profile before installing on the device. Possible
     * values are: userPrincipalName, primarySmtpAddress.
     */
    usernameSource?: UserEmailSource;
}
export interface EditionUpgradeConfiguration extends DeviceConfiguration {
    // Edition Upgrade License File Content.
    license?: NullableOption<string>;
    // Edition Upgrade License Type. Possible values are: productKey, licenseFile, notConfigured.
    licenseType?: EditionUpgradeLicenseType;
    // Edition Upgrade Product Key.
    productKey?: NullableOption<string>;
    /**
     * Edition Upgrade Target Edition. Possible values are: windows10Enterprise, windows10EnterpriseN, windows10Education,
     * windows10EducationN, windows10MobileEnterprise, windows10HolographicEnterprise, windows10Professional,
     * windows10ProfessionalN, windows10ProfessionalEducation, windows10ProfessionalEducationN,
     * windows10ProfessionalWorkstation, windows10ProfessionalWorkstationN, notConfigured, windows10Home, windows10HomeChina,
     * windows10HomeN, windows10HomeSingleLanguage, windows10Mobile, windows10IoTCore, windows10IoTCoreCommercial.
     */
    targetEdition?: Windows10EditionType;
    // S mode configuration. Possible values are: noRestriction, block, unlock.
    windowsSMode?: WindowsSModeConfiguration;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IosCertificateProfile extends DeviceConfiguration {}
// tslint:disable-next-line: interface-name
export interface IosCertificateProfileBase extends IosCertificateProfile {
    // Scale for the Certificate Validity Period. Possible values are: days, months, years.
    certificateValidityPeriodScale?: CertificateValidityPeriodScale;
    // Value for the Certificate Validity Period.
    certificateValidityPeriodValue?: number;
    // Certificate renewal threshold percentage. Valid values 1 to 99
    renewalThresholdPercentage?: number;
    /**
     * Certificate Subject Alternative Name type. Possible values are: none, emailAddress, userPrincipalName,
     * customAzureADAttribute, domainNameService, universalResourceIdentifier.
     */
    subjectAlternativeNameType?: NullableOption<SubjectAlternativeNameType>;
    /**
     * Certificate Subject Name Format. Possible values are: commonName, commonNameAsEmail, custom, commonNameIncludingEmail,
     * commonNameAsIMEI, commonNameAsSerialNumber.
     */
    subjectNameFormat?: AppleSubjectNameFormat;
}
// tslint:disable-next-line: interface-name
export interface IosCompliancePolicy extends DeviceCompliancePolicy {
    /**
     * MDATP Require Mobile Threat Protection minimum risk level to report noncompliance. Possible values are: unavailable,
     * secured, low, medium, high, notSet.
     */
    advancedThreatProtectionRequiredSecurityLevel?: DeviceThreatProtectionLevel;
    // Require that devices have enabled device threat protection .
    deviceThreatProtectionEnabled?: boolean;
    /**
     * Require Mobile Threat Protection minimum risk level to report noncompliance. Possible values are: unavailable, secured,
     * low, medium, high, notSet.
     */
    deviceThreatProtectionRequiredSecurityLevel?: DeviceThreatProtectionLevel;
    // Indicates whether or not to require a managed email profile.
    managedEmailProfileRequired?: boolean;
    // Maximum IOS build version.
    osMaximumBuildVersion?: NullableOption<string>;
    // Maximum IOS version.
    osMaximumVersion?: NullableOption<string>;
    // Minimum IOS build version.
    osMinimumBuildVersion?: NullableOption<string>;
    // Minimum IOS version.
    osMinimumVersion?: NullableOption<string>;
    // Indicates whether or not to block simple passcodes.
    passcodeBlockSimple?: boolean;
    // Number of days before the passcode expires. Valid values 1 to 65535
    passcodeExpirationDays?: NullableOption<number>;
    // The number of character sets required in the password.
    passcodeMinimumCharacterSetCount?: NullableOption<number>;
    // Minimum length of passcode. Valid values 4 to 14
    passcodeMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before a passcode is required.
    passcodeMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // Minutes of inactivity before the screen times out.
    passcodeMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    // Number of previous passcodes to block. Valid values 1 to 24
    passcodePreviousPasscodeBlockCount?: NullableOption<number>;
    // Indicates whether or not to require a passcode.
    passcodeRequired?: boolean;
    // The required passcode type. Possible values are: deviceDefault, alphanumeric, numeric.
    passcodeRequiredType?: RequiredPasswordType;
    // Require the device to not have the specified apps installed. This collection can contain a maximum of 100 elements.
    restrictedApps?: NullableOption<AppListItem[]>;
    // Devices must not be jailbroken or rooted.
    securityBlockJailbrokenDevices?: boolean;
}
// tslint:disable-next-line: interface-name
export interface IosCustomConfiguration extends DeviceConfiguration {
    // Payload. (UTF8 encoded byte array)
    payload?: number;
    // Payload file name (.mobileconfig
    payloadFileName?: NullableOption<string>;
    // Name that is displayed to the user.
    payloadName?: string;
}
// tslint:disable-next-line: interface-name
export interface IosDerivedCredentialAuthenticationConfiguration extends DeviceConfiguration {
    // Tenant level settings for the Derived Credentials to be used for authentication.
    derivedCredentialSettings?: NullableOption<DeviceManagementDerivedCredentialSettings>;
}
// tslint:disable-next-line: interface-name
export interface IosDeviceFeaturesConfiguration extends AppleDeviceFeaturesConfigurationBase {
    // Asset tag information for the device, displayed on the login window and lock screen.
    assetTagTemplate?: NullableOption<string>;
    // Gets or sets iOS Web Content Filter settings, supervised mode only
    contentFilterSettings?: NullableOption<IosWebContentFilterBase>;
    // A list of app and folders to appear on the Home Screen Dock. This collection can contain a maximum of 500 elements.
    homeScreenDockIcons?: NullableOption<IosHomeScreenItem[]>;
    /**
     * Gets or sets the number of rows to render when configuring iOS home screen layout settings. If this value is
     * configured, homeScreenGridWidth must be configured as well.
     */
    homeScreenGridHeight?: NullableOption<number>;
    /**
     * Gets or sets the number of columns to render when configuring iOS home screen layout settings. If this value is
     * configured, homeScreenGridHeight must be configured as well.
     */
    homeScreenGridWidth?: NullableOption<number>;
    // A list of pages on the Home Screen. This collection can contain a maximum of 500 elements.
    homeScreenPages?: NullableOption<IosHomeScreenPage[]>;
    // Gets or sets a single sign-on extension profile.
    iosSingleSignOnExtension?: NullableOption<IosSingleSignOnExtension>;
    // A footnote displayed on the login window and lock screen. Available in iOS 9.3.1 and later.
    lockScreenFootnote?: NullableOption<string>;
    /**
     * Notification settings for each bundle id. Applicable to devices in supervised mode only (iOS 9.3 and later). This
     * collection can contain a maximum of 500 elements.
     */
    notificationSettings?: NullableOption<IosNotificationSettings[]>;
    // Gets or sets a single sign-on extension profile. Deprecated: use IOSSingleSignOnExtension instead.
    singleSignOnExtension?: NullableOption<SingleSignOnExtension>;
    // The Kerberos login settings that enable apps on receiving devices to authenticate smoothly.
    singleSignOnSettings?: NullableOption<IosSingleSignOnSettings>;
    // A wallpaper display location specifier. Possible values are: notConfigured, lockScreen, homeScreen, lockAndHomeScreens.
    wallpaperDisplayLocation?: IosWallpaperDisplayLocation;
    // A wallpaper image must be in either PNG or JPEG format. It requires a supervised device with iOS 8 or later version.
    wallpaperImage?: NullableOption<MimeContent>;
    // Identity Certificate for the renewal of Kerberos ticket used in single sign-on settings.
    identityCertificateForClientAuthentication?: NullableOption<IosCertificateProfileBase>;
    // PKINIT Certificate for the authentication with single sign-on extension settings.
    singleSignOnExtensionPkinitCertificate?: NullableOption<IosCertificateProfileBase>;
}
// tslint:disable-next-line: interface-name
export interface IosEasEmailProfileConfiguration extends EasEmailProfileConfigurationBase {
    // Account name.
    accountName?: string;
    // Authentication method for this Email profile. Possible values are: usernameAndPassword, certificate, derivedCredential.
    authenticationMethod?: NullableOption<EasAuthenticationMethod>;
    // Indicates whether or not to block moving messages to other email accounts.
    blockMovingMessagesToOtherEmailAccounts?: NullableOption<boolean>;
    // Indicates whether or not to block sending email from third party apps.
    blockSendingEmailFromThirdPartyApps?: NullableOption<boolean>;
    // Indicates whether or not to block syncing recently used email addresses, for instance - when composing new email.
    blockSyncingRecentlyUsedEmailAddresses?: NullableOption<boolean>;
    /**
     * Duration of time email should be synced back to. . Possible values are: userDefined, oneDay, threeDays, oneWeek,
     * twoWeeks, oneMonth, unlimited.
     */
    durationOfEmailToSync?: EmailSyncDuration;
    // Exchange data to sync. Possible values are: none, calendars, contacts, email, notes, reminders.
    easServices?: NullableOption<EasServices>;
    // Allow users to change sync settings.
    easServicesUserOverrideEnabled?: NullableOption<boolean>;
    /**
     * Email attribute that is picked from AAD and injected into this profile before installing on the device. Possible values
     * are: userPrincipalName, primarySmtpAddress.
     */
    emailAddressSource?: UserEmailSource;
    // Encryption Certificate type for this Email profile. Possible values are: none, certificate, derivedCredential.
    encryptionCertificateType?: NullableOption<EmailCertificateType>;
    // Exchange location that (URL) that the native mail app connects to.
    hostName?: string;
    // Profile ID of the Per-App VPN policy to be used to access emails from the native Mail client
    perAppVPNProfileId?: NullableOption<string>;
    // Indicates whether or not to use S/MIME certificate.
    requireSmime?: NullableOption<boolean>;
    // Indicates whether or not to use SSL.
    requireSsl?: boolean;
    // Signing Certificate type for this Email profile. Possible values are: none, certificate, derivedCredential.
    signingCertificateType?: NullableOption<EmailCertificateType>;
    // Indicates whether or not to allow unencrypted emails.
    smimeEnablePerMessageSwitch?: NullableOption<boolean>;
    // If set to true S/MIME encryption is enabled by default.
    smimeEncryptByDefaultEnabled?: NullableOption<boolean>;
    // If set to true, the user can toggle the encryption by default setting.
    smimeEncryptByDefaultUserOverrideEnabled?: NullableOption<boolean>;
    // If set to true the user can select the S/MIME encryption identity.
    smimeEncryptionCertificateUserOverrideEnabled?: NullableOption<boolean>;
    // If set to true, the user can select the signing identity.
    smimeSigningCertificateUserOverrideEnabled?: NullableOption<boolean>;
    // If set to true S/MIME signing is enabled for this account
    smimeSigningEnabled?: NullableOption<boolean>;
    // If set to true, the user can toggle S/MIME signing on or off.
    smimeSigningUserOverrideEnabled?: NullableOption<boolean>;
    // Specifies whether the connection should use OAuth for authentication.
    useOAuth?: NullableOption<boolean>;
    // Tenant level settings for the Derived Credentials to be used for authentication.
    derivedCredentialSettings?: NullableOption<DeviceManagementDerivedCredentialSettings>;
    // Identity certificate.
    identityCertificate?: NullableOption<IosCertificateProfileBase>;
    // S/MIME encryption certificate.
    smimeEncryptionCertificate?: NullableOption<IosCertificateProfile>;
    // S/MIME signing certificate.
    smimeSigningCertificate?: NullableOption<IosCertificateProfile>;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IosEducationDeviceConfiguration extends DeviceConfiguration {}
// tslint:disable-next-line: interface-name
export interface IosEduDeviceConfiguration extends DeviceConfiguration {
    // The Trusted Root and PFX certificates for Device
    deviceCertificateSettings?: NullableOption<IosEduCertificateSettings>;
    // The Trusted Root and PFX certificates for Student
    studentCertificateSettings?: NullableOption<IosEduCertificateSettings>;
    // The Trusted Root and PFX certificates for Teacher
    teacherCertificateSettings?: IosEduCertificateSettings;
}
// tslint:disable-next-line: interface-name
export interface IosWiFiConfiguration extends DeviceConfiguration {
    /**
     * Connect automatically when this network is in range. Setting this to true will skip the user prompt and automatically
     * connect the device to Wi-Fi network.
     */
    connectAutomatically?: boolean;
    /**
     * Connect when the network is not broadcasting its name (SSID). When set to true, this profile forces the device to
     * connect to a network that doesn't broadcast its SSID to all devices.
     */
    connectWhenNetworkNameIsHidden?: boolean;
    /**
     * If set to true, forces devices connecting using this Wi-Fi profile to present their actual Wi-Fi MAC address instead of
     * a random MAC address. Applies to iOS 14 and later.
     */
    disableMacAddressRandomization?: NullableOption<boolean>;
    // Network Name
    networkName?: string;
    // This is the pre-shared key for WPA Personal Wi-Fi network.
    preSharedKey?: NullableOption<string>;
    /**
     * URL of the proxy server automatic configuration script when automatic configuration is selected. This URL is typically
     * the location of PAC (Proxy Auto Configuration) file.
     */
    proxyAutomaticConfigurationUrl?: NullableOption<string>;
    // IP Address or DNS hostname of the proxy server when manual configuration is selected.
    proxyManualAddress?: NullableOption<string>;
    // Port of the proxy server when manual configuration is selected.
    proxyManualPort?: NullableOption<number>;
    // Proxy Type for this Wi-Fi connection. Possible values are: none, manual, automatic.
    proxySettings?: WiFiProxySetting;
    // This is the name of the Wi-Fi network that is broadcast to all devices.
    ssid?: string;
    /**
     * Indicates whether Wi-Fi endpoint uses an EAP based security type. Possible values are: open, wpaPersonal,
     * wpaEnterprise, wep, wpa2Personal, wpa2Enterprise.
     */
    wiFiSecurityType?: WiFiSecurityType;
}
// tslint:disable-next-line: interface-name
export interface IosEnterpriseWiFiConfiguration extends IosWiFiConfiguration {
    /**
     * Authentication Method when EAP Type is configured to PEAP or EAP-TTLS. Possible values are: certificate,
     * usernameAndPassword, derivedCredential.
     */
    authenticationMethod?: NullableOption<WiFiAuthenticationMethod>;
    /**
     * EAP-FAST Configuration Option when EAP-FAST is the selected EAP Type. Possible values are: noProtectedAccessCredential,
     * useProtectedAccessCredential, useProtectedAccessCredentialAndProvision,
     * useProtectedAccessCredentialAndProvisionAnonymously.
     */
    eapFastConfiguration?: NullableOption<EapFastConfiguration>;
    /**
     * Extensible Authentication Protocol (EAP). Indicates the type of EAP protocol set on the Wi-Fi endpoint (router).
     * Possible values are: eapTls, leap, eapSim, eapTtls, peap, eapFast.
     */
    eapType?: EapType;
    /**
     * Non-EAP Method for Authentication when EAP Type is EAP-TTLS and Authenticationmethod is Username and Password. Possible
     * values are: unencryptedPassword, challengeHandshakeAuthenticationProtocol, microsoftChap, microsoftChapVersionTwo.
     */
    innerAuthenticationProtocolForEapTtls?: NullableOption<NonEapAuthenticationMethodForEapTtlsType>;
    /**
     * Enable identity privacy (Outer Identity) when EAP Type is configured to EAP - TTLS, EAP - FAST or PEAP. This property
     * masks usernames with the text you enter. For example, if you use 'anonymous', each user that authenticates with this
     * Wi-Fi connection using their real username is displayed as 'anonymous'.
     */
    outerIdentityPrivacyTemporaryValue?: NullableOption<string>;
    // Password format string used to build the password to connect to wifi
    passwordFormatString?: NullableOption<string>;
    /**
     * Trusted server certificate names when EAP Type is configured to EAP-TLS/TTLS/FAST or PEAP. This is the common name used
     * in the certificates issued by your trusted certificate authority (CA). If you provide this information, you can bypass
     * the dynamic trust dialog that is displayed on end users' devices when they connect to this Wi-Fi network.
     */
    trustedServerCertificateNames?: NullableOption<string[]>;
    // Username format string used to build the username to connect to wifi
    usernameFormatString?: NullableOption<string>;
    // Tenant level settings for the Derived Credentials to be used for authentication.
    derivedCredentialSettings?: NullableOption<DeviceManagementDerivedCredentialSettings>;
    /**
     * Identity Certificate for client authentication when EAP Type is configured to EAP-TLS, EAP-TTLS (with Certificate
     * Authentication), or PEAP (with Certificate Authentication).
     */
    identityCertificateForClientAuthentication?: NullableOption<IosCertificateProfileBase>;
    /**
     * Trusted Root Certificates for Server Validation when EAP Type is configured to EAP-TLS/TTLS/FAST or PEAP. If you
     * provide this value you do not need to provide trustedServerCertificateNames, and vice versa.
     */
    rootCertificatesForServerValidation?: NullableOption<IosTrustedRootCertificate[]>;
}
// tslint:disable-next-line: interface-name
export interface IosTrustedRootCertificate extends DeviceConfiguration {
    // File name to display in UI.
    certFileName?: NullableOption<string>;
    // Trusted Root Certificate.
    trustedRootCertificate?: number;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IosExpeditedCheckinConfiguration extends AppleExpeditedCheckinConfigurationBase {}
// tslint:disable-next-line: interface-name
export interface IosGeneralDeviceConfiguration extends DeviceConfiguration {
    // Indicates whether or not to allow account modification when the device is in supervised mode.
    accountBlockModification?: boolean;
    // Indicates whether or not to allow activation lock when the device is in the supervised mode.
    activationLockAllowWhenSupervised?: boolean;
    // Indicates whether or not to allow AirDrop when the device is in supervised mode.
    airDropBlocked?: boolean;
    // Indicates whether or not to cause AirDrop to be considered an unmanaged drop target (iOS 9.0 and later).
    airDropForceUnmanagedDropTarget?: boolean;
    // Indicates whether or not to enforce all devices receiving AirPlay requests from this device to use a pairing password.
    airPlayForcePairingPasswordForOutgoingRequests?: boolean;
    // Indicates whether or not keychain storage of username and password for Airprint is blocked (iOS 11.0 and later).
    airPrintBlockCredentialsStorage?: boolean;
    // Indicates whether or not AirPrint is blocked (iOS 11.0 and later).
    airPrintBlocked?: boolean;
    /**
     * Indicates whether or not iBeacon discovery of AirPrint printers is blocked. This prevents spurious AirPrint Bluetooth
     * beacons from phishing for network traffic (iOS 11.0 and later).
     */
    airPrintBlockiBeaconDiscovery?: boolean;
    // Indicates if trusted certificates are required for TLS printing communication (iOS 11.0 and later).
    airPrintForceTrustedTLS?: boolean;
    // Prevents a user from adding any App Clips and removes any existing App Clips on the device.
    appClipsBlocked?: boolean;
    // Indicates whether or not to block the user from using News when the device is in supervised mode (iOS 9.0 and later).
    appleNewsBlocked?: boolean;
    // Limits Apple personalized advertising when true. Available in iOS 14 and later.
    applePersonalizedAdsBlocked?: boolean;
    // Indicates whether or not to allow Apple Watch pairing when the device is in supervised mode (iOS 9.0 and later).
    appleWatchBlockPairing?: boolean;
    // Indicates whether or not to force a paired Apple Watch to use Wrist Detection (iOS 8.2 and later).
    appleWatchForceWristDetection?: boolean;
    // Indicates if the removal of apps is allowed.
    appRemovalBlocked?: boolean;
    /**
     * Gets or sets the list of iOS apps allowed to autonomously enter Single App Mode. Supervised only. iOS 7.0 and later.
     * This collection can contain a maximum of 500 elements.
     */
    appsSingleAppModeList?: NullableOption<AppListItem[]>;
    /**
     * Indicates whether or not to block the automatic downloading of apps purchased on other devices when the device is in
     * supervised mode (iOS 9.0 and later).
     */
    appStoreBlockAutomaticDownloads?: boolean;
    // Indicates whether or not to block the user from using the App Store. Requires a supervised device for iOS 13 and later.
    appStoreBlocked?: boolean;
    // Indicates whether or not to block the user from making in app purchases.
    appStoreBlockInAppPurchases?: boolean;
    /**
     * Indicates whether or not to block the App Store app, not restricting installation through Host apps. Applies to
     * supervised mode only (iOS 9.0 and later).
     */
    appStoreBlockUIAppInstallation?: boolean;
    // Indicates whether or not to require a password when using the app store.
    appStoreRequirePassword?: boolean;
    /**
     * List of apps in the visibility list (either visible/launchable apps list or hidden/unlaunchable apps list, controlled
     * by AppsVisibilityListType) (iOS 9.3 and later). This collection can contain a maximum of 10000 elements.
     */
    appsVisibilityList?: NullableOption<AppListItem[]>;
    // Type of list that is in the AppsVisibilityList. Possible values are: none, appsInListCompliant, appsNotInListCompliant.
    appsVisibilityListType?: AppListType;
    /**
     * Indicates whether or not to force user authentication before autofilling passwords and credit card information in
     * Safari and other apps on supervised devices.
     */
    autoFillForceAuthentication?: boolean;
    /**
     * Blocks users from unlocking their device with Apple Watch. Available for devices running iOS and iPadOS versions 14.5
     * and later.
     */
    autoUnlockBlocked?: boolean;
    /**
     * Indicates whether or not the removal of system apps from the device is blocked on a supervised device (iOS 11.0 and
     * later).
     */
    blockSystemAppRemoval?: boolean;
    /**
     * Indicates whether or not to allow modification of Bluetooth settings when the device is in supervised mode (iOS 10.0
     * and later).
     */
    bluetoothBlockModification?: boolean;
    /**
     * Indicates whether or not to block the user from accessing the camera of the device. Requires a supervised device for
     * iOS 13 and later.
     */
    cameraBlocked?: boolean;
    // Indicates whether or not to block data roaming.
    cellularBlockDataRoaming?: boolean;
    // Indicates whether or not to block global background fetch while roaming.
    cellularBlockGlobalBackgroundFetchWhileRoaming?: boolean;
    // Indicates whether or not to allow changes to cellular app data usage settings when the device is in supervised mode.
    cellularBlockPerAppDataModification?: boolean;
    // Indicates whether or not to block Personal Hotspot.
    cellularBlockPersonalHotspot?: boolean;
    // Indicates whether or not to block the user from modifying the personal hotspot setting (iOS 12.2 or later).
    cellularBlockPersonalHotspotModification?: boolean;
    // Indicates whether or not to allow users to change the settings of the cellular plan on a supervised device.
    cellularBlockPlanModification?: boolean;
    // Indicates whether or not to block voice roaming.
    cellularBlockVoiceRoaming?: boolean;
    // Indicates whether or not to block untrusted TLS certificates.
    certificatesBlockUntrustedTlsCertificates?: boolean;
    /**
     * Indicates whether or not to allow remote screen observation by Classroom app when the device is in supervised mode (iOS
     * 9.3 and later).
     */
    classroomAppBlockRemoteScreenObservation?: boolean;
    /**
     * Indicates whether or not to automatically give permission to the teacher of a managed course on the Classroom app to
     * view a student's screen without prompting when the device is in supervised mode.
     */
    classroomAppForceUnpromptedScreenObservation?: boolean;
    /**
     * Indicates whether or not to automatically give permission to the teacher's requests, without prompting the student,
     * when the device is in supervised mode.
     */
    classroomForceAutomaticallyJoinClasses?: boolean;
    /**
     * Indicates whether a student enrolled in an unmanaged course via Classroom will request permission from the teacher when
     * attempting to leave the course (iOS 11.3 and later).
     */
    classroomForceRequestPermissionToLeaveClasses?: boolean;
    /**
     * Indicates whether or not to allow the teacher to lock apps or the device without prompting the student. Supervised
     * only.
     */
    classroomForceUnpromptedAppAndDeviceLock?: boolean;
    // List that is in the AppComplianceList. Possible values are: none, appsInListCompliant, appsNotInListCompliant.
    compliantAppListType?: AppListType;
    /**
     * List of apps in the compliance (either allow list or block list, controlled by CompliantAppListType). This collection
     * can contain a maximum of 10000 elements.
     */
    compliantAppsList?: NullableOption<AppListItem[]>;
    /**
     * Indicates whether or not to block the user from installing configuration profiles and certificates interactively when
     * the device is in supervised mode.
     */
    configurationProfileBlockChanges?: boolean;
    // Indicates whether or not managed apps can write contacts to unmanaged contacts accounts (iOS 12.0 and later).
    contactsAllowManagedToUnmanagedWrite?: boolean;
    // Indicates whether or not unmanaged apps can read from managed contacts accounts (iOS 12.0 or later).
    contactsAllowUnmanagedToManagedRead?: boolean;
    // Indicates whether or not to block the continuous path keyboard when the device is supervised (iOS 13 or later).
    continuousPathKeyboardBlocked?: boolean;
    /**
     * Indicates whether or not the Date and Time 'Set Automatically' feature is enabled and cannot be turned off by the user
     * (iOS 12.0 and later).
     */
    dateAndTimeForceSetAutomatically?: boolean;
    // Indicates whether or not to block definition lookup when the device is in supervised mode (iOS 8.1.3 and later ).
    definitionLookupBlocked?: boolean;
    /**
     * Indicates whether or not to allow the user to enables restrictions in the device settings when the device is in
     * supervised mode.
     */
    deviceBlockEnableRestrictions?: boolean;
    /**
     * Indicates whether or not to allow the use of the 'Erase all content and settings' option on the device when the device
     * is in supervised mode.
     */
    deviceBlockEraseContentAndSettings?: boolean;
    // Indicates whether or not to allow device name modification when the device is in supervised mode (iOS 9.0 and later).
    deviceBlockNameModification?: boolean;
    // Indicates whether or not to block diagnostic data submission.
    diagnosticDataBlockSubmission?: boolean;
    /**
     * Indicates whether or not to allow diagnostics submission settings modification when the device is in supervised mode
     * (iOS 9.3.2 and later).
     */
    diagnosticDataBlockSubmissionModification?: boolean;
    // Indicates whether or not to block the user from viewing managed documents in unmanaged apps.
    documentsBlockManagedDocumentsInUnmanagedApps?: boolean;
    // Indicates whether or not to block the user from viewing unmanaged documents in managed apps.
    documentsBlockUnmanagedDocumentsInManagedApps?: boolean;
    // An email address lacking a suffix that matches any of these strings will be considered out-of-domain.
    emailInDomainSuffixes?: NullableOption<string[]>;
    // Indicates whether or not to block the user from trusting an enterprise app.
    enterpriseAppBlockTrust?: boolean;
    // [Deprecated] Configuring this setting and setting the value to 'true' has no effect on the device.
    enterpriseAppBlockTrustModification?: boolean;
    // Indicates whether or not Enterprise book back up is blocked.
    enterpriseBookBlockBackup?: boolean;
    // Indicates whether or not Enterprise book notes and highlights sync is blocked.
    enterpriseBookBlockMetadataSync?: boolean;
    // Indicates whether or not to allow the addition or removal of cellular plans on the eSIM of a supervised device.
    esimBlockModification?: boolean;
    // Indicates whether or not to block the user from using FaceTime. Requires a supervised device for iOS 13 and later.
    faceTimeBlocked?: boolean;
    /**
     * Indicates if devices can access files or other resources on a network server using the Server Message Block (SMB)
     * protocol. Available for devices running iOS and iPadOS, versions 13.0 and later.
     */
    filesNetworkDriveAccessBlocked?: boolean;
    /**
     * Indicates if sevices with access can connect to and open files on a USB drive. Available for devices running iOS and
     * iPadOS, versions 13.0 and later.
     */
    filesUsbDriveAccessBlocked?: boolean;
    // Indicates whether or not to block Find My Device when the device is supervised (iOS 13 or later).
    findMyDeviceInFindMyAppBlocked?: boolean;
    // Indicates whether or not to block changes to Find My Friends when the device is in supervised mode.
    findMyFriendsBlocked?: boolean;
    // Indicates whether or not to block Find My Friends when the device is supervised (iOS 13 or later).
    findMyFriendsInFindMyAppBlocked?: boolean;
    // Indicates whether or not to block the user from using Game Center when the device is in supervised mode.
    gameCenterBlocked?: boolean;
    /**
     * Indicates whether or not to block the user from having friends in Game Center. Requires a supervised device for iOS 13
     * and later.
     */
    gamingBlockGameCenterFriends?: boolean;
    /**
     * Indicates whether or not to block the user from using multiplayer gaming. Requires a supervised device for iOS 13 and
     * later.
     */
    gamingBlockMultiplayer?: boolean;
    /**
     * indicates whether or not to allow host pairing to control the devices an iOS device can pair with when the iOS device
     * is in supervised mode.
     */
    hostPairingBlocked?: boolean;
    // Indicates whether or not to block the user from using the iBooks Store when the device is in supervised mode.
    iBooksStoreBlocked?: boolean;
    // Indicates whether or not to block the user from downloading media from the iBookstore that has been tagged as erotica.
    iBooksStoreBlockErotica?: boolean;
    /**
     * Indicates whether or not to block the user from continuing work they started on iOS device to another iOS or macOS
     * device.
     */
    iCloudBlockActivityContinuation?: boolean;
    // Indicates whether or not to block iCloud backup. Requires a supervised device for iOS 13 and later.
    iCloudBlockBackup?: boolean;
    // Indicates whether or not to block iCloud document sync. Requires a supervised device for iOS 13 and later.
    iCloudBlockDocumentSync?: boolean;
    // Indicates whether or not to block Managed Apps Cloud Sync.
    iCloudBlockManagedAppsSync?: boolean;
    // Indicates whether or not to block iCloud Photo Library.
    iCloudBlockPhotoLibrary?: boolean;
    // Indicates whether or not to block iCloud Photo Stream Sync.
    iCloudBlockPhotoStreamSync?: boolean;
    // Indicates whether or not to block Shared Photo Stream.
    iCloudBlockSharedPhotoStream?: boolean;
    // Indicates whether or not to require backups to iCloud be encrypted.
    iCloudRequireEncryptedBackup?: boolean;
    // Indicates whether or not to block the iTunes app. Requires a supervised device for iOS 13 and later.
    iTunesBlocked?: boolean;
    /**
     * Indicates whether or not to block the user from accessing explicit content in iTunes and the App Store. Requires a
     * supervised device for iOS 13 and later.
     */
    iTunesBlockExplicitContent?: boolean;
    /**
     * Indicates whether or not to block Music service and revert Music app to classic mode when the device is in supervised
     * mode (iOS 9.3 and later and macOS 10.12 and later).
     */
    iTunesBlockMusicService?: boolean;
    /**
     * Indicates whether or not to block the user from using iTunes Radio when the device is in supervised mode (iOS 9.3 and
     * later).
     */
    iTunesBlockRadio?: boolean;
    // Indicates whether or not to block keyboard auto-correction when the device is in supervised mode (iOS 8.1.3 and later).
    keyboardBlockAutoCorrect?: boolean;
    // Indicates whether or not to block the user from using dictation input when the device is in supervised mode.
    keyboardBlockDictation?: boolean;
    // Indicates whether or not to block predictive keyboards when device is in supervised mode (iOS 8.1.3 and later).
    keyboardBlockPredictive?: boolean;
    // Indicates whether or not to block keyboard shortcuts when the device is in supervised mode (iOS 9.0 and later).
    keyboardBlockShortcuts?: boolean;
    // Indicates whether or not to block keyboard spell-checking when the device is in supervised mode (iOS 8.1.3 and later).
    keyboardBlockSpellCheck?: boolean;
    // Indicates whether or not iCloud keychain synchronization is blocked. Requires a supervised device for iOS 13 and later.
    keychainBlockCloudSync?: boolean;
    // Indicates whether or not to allow assistive speak while in kiosk mode.
    kioskModeAllowAssistiveSpeak?: boolean;
    // Indicates whether or not to allow access to the Assistive Touch Settings while in kiosk mode.
    kioskModeAllowAssistiveTouchSettings?: boolean;
    /**
     * Indicates whether or not to allow device auto lock while in kiosk mode. This property's functionality is redundant with
     * the OS default and is deprecated. Use KioskModeBlockAutoLock instead.
     */
    kioskModeAllowAutoLock?: boolean;
    // Indicates whether or not to allow access to the Color Inversion Settings while in kiosk mode.
    kioskModeAllowColorInversionSettings?: boolean;
    /**
     * Indicates whether or not to allow use of the ringer switch while in kiosk mode. This property's functionality is
     * redundant with the OS default and is deprecated. Use KioskModeBlockRingerSwitch instead.
     */
    kioskModeAllowRingerSwitch?: boolean;
    /**
     * Indicates whether or not to allow screen rotation while in kiosk mode. This property's functionality is redundant with
     * the OS default and is deprecated. Use KioskModeBlockScreenRotation instead.
     */
    kioskModeAllowScreenRotation?: boolean;
    /**
     * Indicates whether or not to allow use of the sleep button while in kiosk mode. This property's functionality is
     * redundant with the OS default and is deprecated. Use KioskModeBlockSleepButton instead.
     */
    kioskModeAllowSleepButton?: boolean;
    /**
     * Indicates whether or not to allow use of the touchscreen while in kiosk mode. This property's functionality is
     * redundant with the OS default and is deprecated. Use KioskModeBlockTouchscreen instead.
     */
    kioskModeAllowTouchscreen?: boolean;
    // Indicates whether or not to allow the user to toggle voice control in kiosk mode.
    kioskModeAllowVoiceControlModification?: boolean;
    // Indicates whether or not to allow access to the voice over settings while in kiosk mode.
    kioskModeAllowVoiceOverSettings?: boolean;
    /**
     * Indicates whether or not to allow use of the volume buttons while in kiosk mode. This property's functionality is
     * redundant with the OS default and is deprecated. Use KioskModeBlockVolumeButtons instead.
     */
    kioskModeAllowVolumeButtons?: boolean;
    // Indicates whether or not to allow access to the zoom settings while in kiosk mode.
    kioskModeAllowZoomSettings?: boolean;
    // URL in the app store to the app to use for kiosk mode. Use if KioskModeManagedAppId is not known.
    kioskModeAppStoreUrl?: NullableOption<string>;
    // Type of app to run in kiosk mode. Possible values are: notConfigured, appStoreApp, managedApp, builtInApp.
    kioskModeAppType?: IosKioskModeAppType;
    // Indicates whether or not to block device auto lock while in kiosk mode.
    kioskModeBlockAutoLock?: boolean;
    // Indicates whether or not to block use of the ringer switch while in kiosk mode.
    kioskModeBlockRingerSwitch?: boolean;
    // Indicates whether or not to block screen rotation while in kiosk mode.
    kioskModeBlockScreenRotation?: boolean;
    // Indicates whether or not to block use of the sleep button while in kiosk mode.
    kioskModeBlockSleepButton?: boolean;
    // Indicates whether or not to block use of the touchscreen while in kiosk mode.
    kioskModeBlockTouchscreen?: boolean;
    // Indicates whether or not to block the volume buttons while in Kiosk Mode.
    kioskModeBlockVolumeButtons?: boolean;
    // ID for built-in apps to use for kiosk mode. Used when KioskModeManagedAppId and KioskModeAppStoreUrl are not set.
    kioskModeBuiltInAppId?: NullableOption<string>;
    // Indicates whether or not to enable voice control in kiosk mode.
    kioskModeEnableVoiceControl?: boolean;
    /**
     * Managed app id of the app to use for kiosk mode. If KioskModeManagedAppId is specified then KioskModeAppStoreUrl will
     * be ignored.
     */
    kioskModeManagedAppId?: NullableOption<string>;
    // Indicates whether or not to require assistive touch while in kiosk mode.
    kioskModeRequireAssistiveTouch?: boolean;
    // Indicates whether or not to require color inversion while in kiosk mode.
    kioskModeRequireColorInversion?: boolean;
    // Indicates whether or not to require mono audio while in kiosk mode.
    kioskModeRequireMonoAudio?: boolean;
    // Indicates whether or not to require voice over while in kiosk mode.
    kioskModeRequireVoiceOver?: boolean;
    // Indicates whether or not to require zoom while in kiosk mode.
    kioskModeRequireZoom?: boolean;
    // Indicates whether or not to block the user from using control center on the lock screen.
    lockScreenBlockControlCenter?: boolean;
    // Indicates whether or not to block the user from using the notification view on the lock screen.
    lockScreenBlockNotificationView?: boolean;
    // Indicates whether or not to block the user from using passbook when the device is locked.
    lockScreenBlockPassbook?: boolean;
    // Indicates whether or not to block the user from using the Today View on the lock screen.
    lockScreenBlockTodayView?: boolean;
    /**
     * Media content rating settings for Apps. Possible values are: allAllowed, allBlocked, agesAbove4, agesAbove9,
     * agesAbove12, agesAbove17.
     */
    mediaContentRatingApps?: RatingAppsType;
    // Media content rating settings for Australia
    mediaContentRatingAustralia?: NullableOption<MediaContentRatingAustralia>;
    // Media content rating settings for Canada
    mediaContentRatingCanada?: NullableOption<MediaContentRatingCanada>;
    // Media content rating settings for France
    mediaContentRatingFrance?: NullableOption<MediaContentRatingFrance>;
    // Media content rating settings for Germany
    mediaContentRatingGermany?: NullableOption<MediaContentRatingGermany>;
    // Media content rating settings for Ireland
    mediaContentRatingIreland?: NullableOption<MediaContentRatingIreland>;
    // Media content rating settings for Japan
    mediaContentRatingJapan?: NullableOption<MediaContentRatingJapan>;
    // Media content rating settings for New Zealand
    mediaContentRatingNewZealand?: NullableOption<MediaContentRatingNewZealand>;
    // Media content rating settings for United Kingdom
    mediaContentRatingUnitedKingdom?: NullableOption<MediaContentRatingUnitedKingdom>;
    // Media content rating settings for United States
    mediaContentRatingUnitedStates?: NullableOption<MediaContentRatingUnitedStates>;
    // Indicates whether or not to block the user from using the Messages app on the supervised device.
    messagesBlocked?: boolean;
    /**
     * List of managed apps and the network rules that applies to them. This collection can contain a maximum of 1000
     * elements.
     */
    networkUsageRules?: NullableOption<IosNetworkUsageRule[]>;
    /**
     * Disable NFC to prevent devices from pairing with other NFC-enabled devices. Available for iOS/iPadOS devices running
     * 14.2 and later.
     */
    nfcBlocked?: boolean;
    // Indicates whether or not to allow notifications settings modification (iOS 9.3 and later).
    notificationsBlockSettingsModification?: boolean;
    /**
     * Disables connections to Siri servers so that users can’t use Siri to dictate text. Available for devices running iOS
     * and iPadOS versions 14.5 and later.
     */
    onDeviceOnlyDictationForced?: boolean;
    // Block modification of registered Touch ID fingerprints when in supervised mode.
    passcodeBlockFingerprintModification?: boolean;
    // Indicates whether or not to block fingerprint unlock.
    passcodeBlockFingerprintUnlock?: boolean;
    // Indicates whether or not to allow passcode modification on the supervised device (iOS 9.0 and later).
    passcodeBlockModification?: boolean;
    // Indicates whether or not to block simple passcodes.
    passcodeBlockSimple?: boolean;
    // Number of days before the passcode expires. Valid values 1 to 65535
    passcodeExpirationDays?: NullableOption<number>;
    // Number of character sets a passcode must contain. Valid values 0 to 4
    passcodeMinimumCharacterSetCount?: NullableOption<number>;
    // Minimum length of passcode. Valid values 4 to 14
    passcodeMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before a passcode is required.
    passcodeMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // Minutes of inactivity before the screen times out.
    passcodeMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    // Number of previous passcodes to block. Valid values 1 to 24
    passcodePreviousPasscodeBlockCount?: NullableOption<number>;
    // Indicates whether or not to require a passcode.
    passcodeRequired?: boolean;
    // Type of passcode that is required. Possible values are: deviceDefault, alphanumeric, numeric.
    passcodeRequiredType?: RequiredPasswordType;
    // Number of sign in failures allowed before wiping the device. Valid values 2 to 11
    passcodeSignInFailureCountBeforeWipe?: NullableOption<number>;
    // Indicates whether or not to block sharing passwords with the AirDrop passwords feature iOS 12.0 and later).
    passwordBlockAirDropSharing?: boolean;
    // Indicates if the AutoFill passwords feature is allowed (iOS 12.0 and later).
    passwordBlockAutoFill?: boolean;
    // Indicates whether or not to block requesting passwords from nearby devices (iOS 12.0 and later).
    passwordBlockProximityRequests?: boolean;
    /**
     * Indicates whether or not over-the-air PKI updates are blocked. Setting this restriction to false does not disable CRL
     * and OCSP checks (iOS 7.0 and later).
     */
    pkiBlockOTAUpdates?: boolean;
    // Indicates whether or not to block the user from using podcasts on the supervised device (iOS 8.0 and later).
    podcastsBlocked?: boolean;
    // Indicates if ad tracking is limited.(iOS 7.0 and later).
    privacyForceLimitAdTracking?: boolean;
    // Indicates whether or not to enable the prompt to setup nearby devices with a supervised device.
    proximityBlockSetupToNewDevice?: boolean;
    /**
     * Indicates whether or not to block the user from using Auto fill in Safari. Requires a supervised device for iOS 13 and
     * later.
     */
    safariBlockAutofill?: boolean;
    // Indicates whether or not to block the user from using Safari. Requires a supervised device for iOS 13 and later.
    safariBlocked?: boolean;
    // Indicates whether or not to block JavaScript in Safari.
    safariBlockJavaScript?: boolean;
    // Indicates whether or not to block popups in Safari.
    safariBlockPopups?: boolean;
    /**
     * Cookie settings for Safari. Possible values are: browserDefault, blockAlways, allowCurrentWebSite,
     * allowFromWebsitesVisited, allowAlways.
     */
    safariCookieSettings?: WebBrowserCookieSettings;
    // URLs matching the patterns listed here will be considered managed.
    safariManagedDomains?: NullableOption<string[]>;
    /**
     * Users can save passwords in Safari only from URLs matching the patterns listed here. Applies to devices in supervised
     * mode (iOS 9.3 and later).
     */
    safariPasswordAutoFillDomains?: NullableOption<string[]>;
    // Indicates whether or not to require fraud warning in Safari.
    safariRequireFraudWarning?: boolean;
    // Indicates whether or not to block the user from taking Screenshots.
    screenCaptureBlocked?: boolean;
    // Indicates whether or not to block temporary sessions on Shared iPads (iOS 13.4 or later).
    sharedDeviceBlockTemporarySessions?: boolean;
    // Indicates whether or not to block the user from using Siri.
    siriBlocked?: boolean;
    // Indicates whether or not to block the user from using Siri when locked.
    siriBlockedWhenLocked?: boolean;
    // Indicates whether or not to block Siri from querying user-generated content when used on a supervised device.
    siriBlockUserGeneratedContent?: boolean;
    // Indicates whether or not to prevent Siri from dictating, or speaking profane language on supervised device.
    siriRequireProfanityFilter?: boolean;
    // Sets how many days a software update will be delyed for a supervised device. Valid values 0 to 90
    softwareUpdatesEnforcedDelayInDays?: NullableOption<number>;
    // Indicates whether or not to delay user visibility of software updates when the device is in supervised mode.
    softwareUpdatesForceDelayed?: boolean;
    // Indicates whether or not to block Spotlight search from returning internet results on supervised device.
    spotlightBlockInternetResults?: boolean;
    /**
     * Allow users to boot devices into recovery mode with unpaired devices. Available for devices running iOS and iPadOS
     * versions 14.5 and later.
     */
    unpairedExternalBootToRecoveryAllowed?: boolean;
    // Indicates if connecting to USB accessories while the device is locked is allowed (iOS 11.4.1 and later).
    usbRestrictedModeBlocked?: boolean;
    // Indicates whether or not to block voice dialing.
    voiceDialingBlocked?: boolean;
    // Indicates whether or not the creation of VPN configurations is blocked (iOS 11.0 and later).
    vpnBlockCreation?: boolean;
    // Indicates whether or not to allow wallpaper modification on supervised device (iOS 9.0 and later) .
    wallpaperBlockModification?: boolean;
    /**
     * Indicates whether or not to force the device to use only Wi-Fi networks from configuration profiles when the device is
     * in supervised mode. Available for devices running iOS and iPadOS versions 14.4 and earlier. Devices running 14.5+
     * should use the setting, 'WiFiConnectToAllowedNetworksOnlyForced.
     */
    wiFiConnectOnlyToConfiguredNetworks?: boolean;
    /**
     * Require devices to use Wi-Fi networks set up via configuration profiles. Available for devices running iOS and iPadOS
     * versions 14.5 and later.
     */
    wiFiConnectToAllowedNetworksOnlyForced?: boolean;
    /**
     * Indicates whether or not Wi-Fi remains on, even when device is in airplane mode. Available for devices running iOS and
     * iPadOS, versions 13.0 and later.
     */
    wifiPowerOnForced?: boolean;
}
// tslint:disable-next-line: interface-name
export interface IosVpnConfiguration extends AppleVpnConfiguration {
    // Zscaler only. Zscaler cloud which the user is assigned to.
    cloudName?: NullableOption<string>;
    // Zscaler only. List of network addresses which are not sent through the Zscaler cloud.
    excludeList?: NullableOption<string[]>;
    // Microsoft Tunnel site ID.
    microsoftTunnelSiteId?: NullableOption<string>;
    // Zscaler only. Blocks network traffic until the user signs into Zscaler app. 'True' means traffic is blocked.
    strictEnforcement?: NullableOption<boolean>;
    // Targeted mobile apps. This collection can contain a maximum of 500 elements.
    targetedMobileApps?: NullableOption<AppListItem[]>;
    /**
     * Zscaler only. Enter a static domain to pre-populate the login field with in the Zscaler app. If this is left empty, the
     * user's Azure Active Directory domain will be used instead.
     */
    userDomain?: NullableOption<string>;
    // Tenant level settings for the Derived Credentials to be used for authentication.
    derivedCredentialSettings?: NullableOption<DeviceManagementDerivedCredentialSettings>;
    // Identity certificate for client authentication when authentication method is certificate.
    identityCertificate?: NullableOption<IosCertificateProfileBase>;
}
// tslint:disable-next-line: interface-name
export interface IosikEv2VpnConfiguration extends IosVpnConfiguration {
    /**
     * Allows the use of child security association parameters by setting all parameters to the device's default unless
     * explicitly specified.
     */
    allowDefaultChildSecurityAssociationParameters?: NullableOption<boolean>;
    /**
     * Allows the use of security association parameters by setting all parameters to the device's default unless explicitly
     * specified.
     */
    allowDefaultSecurityAssociationParameters?: NullableOption<boolean>;
    // AlwaysOn Configuration
    alwaysOnConfiguration?: NullableOption<AppleVpnAlwaysOnConfiguration>;
    // Child Security Association Parameters
    childSecurityAssociationParameters?: NullableOption<IosVpnSecurityAssociationParameters>;
    // Type of Client Authentication the VPN client will use. Possible values are: userAuthentication, deviceAuthentication.
    clientAuthenticationType?: VpnClientAuthenticationType;
    // Determine how often to check if a peer connection is still active. . Possible values are: medium, none, low, high.
    deadPeerDetectionRate?: NullableOption<VpnDeadPeerDetectionRate>;
    // Disable MOBIKE
    disableMobilityAndMultihoming?: NullableOption<boolean>;
    // Disable Redirect
    disableRedirect?: NullableOption<boolean>;
    // Determines if Always on VPN is enabled
    enableAlwaysOnConfiguration?: NullableOption<boolean>;
    // Enables a best-effort revocation check; server response timeouts will not cause it to fail
    enableCertificateRevocationCheck?: NullableOption<boolean>;
    // Enables EAP only authentication
    enableEAP?: NullableOption<boolean>;
    // Enable Perfect Forward Secrecy (PFS).
    enablePerfectForwardSecrecy?: NullableOption<boolean>;
    // Enable Use Internal Subnet Attributes.
    enableUseInternalSubnetAttributes?: NullableOption<boolean>;
    /**
     * Method of identifying the client that is trying to connect via VPN. . Possible values are: deviceFQDN, empty,
     * clientCertificateSubjectName.
     */
    localIdentifier?: VpnLocalIdentifier;
    // Maximum transmission unit. Valid values 1280 to 1400
    mtuSizeInBytes?: NullableOption<number>;
    // Address of the IKEv2 server. Must be a FQDN, UserFQDN, network address, or ASN1DN
    remoteIdentifier?: string;
    // Security Association Parameters
    securityAssociationParameters?: NullableOption<IosVpnSecurityAssociationParameters>;
    // Common name of the IKEv2 Server Certificate used in Server Authentication
    serverCertificateCommonName?: NullableOption<string>;
    // Issuer Common name of the IKEv2 Server Certificate issuer used in Authentication
    serverCertificateIssuerCommonName?: NullableOption<string>;
    /**
     * The type of certificate the VPN server will present to the VPN client for authentication. Possible values are: rsa,
     * ecdsa256, ecdsa384, ecdsa521.
     */
    serverCertificateType?: NullableOption<VpnServerCertificateType>;
    // Used when Shared Secret Authentication is selected
    sharedSecret?: NullableOption<string>;
    // The maximum TLS version to be used with EAP-TLS authentication
    tlsMaximumVersion?: NullableOption<string>;
    // The minimum TLS version to be used with EAP-TLS authentication
    tlsMinimumVersion?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosImportedPFXCertificateProfile extends IosCertificateProfile {
    /**
     * Intended Purpose of the Certificate Profile - which could be Unassigned, SmimeEncryption, SmimeSigning etc. Possible
     * values are: unassigned, smimeEncryption, smimeSigning, vpn, wifi.
     */
    intendedPurpose?: IntendedPurpose;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
// tslint:disable-next-line: interface-name
export interface IosPkcsCertificateProfile extends IosCertificateProfileBase {
    // Target store certificate. Possible values are: user, machine.
    certificateStore?: NullableOption<CertificateStore>;
    // PKCS Certificate Template Name.
    certificateTemplateName?: string;
    // PKCS Certification Authority.
    certificationAuthority?: string;
    // PKCS Certification Authority Name.
    certificationAuthorityName?: string;
    // Custom Subject Alternative Name Settings. This collection can contain a maximum of 500 elements.
    customSubjectAlternativeNames?: NullableOption<CustomSubjectAlternativeName[]>;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
// tslint:disable-next-line: interface-name
export interface IosScepCertificateProfile extends IosCertificateProfileBase {
    // Target store certificate. Possible values are: user, machine.
    certificateStore?: NullableOption<CertificateStore>;
    /**
     * Custom Subject Alternative Name Settings. The OnPremisesUserPrincipalName variable is support as well as others
     * documented here: https://go.microsoft.com/fwlink/?LinkId=2027630. This collection can contain a maximum of 500
     * elements.
     */
    customSubjectAlternativeNames?: NullableOption<CustomSubjectAlternativeName[]>;
    // Extended Key Usage (EKU) settings. This collection can contain a maximum of 500 elements.
    extendedKeyUsages?: ExtendedKeyUsage[];
    // SCEP Key Size. Possible values are: size1024, size2048, size4096.
    keySize?: KeySize;
    // SCEP Key Usage. Possible values are: keyEncipherment, digitalSignature.
    keyUsage?: KeyUsages;
    // SCEP Server Url(s).
    scepServerUrls?: NullableOption<string[]>;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
    // Trusted Root Certificate.
    rootCertificate?: NullableOption<IosTrustedRootCertificate>;
}
// tslint:disable-next-line: interface-name
export interface IosUpdateConfiguration extends DeviceConfiguration {
    // Active Hours End (active hours mean the time window when updates install should not happen)
    activeHoursEnd?: string;
    // Active Hours Start (active hours mean the time window when updates install should not happen)
    activeHoursStart?: string;
    /**
     * If update schedule type is set to use time window scheduling, custom time windows when updates will be scheduled. This
     * collection can contain a maximum of 20 elements.
     */
    customUpdateTimeWindows?: NullableOption<CustomUpdateTimeWindow[]>;
    // If left unspecified, devices will update to the latest version of the OS.
    desiredOsVersion?: NullableOption<string>;
    // Days before software updates are visible to iOS devices ranging from 0 to 90 inclusive
    enforcedSoftwareUpdateDelayInDays?: NullableOption<number>;
    // Is setting enabled in UI
    isEnabled?: boolean;
    // Days in week for which active hours are configured. This collection can contain a maximum of 7 elements.
    scheduledInstallDays?: DayOfWeek[];
    /**
     * Update schedule type. Possible values are: updateOutsideOfActiveHours, alwaysUpdate, updateDuringTimeWindows,
     * updateOutsideOfTimeWindows.
     */
    updateScheduleType?: IosSoftwareUpdateScheduleType;
    // UTC Time Offset indicated in minutes
    utcTimeOffsetInMinutes?: NullableOption<number>;
}
export interface MacOSCertificateProfileBase extends DeviceConfiguration {
    // Scale for the Certificate Validity Period. Possible values are: days, months, years.
    certificateValidityPeriodScale?: CertificateValidityPeriodScale;
    // Value for the Certificate Validity Period.
    certificateValidityPeriodValue?: number;
    // Certificate renewal threshold percentage.
    renewalThresholdPercentage?: number;
    /**
     * Certificate Subject Alternative Name Type. Possible values are: none, emailAddress, userPrincipalName,
     * customAzureADAttribute, domainNameService, universalResourceIdentifier.
     */
    subjectAlternativeNameType?: NullableOption<SubjectAlternativeNameType>;
    /**
     * Certificate Subject Name Format. Possible values are: commonName, commonNameAsEmail, custom, commonNameIncludingEmail,
     * commonNameAsIMEI, commonNameAsSerialNumber.
     */
    subjectNameFormat?: AppleSubjectNameFormat;
}
export interface MacOSCompliancePolicy extends DeviceCompliancePolicy {
    /**
     * MDATP Require Mobile Threat Protection minimum risk level to report noncompliance. Possible values are: unavailable,
     * secured, low, medium, high, notSet.
     */
    advancedThreatProtectionRequiredSecurityLevel?: DeviceThreatProtectionLevel;
    // Require that devices have enabled device threat protection.
    deviceThreatProtectionEnabled?: boolean;
    /**
     * Require Mobile Threat Protection minimum risk level to report noncompliance. Possible values are: unavailable, secured,
     * low, medium, high, notSet.
     */
    deviceThreatProtectionRequiredSecurityLevel?: DeviceThreatProtectionLevel;
    // Corresponds to the 'Block all incoming connections' option.
    firewallBlockAllIncoming?: boolean;
    // Whether the firewall should be enabled or not.
    firewallEnabled?: boolean;
    // Corresponds to 'Enable stealth mode.'
    firewallEnableStealthMode?: boolean;
    /**
     * System and Privacy setting that determines which download locations apps can be run from on a macOS device. Possible
     * values are: notConfigured, macAppStore, macAppStoreAndIdentifiedDevelopers, anywhere.
     */
    gatekeeperAllowedAppSource?: MacOSGatekeeperAppSources;
    // Maximum MacOS build version.
    osMaximumBuildVersion?: NullableOption<string>;
    // Maximum MacOS version.
    osMaximumVersion?: NullableOption<string>;
    // Minimum MacOS build version.
    osMinimumBuildVersion?: NullableOption<string>;
    // Minimum MacOS version.
    osMinimumVersion?: NullableOption<string>;
    // Indicates whether or not to block simple passwords.
    passwordBlockSimple?: boolean;
    // Number of days before the password expires. Valid values 1 to 65535
    passwordExpirationDays?: NullableOption<number>;
    // The number of character sets required in the password.
    passwordMinimumCharacterSetCount?: NullableOption<number>;
    // Minimum length of password. Valid values 4 to 14
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before a password is required.
    passwordMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // Number of previous passwords to block. Valid values 1 to 24
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Whether or not to require a password.
    passwordRequired?: boolean;
    // The required password type. Possible values are: deviceDefault, alphanumeric, numeric.
    passwordRequiredType?: RequiredPasswordType;
    // Require encryption on Mac OS devices.
    storageRequireEncryption?: boolean;
    // Require that devices have enabled system integrity protection.
    systemIntegrityProtectionEnabled?: boolean;
}
export interface MacOSCustomAppConfiguration extends DeviceConfiguration {
    // Bundle id for targeting.
    bundleId?: string;
    // Configuration xml. (UTF8 encoded byte array)
    configurationXml?: number;
    // Configuration file name (.plist
    fileName?: NullableOption<string>;
}
export interface MacOSCustomConfiguration extends DeviceConfiguration {
    // Indicates the channel used to deploy the configuration profile. Available choices are DeviceChannel, UserChannel.
    deploymentChannel?: AppleDeploymentChannel;
    // Payload. (UTF8 encoded byte array)
    payload?: number;
    // Payload file name (.mobileconfig
    payloadFileName?: NullableOption<string>;
    // Name that is displayed to the user.
    payloadName?: string;
}
export interface MacOSDeviceFeaturesConfiguration extends AppleDeviceFeaturesConfigurationBase {
    // Whether to show admin host information on the login window.
    adminShowHostInfo?: boolean;
    /**
     * Gets or sets a list that maps apps to their associated domains. Application identifiers must be unique. This collection
     * can contain a maximum of 500 elements.
     */
    appAssociatedDomains?: NullableOption<MacOSAssociatedDomainsItem[]>;
    /**
     * DEPRECATED: use appAssociatedDomains instead. Gets or sets a list that maps apps to their associated domains. The key
     * should match the app's ID, and the value should be a string in the form of 'service:domain' where domain is a fully
     * qualified hostname (e.g. webcredentials:example.com). This collection can contain a maximum of 500 elements.
     */
    associatedDomains?: NullableOption<KeyValuePair[]>;
    // Whether to show the name and password dialog or a list of users on the login window.
    authorizedUsersListHidden?: boolean;
    // Whether to hide admin users in the authorized users list on the login window.
    authorizedUsersListHideAdminUsers?: boolean;
    // Whether to show only network and system users in the authorized users list on the login window.
    authorizedUsersListHideLocalUsers?: boolean;
    // Whether to hide mobile users in the authorized users list on the login window.
    authorizedUsersListHideMobileAccounts?: boolean;
    // Whether to show network users in the authorized users list on the login window.
    authorizedUsersListIncludeNetworkUsers?: boolean;
    // Whether to show other users in the authorized users list on the login window.
    authorizedUsersListShowOtherManagedUsers?: boolean;
    /**
     * List of applications, files, folders, and other items to launch when the user logs in. This collection can contain a
     * maximum of 500 elements.
     */
    autoLaunchItems?: NullableOption<MacOSLaunchItem[]>;
    // Whether the Other user will disregard use of the `&amp;gt;console&amp;gt; special user name.
    consoleAccessDisabled?: boolean;
    // Prevents content caches from purging content to free up disk space for other apps.
    contentCachingBlockDeletion?: boolean;
    /**
     * A list of custom IP ranges content caches will use to listen for clients. This collection can contain a maximum of 500
     * elements.
     */
    contentCachingClientListenRanges?: NullableOption<IpRange[]>;
    /**
     * Determines the method in which content caching servers will listen for clients. Possible values are: notConfigured,
     * clientsInLocalNetwork, clientsWithSamePublicIpAddress, clientsInCustomLocalNetworks,
     * clientsInCustomLocalNetworksWithFallback.
     */
    contentCachingClientPolicy?: MacOSContentCachingClientPolicy;
    /**
     * The path to the directory used to store cached content. The value must be (or end with) /Library/Application
     * Support/Apple/AssetCache/Data
     */
    contentCachingDataPath?: NullableOption<string>;
    // Disables internet connection sharing.
    contentCachingDisableConnectionSharing?: boolean;
    // Enables content caching and prevents it from being disabled by the user.
    contentCachingEnabled?: boolean;
    // Forces internet connection sharing. contentCachingDisableConnectionSharing overrides this setting.
    contentCachingForceConnectionSharing?: boolean;
    // Prevent the device from sleeping if content caching is enabled.
    contentCachingKeepAwake?: boolean;
    // Enables logging of IP addresses and ports of clients that request cached content.
    contentCachingLogClientIdentities?: boolean;
    /**
     * The maximum number of bytes of disk space that will be used for the content cache. A value of 0 (default) indicates
     * unlimited disk space.
     */
    contentCachingMaxSizeBytes?: NullableOption<number>;
    // A list of IP addresses representing parent content caches.
    contentCachingParents?: NullableOption<string[]>;
    /**
     * Determines the method in which content caching servers will select parents if multiple are present. Possible values
     * are: notConfigured, roundRobin, firstAvailable, urlPathHash, random, stickyAvailable.
     */
    contentCachingParentSelectionPolicy?: MacOSContentCachingParentSelectionPolicy;
    /**
     * A list of custom IP ranges content caches will use to query for content from peers caches. This collection can contain
     * a maximum of 500 elements.
     */
    contentCachingPeerFilterRanges?: NullableOption<IpRange[]>;
    /**
     * A list of custom IP ranges content caches will use to listen for peer caches. This collection can contain a maximum of
     * 500 elements.
     */
    contentCachingPeerListenRanges?: NullableOption<IpRange[]>;
    /**
     * Determines the method in which content caches peer with other caches. Possible values are: notConfigured,
     * peersInLocalNetwork, peersWithSamePublicIpAddress, peersInCustomLocalNetworks.
     */
    contentCachingPeerPolicy?: MacOSContentCachingPeerPolicy;
    /**
     * Sets the port used for content caching. If the value is 0, a random available port will be selected. Valid values 0 to
     * 65535
     */
    contentCachingPort?: NullableOption<number>;
    /**
     * A list of custom IP ranges that Apple's content caching service should use to match clients to content caches. This
     * collection can contain a maximum of 500 elements.
     */
    contentCachingPublicRanges?: NullableOption<IpRange[]>;
    // Display content caching alerts as system notifications.
    contentCachingShowAlerts?: boolean;
    /**
     * Determines what type of content is allowed to be cached by Apple's content caching service. Possible values are:
     * notConfigured, userContentOnly, sharedContentOnly.
     */
    contentCachingType?: MacOSContentCachingType;
    // Custom text to be displayed on the login window.
    loginWindowText?: NullableOption<string>;
    // Whether the Log Out menu item on the login window will be disabled while the user is logged in.
    logOutDisabledWhileLoggedIn?: boolean;
    // Gets or sets a single sign-on extension profile.
    macOSSingleSignOnExtension?: NullableOption<MacOSSingleSignOnExtension>;
    // Whether the Power Off menu item on the login window will be disabled while the user is logged in.
    powerOffDisabledWhileLoggedIn?: boolean;
    // Whether to hide the Restart button item on the login window.
    restartDisabled?: boolean;
    // Whether the Restart menu item on the login window will be disabled while the user is logged in.
    restartDisabledWhileLoggedIn?: boolean;
    // Whether to disable the immediate screen lock functions.
    screenLockDisableImmediate?: boolean;
    // Whether to hide the Shut Down button item on the login window.
    shutDownDisabled?: boolean;
    // Whether the Shut Down menu item on the login window will be disabled while the user is logged in.
    shutDownDisabledWhileLoggedIn?: boolean;
    // Gets or sets a single sign-on extension profile. Deprecated: use MacOSSingleSignOnExtension instead.
    singleSignOnExtension?: NullableOption<SingleSignOnExtension>;
    // Whether to hide the Sleep menu item on the login window.
    sleepDisabled?: boolean;
    // PKINIT Certificate for the authentication with single sign-on extensions.
    singleSignOnExtensionPkinitCertificate?: NullableOption<MacOSCertificateProfileBase>;
}
export interface MacOSEndpointProtectionConfiguration extends DeviceConfiguration {
    /**
     * Determines whether or not to enable automatic file sample submission for Microsoft Defender Advanced Threat Protection
     * on macOS. Possible values are: notConfigured, enabled, disabled.
     */
    advancedThreatProtectionAutomaticSampleSubmission?: Enablement;
    /**
     * Determines whether or not to enable cloud-delivered protection for Microsoft Defender Advanced Threat Protection on
     * macOS. Possible values are: notConfigured, enabled, disabled.
     */
    advancedThreatProtectionCloudDelivered?: Enablement;
    /**
     * Determines whether or not to enable diagnostic and usage data collection for Microsoft Defender Advanced Threat
     * Protection on macOS. Possible values are: notConfigured, enabled, disabled.
     */
    advancedThreatProtectionDiagnosticDataCollection?: Enablement;
    /**
     * A list of file extensions to exclude from antivirus scanning for Microsoft Defender Advanced Threat Protection on
     * macOS.
     */
    advancedThreatProtectionExcludedExtensions?: NullableOption<string[]>;
    // A list of paths to files to exclude from antivirus scanning for Microsoft Defender Advanced Threat Protection on macOS.
    advancedThreatProtectionExcludedFiles?: NullableOption<string[]>;
    /**
     * A list of paths to folders to exclude from antivirus scanning for Microsoft Defender Advanced Threat Protection on
     * macOS.
     */
    advancedThreatProtectionExcludedFolders?: NullableOption<string[]>;
    // A list of process names to exclude from antivirus scanning for Microsoft Defender Advanced Threat Protection on macOS.
    advancedThreatProtectionExcludedProcesses?: NullableOption<string[]>;
    /**
     * Determines whether or not to enable real-time protection for Microsoft Defender Advanced Threat Protection on macOS.
     * Possible values are: notConfigured, enabled, disabled.
     */
    advancedThreatProtectionRealTime?: Enablement;
    // Optional. If set to true, the user can defer the enabling of FileVault until they sign out.
    fileVaultAllowDeferralUntilSignOut?: boolean;
    // Optional. When using the Defer option, if set to true, the user is not prompted to enable FileVault at sign-out.
    fileVaultDisablePromptAtSignOut?: boolean;
    // Whether FileVault should be enabled or not.
    fileVaultEnabled?: boolean;
    /**
     * Optional. A hidden personal recovery key does not appear on the user's screen during FileVault encryption, reducing the
     * risk of it ending up in the wrong hands.
     */
    fileVaultHidePersonalRecoveryKey?: boolean;
    /**
     * Required if selected recovery key type(s) include InstitutionalRecoveryKey. The DER Encoded certificate file used to
     * set an institutional recovery key.
     */
    fileVaultInstitutionalRecoveryKeyCertificate?: NullableOption<number>;
    // File name of the institutional recovery key certificate to display in UI. (.der).
    fileVaultInstitutionalRecoveryKeyCertificateFileName?: NullableOption<string>;
    /**
     * Optional. When using the Defer option, this is the maximum number of times the user can ignore prompts to enable
     * FileVault before FileVault will be required for the user to sign in. If set to -1, it will always prompt to enable
     * FileVault until FileVault is enabled, though it will allow the user to bypass enabling FileVault. Setting this to 0
     * will disable the feature.
     */
    fileVaultNumberOfTimesUserCanIgnore?: NullableOption<number>;
    /**
     * Required if selected recovery key type(s) include PersonalRecoveryKey. A short message displayed to the user that
     * explains how they can retrieve their personal recovery key.
     */
    fileVaultPersonalRecoveryKeyHelpMessage?: NullableOption<string>;
    // Optional. If selected recovery key type(s) include PersonalRecoveryKey, the frequency to rotate that key, in months.
    fileVaultPersonalRecoveryKeyRotationInMonths?: NullableOption<number>;
    /**
     * Required if FileVault is enabled, determines the type(s) of recovery key to use. . Possible values are: notConfigured,
     * institutionalRecoveryKey, personalRecoveryKey.
     */
    fileVaultSelectedRecoveryKeyTypes?: MacOSFileVaultRecoveryKeyTypes;
    /**
     * List of applications with firewall settings. Firewall settings for applications not on this list are determined by the
     * user. This collection can contain a maximum of 500 elements.
     */
    firewallApplications?: NullableOption<MacOSFirewallApplication[]>;
    // Corresponds to the 'Block all incoming connections' option.
    firewallBlockAllIncoming?: boolean;
    // Whether the firewall should be enabled or not.
    firewallEnabled?: boolean;
    // Corresponds to 'Enable stealth mode.'
    firewallEnableStealthMode?: boolean;
    /**
     * System and Privacy setting that determines which download locations apps can be run from on a macOS device. Possible
     * values are: notConfigured, macAppStore, macAppStoreAndIdentifiedDevelopers, anywhere.
     */
    gatekeeperAllowedAppSource?: MacOSGatekeeperAppSources;
    // If set to true, the user override for Gatekeeper will be disabled.
    gatekeeperBlockOverride?: boolean;
}
export interface MacOSWiFiConfiguration extends DeviceConfiguration {
    /**
     * Connect automatically when this network is in range. Setting this to true will skip the user prompt and automatically
     * connect the device to Wi-Fi network.
     */
    connectAutomatically?: boolean;
    /**
     * Connect when the network is not broadcasting its name (SSID). When set to true, this profile forces the device to
     * connect to a network that doesn't broadcast its SSID to all devices.
     */
    connectWhenNetworkNameIsHidden?: boolean;
    // Network Name
    networkName?: string;
    // This is the pre-shared key for WPA Personal Wi-Fi network.
    preSharedKey?: NullableOption<string>;
    /**
     * URL of the proxy server automatic configuration script when automatic configuration is selected. This URL is typically
     * the location of PAC (Proxy Auto Configuration) file.
     */
    proxyAutomaticConfigurationUrl?: NullableOption<string>;
    // IP Address or DNS hostname of the proxy server when manual configuration is selected.
    proxyManualAddress?: NullableOption<string>;
    // Port of the proxy server when manual configuration is selected.
    proxyManualPort?: NullableOption<number>;
    // Proxy Type for this Wi-Fi connection. Possible values are: none, manual, automatic.
    proxySettings?: WiFiProxySetting;
    // This is the name of the Wi-Fi network that is broadcast to all devices.
    ssid?: string;
    /**
     * Indicates whether Wi-Fi endpoint uses an EAP based security type. Possible values are: open, wpaPersonal,
     * wpaEnterprise, wep, wpa2Personal, wpa2Enterprise.
     */
    wiFiSecurityType?: WiFiSecurityType;
}
export interface MacOSEnterpriseWiFiConfiguration extends MacOSWiFiConfiguration {
    /**
     * Authentication Method when EAP Type is configured to PEAP or EAP-TTLS. Possible values are: certificate,
     * usernameAndPassword, derivedCredential.
     */
    authenticationMethod?: NullableOption<WiFiAuthenticationMethod>;
    /**
     * EAP-FAST Configuration Option when EAP-FAST is the selected EAP Type. Possible values are: noProtectedAccessCredential,
     * useProtectedAccessCredential, useProtectedAccessCredentialAndProvision,
     * useProtectedAccessCredentialAndProvisionAnonymously.
     */
    eapFastConfiguration?: NullableOption<EapFastConfiguration>;
    /**
     * Extensible Authentication Protocol (EAP). Indicates the type of EAP protocol set on the Wi-Fi endpoint (router).
     * Possible values are: eapTls, leap, eapSim, eapTtls, peap, eapFast.
     */
    eapType?: EapType;
    /**
     * Non-EAP Method for Authentication (Inner Identity) when EAP Type is EAP-TTLS and Authenticationmethod is Username and
     * Password. Possible values are: unencryptedPassword, challengeHandshakeAuthenticationProtocol, microsoftChap,
     * microsoftChapVersionTwo.
     */
    innerAuthenticationProtocolForEapTtls?: NullableOption<NonEapAuthenticationMethodForEapTtlsType>;
    /**
     * Enable identity privacy (Outer Identity) when EAP Type is configured to EAP-TTLS, EAP-FAST or PEAP. This property masks
     * usernames with the text you enter. For example, if you use 'anonymous', each user that authenticates with this Wi-Fi
     * connection using their real username is displayed as 'anonymous'.
     */
    outerIdentityPrivacyTemporaryValue?: NullableOption<string>;
    /**
     * Trusted server certificate names when EAP Type is configured to EAP-TLS/TTLS/FAST or PEAP. This is the common name used
     * in the certificates issued by your trusted certificate authority (CA). If you provide this information, you can bypass
     * the dynamic trust dialog that is displayed on end users devices when they connect to this Wi-Fi network.
     */
    trustedServerCertificateNames?: NullableOption<string[]>;
    /**
     * Identity Certificate for client authentication when EAP Type is configured to EAP-TLS, EAP-TTLS (with Certificate
     * Authentication), or PEAP (with Certificate Authentication).
     */
    identityCertificateForClientAuthentication?: NullableOption<MacOSCertificateProfileBase>;
    // Trusted Root Certificate for Server Validation when EAP Type is configured to EAP-TLS/TTLS/FAST or PEAP.
    rootCertificateForServerValidation?: NullableOption<MacOSTrustedRootCertificate>;
    /**
     * Trusted Root Certificates for Server Validation when EAP Type is configured to EAP-TLS/TTLS/FAST or PEAP. If you
     * provide this value you do not need to provide trustedServerCertificateNames, and vice versa.
     */
    rootCertificatesForServerValidation?: NullableOption<MacOSTrustedRootCertificate[]>;
}
export interface MacOSTrustedRootCertificate extends DeviceConfiguration {
    // File name to display in UI.
    certFileName?: NullableOption<string>;
    // Trusted Root Certificate.
    trustedRootCertificate?: number;
}
export interface MacOSExtensionsConfiguration extends DeviceConfiguration {
    // All kernel extensions validly signed by the team identifiers in this list will be allowed to load.
    kernelExtensionAllowedTeamIdentifiers?: NullableOption<string[]>;
    // If set to true, users can approve additional kernel extensions not explicitly allowed by configurations profiles.
    kernelExtensionOverridesAllowed?: boolean;
    // A list of kernel extensions that will be allowed to load. . This collection can contain a maximum of 500 elements.
    kernelExtensionsAllowed?: NullableOption<MacOSKernelExtension[]>;
    // Gets or sets a list of allowed macOS system extensions. This collection can contain a maximum of 500 elements.
    systemExtensionsAllowed?: NullableOption<MacOSSystemExtension[]>;
    /**
     * Gets or sets a list of allowed team identifiers. Any system extension signed with any of the specified team identifiers
     * will be approved.
     */
    systemExtensionsAllowedTeamIdentifiers?: NullableOption<string[]>;
    // Gets or sets a list of allowed macOS system extension types. This collection can contain a maximum of 500 elements.
    systemExtensionsAllowedTypes?: NullableOption<MacOSSystemExtensionTypeMapping[]>;
    /**
     * Gets or sets whether to allow the user to approve additional system extensions not explicitly allowed by configuration
     * profiles.
     */
    systemExtensionsBlockOverride?: boolean;
}
export interface MacOSGeneralDeviceConfiguration extends DeviceConfiguration {
    // Yes prevents users from adding friends to Game Center. Available for devices running macOS versions 10.13 and later.
    addingGameCenterFriendsBlocked?: boolean;
    // Indicates whether or not to allow AirDrop.
    airDropBlocked?: boolean;
    // Indicates whether or to block users from unlocking their Mac with Apple Watch.
    appleWatchBlockAutoUnlock?: boolean;
    // Indicates whether or not to block the user from accessing the camera of the device.
    cameraBlocked?: boolean;
    /**
     * Indicates whether or not to allow remote screen observation by Classroom app. Requires MDM enrollment via Apple School
     * Manager or Apple Business Manager.
     */
    classroomAppBlockRemoteScreenObservation?: boolean;
    /**
     * Indicates whether or not to automatically give permission to the teacher of a managed course on the Classroom app to
     * view a student's screen without prompting. Requires MDM enrollment via Apple School Manager or Apple Business Manager.
     */
    classroomAppForceUnpromptedScreenObservation?: boolean;
    /**
     * Indicates whether or not to automatically give permission to the teacher's requests, without prompting the student.
     * Requires MDM enrollment via Apple School Manager or Apple Business Manager.
     */
    classroomForceAutomaticallyJoinClasses?: boolean;
    /**
     * Indicates whether a student enrolled in an unmanaged course via Classroom will be required to request permission from
     * the teacher when attempting to leave the course. Requires MDM enrollment via Apple School Manager or Apple Business
     * Manager.
     */
    classroomForceRequestPermissionToLeaveClasses?: boolean;
    /**
     * Indicates whether or not to allow the teacher to lock apps or the device without prompting the student. Requires MDM
     * enrollment via Apple School Manager or Apple Business Manager.
     */
    classroomForceUnpromptedAppAndDeviceLock?: boolean;
    // List that is in the CompliantAppsList. Possible values are: none, appsInListCompliant, appsNotInListCompliant.
    compliantAppListType?: AppListType;
    /**
     * List of apps in the compliance (either allow list or block list, controlled by CompliantAppListType). This collection
     * can contain a maximum of 10000 elements.
     */
    compliantAppsList?: NullableOption<AppListItem[]>;
    // Indicates whether or not to allow content caching.
    contentCachingBlocked?: boolean;
    // Indicates whether or not to block definition lookup.
    definitionLookupBlocked?: boolean;
    // An email address lacking a suffix that matches any of these strings will be considered out-of-domain.
    emailInDomainSuffixes?: NullableOption<string[]>;
    /**
     * Yes disables Game Center, and the Game Center icon is removed from the Home screen. Available for devices running macOS
     * versions 10.13 and later.
     */
    gameCenterBlocked?: boolean;
    /**
     * Indicates whether or not to block the user from continuing work that they started on a MacOS device on another iOS or
     * MacOS device (MacOS 10.15 or later).
     */
    iCloudBlockActivityContinuation?: boolean;
    // Indicates whether or not to block iCloud from syncing contacts.
    iCloudBlockAddressBook?: boolean;
    // Indicates whether or not to block iCloud from syncing bookmarks.
    iCloudBlockBookmarks?: boolean;
    // Indicates whether or not to block iCloud from syncing calendars.
    iCloudBlockCalendar?: boolean;
    // Indicates whether or not to block iCloud document sync.
    iCloudBlockDocumentSync?: boolean;
    // Indicates whether or not to block iCloud from syncing mail.
    iCloudBlockMail?: boolean;
    // Indicates whether or not to block iCloud from syncing notes.
    iCloudBlockNotes?: boolean;
    // Indicates whether or not to block iCloud Photo Library.
    iCloudBlockPhotoLibrary?: boolean;
    // Indicates whether or not to block iCloud from syncing reminders.
    iCloudBlockReminders?: boolean;
    // Indicates whether or not to block files from being transferred using iTunes.
    iTunesBlockFileSharing?: boolean;
    // Indicates whether or not to block Music service and revert Music app to classic mode.
    iTunesBlockMusicService?: boolean;
    // Indicates whether or not to block the user from using dictation input.
    keyboardBlockDictation?: boolean;
    // Indicates whether or not iCloud keychain synchronization is blocked (macOS 10.12 and later).
    keychainBlockCloudSync?: boolean;
    // Yes prevents multiplayer gaming when using Game Center. Available for devices running macOS versions 10.13 and later.
    multiplayerGamingBlocked?: boolean;
    // Indicates whether or not to block sharing passwords with the AirDrop passwords feature.
    passwordBlockAirDropSharing?: boolean;
    // Indicates whether or not to block the AutoFill Passwords feature.
    passwordBlockAutoFill?: boolean;
    // Indicates whether or not to block fingerprint unlock.
    passwordBlockFingerprintUnlock?: boolean;
    // Indicates whether or not to allow passcode modification.
    passwordBlockModification?: boolean;
    // Indicates whether or not to block requesting passwords from nearby devices.
    passwordBlockProximityRequests?: boolean;
    // Block simple passwords.
    passwordBlockSimple?: boolean;
    // Number of days before the password expires.
    passwordExpirationDays?: NullableOption<number>;
    // The number of allowed failed attempts to enter the passcode at the device's lock screen. Valid values 2 to 11
    passwordMaximumAttemptCount?: NullableOption<number>;
    // Number of character sets a password must contain. Valid values 0 to 4
    passwordMinimumCharacterSetCount?: NullableOption<number>;
    // Minimum length of passwords.
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity required before a password is required.
    passwordMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // Minutes of inactivity required before the screen times out.
    passwordMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    // The number of minutes before the login is reset after the maximum number of unsuccessful login attempts is reached.
    passwordMinutesUntilFailedLoginReset?: NullableOption<number>;
    // Number of previous passwords to block.
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Whether or not to require a password.
    passwordRequired?: boolean;
    // Type of password that is required. Possible values are: deviceDefault, alphanumeric, numeric.
    passwordRequiredType?: RequiredPasswordType;
    // List of privacy preference policy controls. This collection can contain a maximum of 10000 elements.
    privacyAccessControls?: NullableOption<MacOSPrivacyAccessControlItem[]>;
    // Indicates whether or not to block the user from using Auto fill in Safari.
    safariBlockAutofill?: boolean;
    // Indicates whether or not to block the user from taking Screenshots.
    screenCaptureBlocked?: boolean;
    // Sets how many days a software update will be delyed for a supervised device. Valid values 0 to 90
    softwareUpdatesEnforcedDelayInDays?: NullableOption<number>;
    // Indicates whether or not to block Spotlight from returning any results from an Internet search.
    spotlightBlockInternetResults?: boolean;
    /**
     * Determines whether to delay OS and/or app updates for macOS. Possible values are: none, delayOSUpdateVisibility,
     * delayAppUpdateVisibility.
     */
    updateDelayPolicy?: NullableOption<MacOSSoftwareUpdateDelayPolicy>;
    // Yes prevents the wallpaper from being changed. Available for devices running macOS versions 10.13 and later.
    wallpaperModificationBlocked?: boolean;
}
export interface MacOSImportedPFXCertificateProfile extends MacOSCertificateProfileBase {
    /**
     * Intended Purpose of the Certificate Profile - which could be Unassigned, SmimeEncryption, SmimeSigning etc. Possible
     * values are: unassigned, smimeEncryption, smimeSigning, vpn, wifi.
     */
    intendedPurpose?: IntendedPurpose;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface MacOSPkcsCertificateProfile extends MacOSCertificateProfileBase {
    // AllowAllAppsAccess setting
    allowAllAppsAccess?: NullableOption<boolean>;
    // Target store certificate. Possible values are: user, machine.
    certificateStore?: NullableOption<CertificateStore>;
    // PKCS certificate template name.
    certificateTemplateName?: string;
    // PKCS certification authority FQDN.
    certificationAuthority?: string;
    // PKCS certification authority Name.
    certificationAuthorityName?: string;
    // Custom Subject Alternative Name Settings. This collection can contain a maximum of 500 elements.
    customSubjectAlternativeNames?: NullableOption<CustomSubjectAlternativeName[]>;
    // Format string that defines the subject alternative name.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Format string that defines the subject name. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface MacOSScepCertificateProfile extends MacOSCertificateProfileBase {
    // AllowAllAppsAccess setting
    allowAllAppsAccess?: NullableOption<boolean>;
    // Target store certificate. Possible values are: user, machine.
    certificateStore?: NullableOption<CertificateStore>;
    // Custom Subject Alternative Name Settings. This collection can contain a maximum of 500 elements.
    customSubjectAlternativeNames?: NullableOption<CustomSubjectAlternativeName[]>;
    // Extended Key Usage (EKU) settings. This collection can contain a maximum of 500 elements.
    extendedKeyUsages?: ExtendedKeyUsage[];
    // SCEP Hash Algorithm. Possible values are: sha1, sha2.
    hashAlgorithm?: NullableOption<HashAlgorithms>;
    // SCEP Key Size. Possible values are: size1024, size2048, size4096.
    keySize?: KeySize;
    // SCEP Key Usage. Possible values are: keyEncipherment, digitalSignature.
    keyUsage?: KeyUsages;
    // SCEP Server Url(s).
    scepServerUrls?: NullableOption<string[]>;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
    // Trusted Root Certificate.
    rootCertificate?: NullableOption<MacOSTrustedRootCertificate>;
}
export interface MacOSSoftwareUpdateCategorySummary extends Entity {
    // The device ID.
    deviceId?: NullableOption<string>;
    // The name of the report
    displayName?: string;
    // Number of failed updates on the device
    failedUpdateCount?: number;
    // Last date time the report for this device was updated.
    lastUpdatedDateTime?: string;
    // Number of successful updates on the device
    successfulUpdateCount?: number;
    // Number of total updates on the device
    totalUpdateCount?: number;
    // Software update type. Possible values are: critical, configurationDataFile, firmware, other.
    updateCategory?: MacOSSoftwareUpdateCategory;
    // The user ID.
    userId?: NullableOption<string>;
    // Summary of the update states.
    updateStateSummaries?: NullableOption<MacOSSoftwareUpdateStateSummary[]>;
}
export interface MacOSSoftwareUpdateStateSummary extends Entity {
    // Human readable name of the software update
    displayName?: string;
    // Last date time the report for this device and product key was updated.
    lastUpdatedDateTime?: string;
    // Product key of the software update.
    productKey?: NullableOption<string>;
    /**
     * State of the software update. Possible values are: success, downloading, downloaded, installing, idle, available,
     * scheduled, downloadFailed, downloadInsufficientSpace, downloadInsufficientPower, downloadInsufficientNetwork,
     * installInsufficientSpace, installInsufficientPower, installFailed, commandFailed.
     */
    state?: MacOSSoftwareUpdateState;
    // Software update category. Possible values are: critical, configurationDataFile, firmware, other.
    updateCategory?: MacOSSoftwareUpdateCategory;
    // Version of the software update
    updateVersion?: NullableOption<string>;
}
export interface MacOSSoftwareUpdateConfiguration extends DeviceConfiguration {
    // Update behavior for all other updates. Possible values are: notConfigured, default.
    allOtherUpdateBehavior?: MacOSSoftwareUpdateBehavior;
    // Update behavior for configuration data file updates. Possible values are: notConfigured, default.
    configDataUpdateBehavior?: MacOSSoftwareUpdateBehavior;
    // Update behavior for critical updates. Possible values are: notConfigured, default.
    criticalUpdateBehavior?: MacOSSoftwareUpdateBehavior;
    // Custom Time windows when updates will be allowed or blocked. This collection can contain a maximum of 20 elements.
    customUpdateTimeWindows?: NullableOption<CustomUpdateTimeWindow[]>;
    // Update behavior for firmware updates. Possible values are: notConfigured, default.
    firmwareUpdateBehavior?: MacOSSoftwareUpdateBehavior;
    // Update schedule type. Possible values are: alwaysUpdate, updateDuringTimeWindows, updateOutsideOfTimeWindows.
    updateScheduleType?: MacOSSoftwareUpdateScheduleType;
    // Minutes indicating UTC offset for each update time window
    updateTimeWindowUtcOffsetInMinutes?: NullableOption<number>;
}
export interface MacOSVpnConfiguration extends AppleVpnConfiguration {
    // Identity certificate for client authentication when authentication method is certificate.
    identityCertificate?: NullableOption<MacOSCertificateProfileBase>;
}
export interface MacOSWiredNetworkConfiguration extends DeviceConfiguration {
    /**
     * Authentication Method when EAP Type is configured to PEAP or EAP-TTLS. Possible values are: certificate,
     * usernameAndPassword, derivedCredential.
     */
    authenticationMethod?: NullableOption<WiFiAuthenticationMethod>;
    /**
     * EAP-FAST Configuration Option when EAP-FAST is the selected EAP Type. Possible values are: noProtectedAccessCredential,
     * useProtectedAccessCredential, useProtectedAccessCredentialAndProvision,
     * useProtectedAccessCredentialAndProvisionAnonymously.
     */
    eapFastConfiguration?: NullableOption<EapFastConfiguration>;
    /**
     * Extensible Authentication Protocol (EAP). Indicates the type of EAP protocol set on the wired network. Possible values
     * are: eapTls, leap, eapSim, eapTtls, peap, eapFast.
     */
    eapType?: EapType;
    /**
     * Enable identity privacy (Outer Identity) when EAP Type is configured to EAP-TTLS, EAP-FAST or PEAP. This property masks
     * usernames with the text you enter. For example, if you use 'anonymous', each user that authenticates with this wired
     * network using their real username is displayed as 'anonymous'.
     */
    enableOuterIdentityPrivacy?: NullableOption<string>;
    /**
     * Network interface. Possible values are: anyEthernet, firstActiveEthernet, secondActiveEthernet, thirdActiveEthernet,
     * firstEthernet, secondEthernet, thirdEthernet.
     */
    networkInterface?: WiredNetworkInterface;
    // Network Name
    networkName?: string;
    /**
     * Non-EAP Method for Authentication (Inner Identity) when EAP Type is EAP-TTLS and Authenticationmethod is Username and
     * Password. Possible values are: unencryptedPassword, challengeHandshakeAuthenticationProtocol, microsoftChap,
     * microsoftChapVersionTwo.
     */
    nonEapAuthenticationMethodForEapTtls?: NullableOption<NonEapAuthenticationMethodForEapTtlsType>;
    /**
     * Trusted server certificate names when EAP Type is configured to EAP-TLS/TTLS/FAST or PEAP. This is the common name used
     * in the certificates issued by your trusted certificate authority (CA). If you provide this information, you can bypass
     * the dynamic trust dialog that is displayed on end users devices when they connect to this wired network.
     */
    trustedServerCertificateNames?: NullableOption<string[]>;
    /**
     * Identity Certificate for client authentication when EAP Type is configured to EAP-TLS, EAP-TTLS (with Certificate
     * Authentication), or PEAP (with Certificate Authentication).
     */
    identityCertificateForClientAuthentication?: NullableOption<MacOSCertificateProfileBase>;
    // Trusted Root Certificate for Server Validation when EAP Type is configured to EAP-TLS/TTLS/FAST or PEAP.
    rootCertificateForServerValidation?: NullableOption<MacOSTrustedRootCertificate>;
}
export interface SharedPCConfiguration extends DeviceConfiguration {
    // Specifies how accounts are managed on a shared PC. Only applies when disableAccountManager is false.
    accountManagerPolicy?: NullableOption<SharedPCAccountManagerPolicy>;
    // Indicates which type of accounts are allowed to use on a shared PC. Possible values are: notConfigured, guest, domain.
    allowedAccounts?: SharedPCAllowedAccountType;
    // Specifies whether local storage is allowed on a shared PC.
    allowLocalStorage?: boolean;
    // Disables the account manager for shared PC mode.
    disableAccountManager?: boolean;
    /**
     * Specifies whether the default shared PC education environment policies should be disabled. For Windows 10 RS2 and
     * later, this policy will be applied without setting Enabled to true.
     */
    disableEduPolicies?: boolean;
    // Specifies whether the default shared PC power policies should be disabled.
    disablePowerPolicies?: boolean;
    // Disables the requirement to sign in whenever the device wakes up from sleep mode.
    disableSignInOnResume?: boolean;
    // Enables shared PC mode and applies the shared pc policies.
    enabled?: boolean;
    /**
     * Specifies whether to auto connect new non-admin Azure AD accounts to pre-configured candidate local accounts. Possible
     * values are: notConfigured, enabled, disabled.
     */
    fastFirstSignIn?: Enablement;
    /**
     * Specifies the time in seconds that a device must sit idle before the PC goes to sleep. Setting this value to 0 prevents
     * the sleep timeout from occurring.
     */
    idleTimeBeforeSleepInSeconds?: NullableOption<number>;
    /**
     * Specifies the display text for the account shown on the sign-in screen which launches the app specified by
     * SetKioskAppUserModelId. Only applies when KioskAppUserModelId is set.
     */
    kioskAppDisplayName?: NullableOption<string>;
    // Specifies the application user model ID of the app to use with assigned access.
    kioskAppUserModelId?: NullableOption<string>;
    // Specifies whether local storage is allowed on a shared PC. Possible values are: notConfigured, enabled, disabled.
    localStorage?: Enablement;
    // Specifies the daily start time of maintenance hour.
    maintenanceStartTime?: NullableOption<string>;
    // Disables the account manager for shared PC mode. Possible values are: notConfigured, enabled, disabled.
    setAccountManager?: Enablement;
    /**
     * Specifies whether the default shared PC education environment policies should be enabled/disabled/not configured. For
     * Windows 10 RS2 and later, this policy will be applied without setting Enabled to true. Possible values are:
     * notConfigured, enabled, disabled.
     */
    setEduPolicies?: Enablement;
    /**
     * Specifies whether the default shared PC power policies should be enabled/disabled. Possible values are: notConfigured,
     * enabled, disabled.
     */
    setPowerPolicies?: Enablement;
    /**
     * Specifies the requirement to sign in whenever the device wakes up from sleep mode. Possible values are: notConfigured,
     * enabled, disabled.
     */
    signInOnResume?: Enablement;
}
export interface UnsupportedDeviceConfiguration extends DeviceConfiguration {
    // Details describing why the entity is unsupported. This collection can contain a maximum of 1000 elements.
    details?: NullableOption<UnsupportedDeviceConfigurationDetail[]>;
    // The type of entity that would be returned otherwise.
    originalEntityTypeName?: NullableOption<string>;
}
export interface WindowsCertificateProfileBase extends DeviceConfiguration {
    // Scale for the Certificate Validity Period. Possible values are: days, months, years.
    certificateValidityPeriodScale?: CertificateValidityPeriodScale;
    // Value for the Certificate Validity Period
    certificateValidityPeriodValue?: number;
    /**
     * Key Storage Provider (KSP). Possible values are: useTpmKspOtherwiseUseSoftwareKsp, useTpmKspOtherwiseFail,
     * usePassportForWorkKspOtherwiseFail, useSoftwareKsp.
     */
    keyStorageProvider?: KeyStorageProviderOption;
    // Certificate renewal threshold percentage. Valid values 1 to 99
    renewalThresholdPercentage?: number;
    /**
     * Certificate Subject Alternative Name Type. Possible values are: none, emailAddress, userPrincipalName,
     * customAzureADAttribute, domainNameService, universalResourceIdentifier.
     */
    subjectAlternativeNameType?: NullableOption<SubjectAlternativeNameType>;
    /**
     * Certificate Subject Name Format. Possible values are: commonName, commonNameIncludingEmail, commonNameAsEmail, custom,
     * commonNameAsIMEI, commonNameAsSerialNumber, commonNameAsAadDeviceId, commonNameAsIntuneDeviceId,
     * commonNameAsDurableDeviceId.
     */
    subjectNameFormat?: SubjectNameFormat;
}
// tslint:disable-next-line: no-empty-interface
export interface Windows10CertificateProfileBase extends WindowsCertificateProfileBase {}
export interface Windows10CompliancePolicy extends DeviceCompliancePolicy {
    // Require active firewall on Windows devices.
    activeFirewallRequired?: boolean;
    /**
     * Require any AntiSpyware solution registered with Windows Decurity Center to be on and monitoring (e.g. Symantec,
     * Windows Defender).
     */
    antiSpywareRequired?: boolean;
    /**
     * Require any Antivirus solution registered with Windows Decurity Center to be on and monitoring (e.g. Symantec, Windows
     * Defender).
     */
    antivirusRequired?: boolean;
    // Require devices to be reported healthy by Windows Device Health Attestation - bit locker is enabled
    bitLockerEnabled?: boolean;
    // Require devices to be reported as healthy by Windows Device Health Attestation.
    codeIntegrityEnabled?: boolean;
    // Require to consider SCCM Compliance state into consideration for Intune Compliance State.
    configurationManagerComplianceRequired?: boolean;
    // Require Windows Defender Antimalware on Windows devices.
    defenderEnabled?: boolean;
    // Require Windows Defender Antimalware minimum version on Windows devices.
    defenderVersion?: NullableOption<string>;
    // Not yet documented
    deviceCompliancePolicyScript?: NullableOption<DeviceCompliancePolicyScript>;
    // Require that devices have enabled device threat protection.
    deviceThreatProtectionEnabled?: boolean;
    /**
     * Require Device Threat Protection minimum risk level to report noncompliance. Possible values are: unavailable, secured,
     * low, medium, high, notSet.
     */
    deviceThreatProtectionRequiredSecurityLevel?: DeviceThreatProtectionLevel;
    /**
     * Require devices to be reported as healthy by Windows Device Health Attestation - early launch antimalware driver is
     * enabled.
     */
    earlyLaunchAntiMalwareDriverEnabled?: boolean;
    // Maximum Windows Phone version.
    mobileOsMaximumVersion?: NullableOption<string>;
    // Minimum Windows Phone version.
    mobileOsMinimumVersion?: NullableOption<string>;
    // Maximum Windows 10 version.
    osMaximumVersion?: NullableOption<string>;
    // Minimum Windows 10 version.
    osMinimumVersion?: NullableOption<string>;
    // Indicates whether or not to block simple password.
    passwordBlockSimple?: boolean;
    // The password expiration in days.
    passwordExpirationDays?: NullableOption<number>;
    // The number of character sets required in the password.
    passwordMinimumCharacterSetCount?: NullableOption<number>;
    // The minimum password length.
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before a password is required.
    passwordMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // The number of previous passwords to prevent re-use of.
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Require a password to unlock Windows device.
    passwordRequired?: boolean;
    // Require a password to unlock an idle device.
    passwordRequiredToUnlockFromIdle?: boolean;
    // The required password type. Possible values are: deviceDefault, alphanumeric, numeric.
    passwordRequiredType?: RequiredPasswordType;
    // Require devices to be reported as healthy by Windows Device Health Attestation.
    requireHealthyDeviceReport?: boolean;
    // Require Windows Defender Antimalware Real-Time Protection on Windows devices.
    rtpEnabled?: boolean;
    // Require devices to be reported as healthy by Windows Device Health Attestation - secure boot is enabled.
    secureBootEnabled?: boolean;
    // Require Windows Defender Antimalware Signature to be up to date on Windows devices.
    signatureOutOfDate?: boolean;
    // Require encryption on windows devices.
    storageRequireEncryption?: boolean;
    // Require Trusted Platform Module(TPM) to be present.
    tpmRequired?: boolean;
    // The valid operating system build ranges on Windows devices. This collection can contain a maximum of 10000 elements.
    validOperatingSystemBuildRanges?: NullableOption<OperatingSystemVersionRange[]>;
}
export interface Windows10CustomConfiguration extends DeviceConfiguration {
    // OMA settings. This collection can contain a maximum of 1000 elements.
    omaSettings?: NullableOption<OmaSetting[]>;
}
export interface Windows10DeviceFirmwareConfigurationInterface extends DeviceConfiguration {
    /**
     * Defines whether a user is allowed to boot from built-in network adapters. Possible values are: notConfigured, enabled,
     * disabled.
     */
    bootFromBuiltInNetworkAdapters?: Enablement;
    // Defines whether a user is allowed to boot from external media. Possible values are: notConfigured, enabled, disabled.
    bootFromExternalMedia?: Enablement;
    // Defines whether built-in cameras are enabled. Possible values are: notConfigured, enabled, disabled.
    cameras?: Enablement;
    // Defines the permission level granted to users to change UEFI settings. Possible values are: notConfiguredOnly, none.
    changeUefiSettingsPermission?: ChangeUefiSettingsPermission;
    // Defines whether built-in microphones or speakers are enabled. Possible values are: notConfigured, enabled, disabled.
    microphonesAndSpeakers?: Enablement;
    /**
     * Defines whether built-in radios e.g. WIFI, NFC, Bluetooth, are enabled. Possible values are: notConfigured, enabled,
     * disabled.
     */
    radios?: Enablement;
    /**
     * Defines whether a user is allowed to enable Simultaneous MultiThreading. Possible values are: notConfigured, enabled,
     * disabled.
     */
    simultaneousMultiThreading?: Enablement;
    // Defines whether CPU and IO virtualization is enabled. Possible values are: notConfigured, enabled, disabled.
    virtualizationOfCpuAndIO?: Enablement;
    /**
     * Defines whether a user is allowed to enable Windows Platform Binary Table. Possible values are: notConfigured, enabled,
     * disabled.
     */
    windowsPlatformBinaryTable?: Enablement;
}
export interface Windows10EasEmailProfileConfiguration extends EasEmailProfileConfigurationBase {
    // Account name.
    accountName?: string;
    // Duration of email to sync. Possible values are: userDefined, oneDay, threeDays, oneWeek, twoWeeks, oneMonth, unlimited.
    durationOfEmailToSync?: EmailSyncDuration;
    /**
     * Email attribute that is picked from AAD and injected into this profile before installing on the device. Possible values
     * are: userPrincipalName, primarySmtpAddress.
     */
    emailAddressSource?: UserEmailSource;
    /**
     * Email sync schedule. Possible values are: userDefined, asMessagesArrive, manual, fifteenMinutes, thirtyMinutes,
     * sixtyMinutes, basedOnMyUsage.
     */
    emailSyncSchedule?: EmailSyncSchedule;
    // Exchange location that (URL) that the native mail app connects to.
    hostName?: string;
    // Indicates whether or not to use SSL.
    requireSsl?: boolean;
    // Whether or not to sync the calendar.
    syncCalendar?: boolean;
    // Whether or not to sync contacts.
    syncContacts?: boolean;
    // Whether or not to sync tasks.
    syncTasks?: boolean;
}
export interface Windows10EndpointProtectionConfiguration extends DeviceConfiguration {
    /**
     * Gets or sets whether applications inside Microsoft Defender Application Guard can access the device’s camera and
     * microphone.
     */
    applicationGuardAllowCameraMicrophoneRedirection?: NullableOption<boolean>;
    // Allow users to download files from Edge in the application guard container and save them on the host file system
    applicationGuardAllowFileSaveOnHost?: boolean;
    // Allow persisting user generated data inside the App Guard Containter (favorites, cookies, web passwords, etc.)
    applicationGuardAllowPersistence?: boolean;
    // Allow printing to Local Printers from Container
    applicationGuardAllowPrintToLocalPrinters?: boolean;
    // Allow printing to Network Printers from Container
    applicationGuardAllowPrintToNetworkPrinters?: boolean;
    // Allow printing to PDF from Container
    applicationGuardAllowPrintToPDF?: boolean;
    // Allow printing to XPS from Container
    applicationGuardAllowPrintToXPS?: boolean;
    // Allow application guard to use virtual GPU
    applicationGuardAllowVirtualGPU?: boolean;
    /**
     * Block clipboard to share data from Host to Container, or from Container to Host, or both ways, or neither ways.
     * Possible values are: notConfigured, blockBoth, blockHostToContainer, blockContainerToHost, blockNone.
     */
    applicationGuardBlockClipboardSharing?: ApplicationGuardBlockClipboardSharingType;
    /**
     * Block clipboard to transfer image file, text file or neither of them. Possible values are: notConfigured,
     * blockImageAndTextFile, blockImageFile, blockNone, blockTextFile.
     */
    applicationGuardBlockFileTransfer?: ApplicationGuardBlockFileTransferType;
    // Block enterprise sites to load non-enterprise content, such as third party plug-ins
    applicationGuardBlockNonEnterpriseContent?: boolean;
    // Allows certain device level Root Certificates to be shared with the Microsoft Defender Application Guard container.
    applicationGuardCertificateThumbprints?: NullableOption<string[]>;
    // Enable Windows Defender Application Guard
    applicationGuardEnabled?: boolean;
    /**
     * Enable Windows Defender Application Guard for newer Windows builds. Possible values are: notConfigured, enabledForEdge,
     * enabledForOffice, enabledForEdgeAndOffice.
     */
    applicationGuardEnabledOptions?: ApplicationGuardEnabledOptions;
    /**
     * Force auditing will persist Windows logs and events to meet security/compliance criteria (sample events are user
     * login-logoff, use of privilege rights, software installation, system changes, etc.)
     */
    applicationGuardForceAuditing?: boolean;
    /**
     * Enables the Admin to choose what types of app to allow on devices. Possible values are: notConfigured,
     * enforceComponentsAndStoreApps, auditComponentsAndStoreApps, enforceComponentsStoreAppsAndSmartlocker,
     * auditComponentsStoreAppsAndSmartlocker.
     */
    appLockerApplicationControl?: AppLockerApplicationControlType;
    // Allows the admin to allow standard users to enable encrpytion during Azure AD Join.
    bitLockerAllowStandardUserEncryption?: boolean;
    // Allows the Admin to disable the warning prompt for other disk encryption on the user machines.
    bitLockerDisableWarningForOtherDiskEncryption?: boolean;
    // Allows the admin to require encryption to be turned on using BitLocker. This policy is valid only for a mobile SKU.
    bitLockerEnableStorageCardEncryptionOnMobile?: boolean;
    // Allows the admin to require encryption to be turned on using BitLocker.
    bitLockerEncryptDevice?: boolean;
    // BitLocker Fixed Drive Policy.
    bitLockerFixedDrivePolicy?: NullableOption<BitLockerFixedDrivePolicy>;
    /**
     * This setting initiates a client-driven recovery password rotation after an OS drive recovery (either by using bootmgr
     * or WinRE). Possible values are: notConfigured, disabled, enabledForAzureAd, enabledForAzureAdAndHybrid.
     */
    bitLockerRecoveryPasswordRotation?: BitLockerRecoveryPasswordRotationType;
    // BitLocker Removable Drive Policy.
    bitLockerRemovableDrivePolicy?: NullableOption<BitLockerRemovableDrivePolicy>;
    // BitLocker System Drive Policy.
    bitLockerSystemDrivePolicy?: NullableOption<BitLockerSystemDrivePolicy>;
    // List of folder paths to be added to the list of protected folders
    defenderAdditionalGuardedFolders?: NullableOption<string[]>;
    /**
     * Value indicating the behavior of Adobe Reader from creating child processes. Possible values are: userDefined, enable,
     * auditMode, warn, notConfigured.
     */
    defenderAdobeReaderLaunchChildProcess?: DefenderProtectionType;
    /**
     * Value indicating use of advanced protection against ransomeware. Possible values are: userDefined, enable, auditMode,
     * warn, notConfigured.
     */
    defenderAdvancedRansomewareProtectionType?: DefenderProtectionType;
    // Allows or disallows Windows Defender Behavior Monitoring functionality.
    defenderAllowBehaviorMonitoring?: NullableOption<boolean>;
    /**
     * To best protect your PC, Windows Defender will send information to Microsoft about any problems it finds. Microsoft
     * will analyze that information, learn more about problems affecting you and other customers, and offer improved
     * solutions.
     */
    defenderAllowCloudProtection?: NullableOption<boolean>;
    /**
     * Allows or disallows user access to the Windows Defender UI. If disallowed, all Windows Defender notifications will also
     * be suppressed.
     */
    defenderAllowEndUserAccess?: NullableOption<boolean>;
    // Allows or disallows Windows Defender Intrusion Prevention functionality.
    defenderAllowIntrusionPreventionSystem?: NullableOption<boolean>;
    // Allows or disallows Windows Defender On Access Protection functionality.
    defenderAllowOnAccessProtection?: NullableOption<boolean>;
    // Allows or disallows Windows Defender Realtime Monitoring functionality.
    defenderAllowRealTimeMonitoring?: NullableOption<boolean>;
    // Allows or disallows scanning of archives.
    defenderAllowScanArchiveFiles?: NullableOption<boolean>;
    // Allows or disallows Windows Defender IOAVP Protection functionality.
    defenderAllowScanDownloads?: NullableOption<boolean>;
    // Allows or disallows a scanning of network files.
    defenderAllowScanNetworkFiles?: NullableOption<boolean>;
    // Allows or disallows a full scan of removable drives. During a quick scan, removable drives may still be scanned.
    defenderAllowScanRemovableDrivesDuringFullScan?: NullableOption<boolean>;
    // Allows or disallows Windows Defender Script Scanning functionality.
    defenderAllowScanScriptsLoadedInInternetExplorer?: NullableOption<boolean>;
    // List of exe files and folders to be excluded from attack surface reduction rules
    defenderAttackSurfaceReductionExcludedPaths?: NullableOption<string[]>;
    /**
     * Allows or disallows user access to the Windows Defender UI. If disallowed, all Windows Defender notifications will also
     * be suppressed.
     */
    defenderBlockEndUserAccess?: NullableOption<boolean>;
    /**
     * Value indicating the behavior of Block persistence through WMI event subscription. Possible values are: userDefined,
     * block, auditMode, warn, disable.
     */
    defenderBlockPersistenceThroughWmiType?: DefenderAttackSurfaceType;
    /**
     * This policy setting allows you to manage whether a check for new virus and spyware definitions will occur before
     * running a scan.
     */
    defenderCheckForSignaturesBeforeRunningScan?: NullableOption<boolean>;
    /**
     * Added in Windows 10, version 1709. This policy setting determines how aggressive Windows Defender Antivirus will be in
     * blocking and scanning suspicious files. Value type is integer. This feature requires the 'Join Microsoft MAPS' setting
     * enabled in order to function. Possible values are: notConfigured, high, highPlus, zeroTolerance.
     */
    defenderCloudBlockLevel?: NullableOption<DefenderCloudBlockLevelType>;
    /**
     * Added in Windows 10, version 1709. This feature allows Windows Defender Antivirus to block a suspicious file for up to
     * 60 seconds, and scan it in the cloud to make sure it's safe. Value type is integer, range is 0 - 50. This feature
     * depends on three other MAPS settings the must all be enabled- 'Configure the 'Block at First Sight' feature; 'Join
     * Microsoft MAPS'; 'Send file samples when further analysis is required'. Valid values 0 to 50
     */
    defenderCloudExtendedTimeoutInSeconds?: NullableOption<number>;
    // Time period (in days) that quarantine items will be stored on the system. Valid values 0 to 90
    defenderDaysBeforeDeletingQuarantinedMalware?: NullableOption<number>;
    // Allows an administrator to specify any valid threat severity levels and the corresponding default action ID to take.
    defenderDetectedMalwareActions?: NullableOption<DefenderDetectedMalwareActions>;
    // Allows or disallows Windows Defender Behavior Monitoring functionality.
    defenderDisableBehaviorMonitoring?: NullableOption<boolean>;
    /**
     * This policy setting allows you to configure catch-up scans for scheduled full scans. A catch-up scan is a scan that is
     * initiated because a regularly scheduled scan was missed. Usually these scheduled scans are missed because the computer
     * was turned off at the scheduled time.
     */
    defenderDisableCatchupFullScan?: NullableOption<boolean>;
    /**
     * This policy setting allows you to configure catch-up scans for scheduled quick scans. A catch-up scan is a scan that is
     * initiated because a regularly scheduled scan was missed. Usually these scheduled scans are missed because the computer
     * was turned off at the scheduled time.
     */
    defenderDisableCatchupQuickScan?: NullableOption<boolean>;
    /**
     * To best protect your PC, Windows Defender will send information to Microsoft about any problems it finds. Microsoft
     * will analyze that information, learn more about problems affecting you and other customers, and offer improved
     * solutions.
     */
    defenderDisableCloudProtection?: NullableOption<boolean>;
    // Allows or disallows Windows Defender Intrusion Prevention functionality.
    defenderDisableIntrusionPreventionSystem?: NullableOption<boolean>;
    // Allows or disallows Windows Defender On Access Protection functionality.
    defenderDisableOnAccessProtection?: NullableOption<boolean>;
    // Allows or disallows Windows Defender Realtime Monitoring functionality.
    defenderDisableRealTimeMonitoring?: NullableOption<boolean>;
    // Allows or disallows scanning of archives.
    defenderDisableScanArchiveFiles?: NullableOption<boolean>;
    // Allows or disallows Windows Defender IOAVP Protection functionality.
    defenderDisableScanDownloads?: NullableOption<boolean>;
    // Allows or disallows a scanning of network files.
    defenderDisableScanNetworkFiles?: NullableOption<boolean>;
    // Allows or disallows a full scan of removable drives. During a quick scan, removable drives may still be scanned.
    defenderDisableScanRemovableDrivesDuringFullScan?: NullableOption<boolean>;
    // Allows or disallows Windows Defender Script Scanning functionality.
    defenderDisableScanScriptsLoadedInInternetExplorer?: NullableOption<boolean>;
    /**
     * Value indicating if execution of executable content (exe, dll, ps, js, vbs, etc) should be dropped from email
     * (webmail/mail-client). Possible values are: userDefined, enable, auditMode, warn, notConfigured.
     */
    defenderEmailContentExecution?: DefenderProtectionType;
    /**
     * Value indicating if execution of executable content (exe, dll, ps, js, vbs, etc) should be dropped from email
     * (webmail/mail-client). Possible values are: userDefined, block, auditMode, warn, disable.
     */
    defenderEmailContentExecutionType?: DefenderAttackSurfaceType;
    // This policy setting allows you to enable or disable low CPU priority for scheduled scans.
    defenderEnableLowCpuPriority?: NullableOption<boolean>;
    // Allows or disallows scanning of email.
    defenderEnableScanIncomingMail?: NullableOption<boolean>;
    // Allows or disallows a full scan of mapped network drives.
    defenderEnableScanMappedNetworkDrivesDuringFullScan?: NullableOption<boolean>;
    // Xml content containing information regarding exploit protection details.
    defenderExploitProtectionXml?: NullableOption<number>;
    // Name of the file from which DefenderExploitProtectionXml was obtained.
    defenderExploitProtectionXmlFileName?: NullableOption<string>;
    // File extensions to exclude from scans and real time protection.
    defenderFileExtensionsToExclude?: NullableOption<string[]>;
    // Files and folder to exclude from scans and real time protection.
    defenderFilesAndFoldersToExclude?: NullableOption<string[]>;
    // List of paths to exe that are allowed to access protected folders
    defenderGuardedFoldersAllowedAppPaths?: NullableOption<string[]>;
    /**
     * Value indicating the behavior of protected folders. Possible values are: userDefined, enable, auditMode,
     * blockDiskModification, auditDiskModification.
     */
    defenderGuardMyFoldersType?: FolderProtectionType;
    /**
     * Value indicating the behavior of NetworkProtection. Possible values are: userDefined, enable, auditMode, warn,
     * notConfigured.
     */
    defenderNetworkProtectionType?: DefenderProtectionType;
    /**
     * Value indicating the behavior of Office applications/macros creating or launching executable content. Possible values
     * are: userDefined, enable, auditMode, warn, notConfigured.
     */
    defenderOfficeAppsExecutableContentCreationOrLaunch?: DefenderProtectionType;
    /**
     * Value indicating the behavior of Office applications/macros creating or launching executable content. Possible values
     * are: userDefined, block, auditMode, warn, disable.
     */
    defenderOfficeAppsExecutableContentCreationOrLaunchType?: DefenderAttackSurfaceType;
    /**
     * Value indicating the behavior of Office application launching child processes. Possible values are: userDefined,
     * enable, auditMode, warn, notConfigured.
     */
    defenderOfficeAppsLaunchChildProcess?: DefenderProtectionType;
    /**
     * Value indicating the behavior of Office application launching child processes. Possible values are: userDefined, block,
     * auditMode, warn, disable.
     */
    defenderOfficeAppsLaunchChildProcessType?: DefenderAttackSurfaceType;
    /**
     * Value indicating the behavior of Office applications injecting into other processes. Possible values are: userDefined,
     * enable, auditMode, warn, notConfigured.
     */
    defenderOfficeAppsOtherProcessInjection?: DefenderProtectionType;
    /**
     * Value indicating the behavior of Office applications injecting into other processes. Possible values are: userDefined,
     * block, auditMode, warn, disable.
     */
    defenderOfficeAppsOtherProcessInjectionType?: DefenderAttackSurfaceType;
    /**
     * Value indicating the behavior of Office communication applications, including Microsoft Outlook, from creating child
     * processes. Possible values are: userDefined, enable, auditMode, warn, notConfigured.
     */
    defenderOfficeCommunicationAppsLaunchChildProcess?: DefenderProtectionType;
    /**
     * Value indicating the behavior of Win32 imports from Macro code in Office. Possible values are: userDefined, enable,
     * auditMode, warn, notConfigured.
     */
    defenderOfficeMacroCodeAllowWin32Imports?: DefenderProtectionType;
    /**
     * Value indicating the behavior of Win32 imports from Macro code in Office. Possible values are: userDefined, block,
     * auditMode, warn, disable.
     */
    defenderOfficeMacroCodeAllowWin32ImportsType?: DefenderAttackSurfaceType;
    /**
     * Added in Windows 10, version 1607. Specifies the level of detection for potentially unwanted applications (PUAs).
     * Windows Defender alerts you when potentially unwanted software is being downloaded or attempts to install itself on
     * your computer. Possible values are: userDefined, enable, auditMode, warn, notConfigured.
     */
    defenderPotentiallyUnwantedAppAction?: NullableOption<DefenderProtectionType>;
    /**
     * Value indicating if credential stealing from the Windows local security authority subsystem is permitted. Possible
     * values are: userDefined, enable, auditMode, warn, notConfigured.
     */
    defenderPreventCredentialStealingType?: DefenderProtectionType;
    /**
     * Value indicating response to process creations originating from PSExec and WMI commands. Possible values are:
     * userDefined, enable, auditMode, warn, notConfigured.
     */
    defenderProcessCreation?: DefenderProtectionType;
    /**
     * Value indicating response to process creations originating from PSExec and WMI commands. Possible values are:
     * userDefined, block, auditMode, warn, disable.
     */
    defenderProcessCreationType?: DefenderAttackSurfaceType;
    // Processes to exclude from scans and real time protection.
    defenderProcessesToExclude?: NullableOption<string[]>;
    /**
     * Controls which sets of files should be monitored. Possible values are: monitorAllFiles, monitorIncomingFilesOnly,
     * monitorOutgoingFilesOnly.
     */
    defenderScanDirection?: NullableOption<DefenderRealtimeScanDirection>;
    /**
     * Represents the average CPU load factor for the Windows Defender scan (in percent). The default value is 50. Valid
     * values 0 to 100
     */
    defenderScanMaxCpuPercentage?: NullableOption<number>;
    // Selects whether to perform a quick scan or full scan. Possible values are: userDefined, disabled, quick, full.
    defenderScanType?: NullableOption<DefenderScanType>;
    /**
     * Selects the time of day that the Windows Defender quick scan should run. For example, a value of 0=12:00AM, a value of
     * 60=1:00AM, a value of 120=2:00, and so on, up to a value of 1380=11:00PM. The default value is 120
     */
    defenderScheduledQuickScanTime?: NullableOption<string>;
    /**
     * Selects the day that the Windows Defender scan should run. Possible values are: userDefined, everyday, sunday, monday,
     * tuesday, wednesday, thursday, friday, saturday, noScheduledScan.
     */
    defenderScheduledScanDay?: NullableOption<WeeklySchedule>;
    // Selects the time of day that the Windows Defender scan should run.
    defenderScheduledScanTime?: NullableOption<string>;
    /**
     * Value indicating the behavior of js/vbs executing payload downloaded from Internet. Possible values are: userDefined,
     * enable, auditMode, warn, notConfigured.
     */
    defenderScriptDownloadedPayloadExecution?: DefenderProtectionType;
    /**
     * Value indicating the behavior of js/vbs executing payload downloaded from Internet. Possible values are: userDefined,
     * block, auditMode, warn, disable.
     */
    defenderScriptDownloadedPayloadExecutionType?: DefenderAttackSurfaceType;
    /**
     * Value indicating the behavior of obfuscated js/vbs/ps/macro code. Possible values are: userDefined, enable, auditMode,
     * warn, notConfigured.
     */
    defenderScriptObfuscatedMacroCode?: DefenderProtectionType;
    /**
     * Value indicating the behavior of obfuscated js/vbs/ps/macro code. Possible values are: userDefined, block, auditMode,
     * warn, disable.
     */
    defenderScriptObfuscatedMacroCodeType?: DefenderAttackSurfaceType;
    // Indicates whether or not to block user from overriding Exploit Protection settings.
    defenderSecurityCenterBlockExploitProtectionOverride?: boolean;
    // Used to disable the display of the account protection area.
    defenderSecurityCenterDisableAccountUI?: NullableOption<boolean>;
    // Used to disable the display of the app and browser protection area.
    defenderSecurityCenterDisableAppBrowserUI?: NullableOption<boolean>;
    // Used to disable the display of the Clear TPM button.
    defenderSecurityCenterDisableClearTpmUI?: NullableOption<boolean>;
    // Used to disable the display of the family options area.
    defenderSecurityCenterDisableFamilyUI?: NullableOption<boolean>;
    // Used to disable the display of the hardware protection area.
    defenderSecurityCenterDisableHardwareUI?: NullableOption<boolean>;
    // Used to disable the display of the device performance and health area.
    defenderSecurityCenterDisableHealthUI?: NullableOption<boolean>;
    // Used to disable the display of the firewall and network protection area.
    defenderSecurityCenterDisableNetworkUI?: NullableOption<boolean>;
    /**
     * Used to disable the display of the notification area control. The user needs to either sign out and sign in or reboot
     * the computer for this setting to take effect.
     */
    defenderSecurityCenterDisableNotificationAreaUI?: NullableOption<boolean>;
    // Used to disable the display of the ransomware protection area.
    defenderSecurityCenterDisableRansomwareUI?: NullableOption<boolean>;
    // Used to disable the display of the secure boot area under Device security.
    defenderSecurityCenterDisableSecureBootUI?: NullableOption<boolean>;
    // Used to disable the display of the security process troubleshooting under Device security.
    defenderSecurityCenterDisableTroubleshootingUI?: NullableOption<boolean>;
    // Used to disable the display of the virus and threat protection area.
    defenderSecurityCenterDisableVirusUI?: NullableOption<boolean>;
    // Used to disable the display of update TPM Firmware when a vulnerable firmware is detected.
    defenderSecurityCenterDisableVulnerableTpmFirmwareUpdateUI?: NullableOption<boolean>;
    // The email address that is displayed to users.
    defenderSecurityCenterHelpEmail?: NullableOption<string>;
    // The phone number or Skype ID that is displayed to users.
    defenderSecurityCenterHelpPhone?: NullableOption<string>;
    // The help portal URL this is displayed to users.
    defenderSecurityCenterHelpURL?: NullableOption<string>;
    /**
     * Configure where to display IT contact information to end users. Possible values are: notConfigured,
     * displayInAppAndInNotifications, displayOnlyInApp, displayOnlyInNotifications.
     */
    defenderSecurityCenterITContactDisplay?: DefenderSecurityCenterITContactDisplayType;
    /**
     * Notifications to show from the displayed areas of app. Possible values are: notConfigured,
     * blockNoncriticalNotifications, blockAllNotifications.
     */
    defenderSecurityCenterNotificationsFromApp?: DefenderSecurityCenterNotificationsFromAppType;
    // The company name that is displayed to the users.
    defenderSecurityCenterOrganizationDisplayName?: NullableOption<string>;
    /**
     * Specifies the interval (in hours) that will be used to check for signatures, so instead of using the ScheduleDay and
     * ScheduleTime the check for new signatures will be set according to the interval. Valid values 0 to 24
     */
    defenderSignatureUpdateIntervalInHours?: NullableOption<number>;
    /**
     * Checks for the user consent level in Windows Defender to send data. Possible values are: sendSafeSamplesAutomatically,
     * alwaysPrompt, neverSend, sendAllSamplesAutomatically.
     */
    defenderSubmitSamplesConsentType?: NullableOption<DefenderSubmitSamplesConsentType>;
    /**
     * Value indicating response to executables that don't meet a prevalence, age, or trusted list criteria. Possible values
     * are: userDefined, enable, auditMode, warn, notConfigured.
     */
    defenderUntrustedExecutable?: DefenderProtectionType;
    /**
     * Value indicating response to executables that don't meet a prevalence, age, or trusted list criteria. Possible values
     * are: userDefined, block, auditMode, warn, disable.
     */
    defenderUntrustedExecutableType?: DefenderAttackSurfaceType;
    /**
     * Value indicating response to untrusted and unsigned processes that run from USB. Possible values are: userDefined,
     * enable, auditMode, warn, notConfigured.
     */
    defenderUntrustedUSBProcess?: DefenderProtectionType;
    /**
     * Value indicating response to untrusted and unsigned processes that run from USB. Possible values are: userDefined,
     * block, auditMode, warn, disable.
     */
    defenderUntrustedUSBProcessType?: DefenderAttackSurfaceType;
    /**
     * This property will be deprecated in May 2019 and will be replaced with property DeviceGuardSecureBootWithDMA. Specifies
     * whether Platform Security Level is enabled at next reboot.
     */
    deviceGuardEnableSecureBootWithDMA?: boolean;
    // Turns On Virtualization Based Security(VBS).
    deviceGuardEnableVirtualizationBasedSecurity?: boolean;
    // Allows the IT admin to configure the launch of System Guard. Possible values are: notConfigured, enabled, disabled.
    deviceGuardLaunchSystemGuard?: Enablement;
    /**
     * Turn on Credential Guard when Platform Security Level with Secure Boot and Virtualization Based Security are both
     * enabled. Possible values are: notConfigured, enableWithUEFILock, enableWithoutUEFILock, disable.
     */
    deviceGuardLocalSystemAuthorityCredentialGuardSettings?: DeviceGuardLocalSystemAuthorityCredentialGuardType;
    /**
     * Specifies whether Platform Security Level is enabled at next reboot. Possible values are: notConfigured, withoutDMA,
     * withDMA.
     */
    deviceGuardSecureBootWithDMA?: SecureBootWithDMAType;
    /**
     * This policy is intended to provide additional security against external DMA capable devices. It allows for more control
     * over the enumeration of external DMA capable devices incompatible with DMA Remapping/device memory isolation and
     * sandboxing. This policy only takes effect when Kernel DMA Protection is supported and enabled by the system firmware.
     * Kernel DMA Protection is a platform feature that cannot be controlled via policy or by end user. It has to be supported
     * by the system at the time of manufacturing. To check if the system supports Kernel DMA Protection, please check the
     * Kernel DMA Protection field in the Summary page of MSINFO32.exe.
     */
    dmaGuardDeviceEnumerationPolicy?: DmaGuardDeviceEnumerationPolicyType;
    // Blocks stateful FTP connections to the device
    firewallBlockStatefulFTP?: NullableOption<boolean>;
    /**
     * Specify how the certificate revocation list is to be enforced. Possible values are: deviceDefault, none, attempt,
     * require.
     */
    firewallCertificateRevocationListCheckMethod?: FirewallCertificateRevocationListCheckMethodType;
    /**
     * Configures the idle timeout for security associations, in seconds, from 300 to 3600 inclusive. This is the period after
     * which security associations will expire and be deleted. Valid values 300 to 3600
     */
    firewallIdleTimeoutForSecurityAssociationInSeconds?: NullableOption<number>;
    // Configures IPSec exemptions to allow both IPv4 and IPv6 DHCP traffic
    firewallIPSecExemptionsAllowDHCP?: boolean;
    // Configures IPSec exemptions to allow ICMP
    firewallIPSecExemptionsAllowICMP?: boolean;
    // Configures IPSec exemptions to allow neighbor discovery IPv6 ICMP type-codes
    firewallIPSecExemptionsAllowNeighborDiscovery?: boolean;
    // Configures IPSec exemptions to allow router discovery IPv6 ICMP type-codes
    firewallIPSecExemptionsAllowRouterDiscovery?: boolean;
    // Configures IPSec exemptions to no exemptions
    firewallIPSecExemptionsNone?: boolean;
    /**
     * If an authentication set is not fully supported by a keying module, direct the module to ignore only unsupported
     * authentication suites rather than the entire set
     */
    firewallMergeKeyingModuleSettings?: NullableOption<boolean>;
    /**
     * Configures how packet queueing should be applied in the tunnel gateway scenario. Possible values are: deviceDefault,
     * disabled, queueInbound, queueOutbound, queueBoth.
     */
    firewallPacketQueueingMethod?: FirewallPacketQueueingMethodType;
    // Select the preshared key encoding to be used. Possible values are: deviceDefault, none, utF8.
    firewallPreSharedKeyEncodingMethod?: FirewallPreSharedKeyEncodingMethodType;
    // Configures the firewall profile settings for domain networks
    firewallProfileDomain?: NullableOption<WindowsFirewallNetworkProfile>;
    // Configures the firewall profile settings for private networks
    firewallProfilePrivate?: NullableOption<WindowsFirewallNetworkProfile>;
    // Configures the firewall profile settings for public networks
    firewallProfilePublic?: NullableOption<WindowsFirewallNetworkProfile>;
    // Configures the firewall rule settings. This collection can contain a maximum of 150 elements.
    firewallRules?: NullableOption<WindowsFirewallRule[]>;
    /**
     * This security setting determines which challenge/response authentication protocol is used for network logons. Possible
     * values are: lmAndNltm, lmNtlmAndNtlmV2, lmAndNtlmOnly, lmAndNtlmV2, lmNtlmV2AndNotLm, lmNtlmV2AndNotLmOrNtm.
     */
    lanManagerAuthenticationLevel?: LanManagerAuthenticationLevel;
    /**
     * If enabled,the SMB client will allow insecure guest logons. If not configured, the SMB client will reject insecure
     * guest logons.
     */
    lanManagerWorkstationDisableInsecureGuestLogons?: boolean;
    // Define a different account name to be associated with the security identifier (SID) for the account 'Administrator'.
    localSecurityOptionsAdministratorAccountName?: NullableOption<string>;
    /**
     * Define the behavior of the elevation prompt for admins in Admin Approval Mode. Possible values are: notConfigured,
     * elevateWithoutPrompting, promptForCredentialsOnTheSecureDesktop, promptForConsentOnTheSecureDesktop,
     * promptForCredentials, promptForConsent, promptForConsentForNonWindowsBinaries.
     */
    localSecurityOptionsAdministratorElevationPromptBehavior?: LocalSecurityOptionsAdministratorElevationPromptBehaviorType;
    /**
     * This security setting determines whether to allows anonymous users to perform certain activities, such as enumerating
     * the names of domain accounts and network shares.
     */
    localSecurityOptionsAllowAnonymousEnumerationOfSAMAccountsAndShares?: boolean;
    // Block PKU2U authentication requests to this device to use online identities.
    localSecurityOptionsAllowPKU2UAuthenticationRequests?: boolean;
    /**
     * Edit the default Security Descriptor Definition Language string to allow or deny users and groups to make remote calls
     * to the SAM.
     */
    localSecurityOptionsAllowRemoteCallsToSecurityAccountsManager?: NullableOption<string>;
    // UI helper boolean for LocalSecurityOptionsAllowRemoteCallsToSecurityAccountsManager entity
    localSecurityOptionsAllowRemoteCallsToSecurityAccountsManagerHelperBool?: boolean;
    // This security setting determines whether a computer can be shut down without having to log on to Windows.
    localSecurityOptionsAllowSystemToBeShutDownWithoutHavingToLogOn?: boolean;
    // Allow UIAccess apps to prompt for elevation without using the secure desktop.
    localSecurityOptionsAllowUIAccessApplicationElevation?: boolean;
    // Allow UIAccess apps to prompt for elevation without using the secure desktop.Default is enabled
    localSecurityOptionsAllowUIAccessApplicationsForSecureLocations?: boolean;
    // Prevent a portable computer from being undocked without having to log in.
    localSecurityOptionsAllowUndockWithoutHavingToLogon?: boolean;
    // Prevent users from adding new Microsoft accounts to this computer.
    localSecurityOptionsBlockMicrosoftAccounts?: boolean;
    /**
     * Enable Local accounts that are not password protected to log on from locations other than the physical device.Default
     * is enabled
     */
    localSecurityOptionsBlockRemoteLogonWithBlankPassword?: boolean;
    // Enabling this settings allows only interactively logged on user to access CD-ROM media.
    localSecurityOptionsBlockRemoteOpticalDriveAccess?: boolean;
    // Restrict installing printer drivers as part of connecting to a shared printer to admins only.
    localSecurityOptionsBlockUsersInstallingPrinterDrivers?: boolean;
    // This security setting determines whether the virtual memory pagefile is cleared when the system is shut down.
    localSecurityOptionsClearVirtualMemoryPageFile?: boolean;
    // This security setting determines whether packet signing is required by the SMB client component.
    localSecurityOptionsClientDigitallySignCommunicationsAlways?: boolean;
    /**
     * If this security setting is enabled, the Server Message Block (SMB) redirector is allowed to send plaintext passwords
     * to non-Microsoft SMB servers that do not support password encryption during authentication.
     */
    localSecurityOptionsClientSendUnencryptedPasswordToThirdPartySMBServers?: boolean;
    // App installations requiring elevated privileges will prompt for admin credentials.Default is enabled
    localSecurityOptionsDetectApplicationInstallationsAndPromptForElevation?: boolean;
    // Determines whether the Local Administrator account is enabled or disabled.
    localSecurityOptionsDisableAdministratorAccount?: boolean;
    // This security setting determines whether the SMB client attempts to negotiate SMB packet signing.
    localSecurityOptionsDisableClientDigitallySignCommunicationsIfServerAgrees?: boolean;
    // Determines if the Guest account is enabled or disabled.
    localSecurityOptionsDisableGuestAccount?: boolean;
    // This security setting determines whether packet signing is required by the SMB server component.
    localSecurityOptionsDisableServerDigitallySignCommunicationsAlways?: boolean;
    // This security setting determines whether the SMB server will negotiate SMB packet signing with clients that request it.
    localSecurityOptionsDisableServerDigitallySignCommunicationsIfClientAgrees?: boolean;
    // This security setting determines what additional permissions will be granted for anonymous connections to the computer.
    localSecurityOptionsDoNotAllowAnonymousEnumerationOfSAMAccounts?: boolean;
    // Require CTRL+ALT+DEL to be pressed before a user can log on.
    localSecurityOptionsDoNotRequireCtrlAltDel?: boolean;
    /**
     * This security setting determines if, at the next password change, the LAN Manager (LM) hash value for the new password
     * is stored. It’s not stored by default.
     */
    localSecurityOptionsDoNotStoreLANManagerHashValueOnNextPasswordChange?: boolean;
    /**
     * Define who is allowed to format and eject removable NTFS media. Possible values are: notConfigured, administrators,
     * administratorsAndPowerUsers, administratorsAndInteractiveUsers.
     */
    localSecurityOptionsFormatAndEjectOfRemovableMediaAllowedUser?: LocalSecurityOptionsFormatAndEjectOfRemovableMediaAllowedUserType;
    // Define a different account name to be associated with the security identifier (SID) for the account 'Guest'.
    localSecurityOptionsGuestAccountName?: NullableOption<string>;
    // Do not display the username of the last person who signed in on this device.
    localSecurityOptionsHideLastSignedInUser?: boolean;
    /**
     * Do not display the username of the person signing in to this device after credentials are entered and before the
     * device’s desktop is shown.
     */
    localSecurityOptionsHideUsernameAtSignIn?: boolean;
    /**
     * Configure the user information that is displayed when the session is locked. If not configured, user display name,
     * domain and username are shown. Possible values are: notConfigured, administrators, administratorsAndPowerUsers,
     * administratorsAndInteractiveUsers.
     */
    localSecurityOptionsInformationDisplayedOnLockScreen?: LocalSecurityOptionsInformationDisplayedOnLockScreenType;
    /**
     * Configure the user information that is displayed when the session is locked. If not configured, user display name,
     * domain and username are shown. Possible values are: notConfigured, userDisplayNameDomainUser, userDisplayNameOnly,
     * doNotDisplayUser.
     */
    localSecurityOptionsInformationShownOnLockScreen?: LocalSecurityOptionsInformationShownOnLockScreenType;
    // Set message text for users attempting to log in.
    localSecurityOptionsLogOnMessageText?: NullableOption<string>;
    // Set message title for users attempting to log in.
    localSecurityOptionsLogOnMessageTitle?: NullableOption<string>;
    /**
     * Define maximum minutes of inactivity on the interactive desktop’s login screen until the screen saver runs. Valid
     * values 0 to 9999
     */
    localSecurityOptionsMachineInactivityLimit?: NullableOption<number>;
    /**
     * Define maximum minutes of inactivity on the interactive desktop’s login screen until the screen saver runs. Valid
     * values 0 to 9999
     */
    localSecurityOptionsMachineInactivityLimitInMinutes?: NullableOption<number>;
    /**
     * This security setting allows a client to require the negotiation of 128-bit encryption and/or NTLMv2 session security.
     * Possible values are: none, requireNtmlV2SessionSecurity, require128BitEncryption, ntlmV2And128BitEncryption.
     */
    localSecurityOptionsMinimumSessionSecurityForNtlmSspBasedClients?: LocalSecurityOptionsMinimumSessionSecurity;
    /**
     * This security setting allows a server to require the negotiation of 128-bit encryption and/or NTLMv2 session security.
     * Possible values are: none, requireNtmlV2SessionSecurity, require128BitEncryption, ntlmV2And128BitEncryption.
     */
    localSecurityOptionsMinimumSessionSecurityForNtlmSspBasedServers?: LocalSecurityOptionsMinimumSessionSecurity;
    // Enforce PKI certification path validation for a given executable file before it is permitted to run.
    localSecurityOptionsOnlyElevateSignedExecutables?: boolean;
    /**
     * By default, this security setting restricts anonymous access to shares and pipes to the settings for named pipes that
     * can be accessed anonymously and Shares that can be accessed anonymously
     */
    localSecurityOptionsRestrictAnonymousAccessToNamedPipesAndShares?: boolean;
    /**
     * This security setting determines what happens when the smart card for a logged-on user is removed from the smart card
     * reader. Possible values are: lockWorkstation, noAction, forceLogoff, disconnectRemoteDesktopSession.
     */
    localSecurityOptionsSmartCardRemovalBehavior?: LocalSecurityOptionsSmartCardRemovalBehaviorType;
    /**
     * Define the behavior of the elevation prompt for standard users. Possible values are: notConfigured,
     * automaticallyDenyElevationRequests, promptForCredentialsOnTheSecureDesktop, promptForCredentials.
     */
    localSecurityOptionsStandardUserElevationPromptBehavior?: LocalSecurityOptionsStandardUserElevationPromptBehaviorType;
    /**
     * Enable all elevation requests to go to the interactive user's desktop rather than the secure desktop. Prompt behavior
     * policy settings for admins and standard users are used.
     */
    localSecurityOptionsSwitchToSecureDesktopWhenPromptingForElevation?: boolean;
    /**
     * Defines whether the built-in admin account uses Admin Approval Mode or runs all apps with full admin privileges.Default
     * is enabled
     */
    localSecurityOptionsUseAdminApprovalMode?: boolean;
    // Define whether Admin Approval Mode and all UAC policy settings are enabled, default is enabled
    localSecurityOptionsUseAdminApprovalModeForAdministrators?: boolean;
    // Virtualize file and registry write failures to per user locations
    localSecurityOptionsVirtualizeFileAndRegistryWriteFailuresToPerUserLocations?: boolean;
    // Allows IT Admins to control whether users can can ignore SmartScreen warnings and run malicious files.
    smartScreenBlockOverrideForFiles?: boolean;
    // Allows IT Admins to configure SmartScreen for Windows.
    smartScreenEnableInShell?: boolean;
    /**
     * This user right is used by Credential Manager during Backup/Restore. Users' saved credentials might be compromised if
     * this privilege is given to other entities. Only states NotConfigured and Allowed are supported
     */
    userRightsAccessCredentialManagerAsTrustedCaller?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right allows a process to impersonate any user without authentication. The process can therefore gain access
     * to the same local resources as that user. Only states NotConfigured and Allowed are supported
     */
    userRightsActAsPartOfTheOperatingSystem?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users and groups are allowed to connect to the computer over the network. State
     * Allowed is supported.
     */
    userRightsAllowAccessFromNetwork?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users can bypass file, directory, registry, and other persistent objects permissions
     * when backing up files and directories. Only states NotConfigured and Allowed are supported
     */
    userRightsBackupData?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users and groups are block from connecting to the computer over the network. State
     * Block is supported.
     */
    userRightsBlockAccessFromNetwork?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users and groups can change the time and date on the internal clock of the computer.
     * Only states NotConfigured and Allowed are supported
     */
    userRightsChangeSystemTime?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This security setting determines whether users can create global objects that are available to all sessions. Users who
     * can create global objects could affect processes that run under other users' sessions, which could lead to application
     * failure or data corruption. Only states NotConfigured and Allowed are supported
     */
    userRightsCreateGlobalObjects?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users and groups can call an internal API to create and change the size of a page
     * file. Only states NotConfigured and Allowed are supported
     */
    userRightsCreatePageFile?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which accounts can be used by processes to create a directory object using the object
     * manager. Only states NotConfigured and Allowed are supported
     */
    userRightsCreatePermanentSharedObjects?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines if the user can create a symbolic link from the computer to which they are logged on. Only
     * states NotConfigured and Allowed are supported
     */
    userRightsCreateSymbolicLinks?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users/groups can be used by processes to create a token that can then be used to get
     * access to any local resources when the process uses an internal API to create an access token. Only states
     * NotConfigured and Allowed are supported
     */
    userRightsCreateToken?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users can attach a debugger to any process or to the kernel. Only states NotConfigured
     * and Allowed are supported
     */
    userRightsDebugPrograms?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users can set the Trusted for Delegation setting on a user or computer object. Only
     * states NotConfigured and Allowed are supported.
     */
    userRightsDelegation?: NullableOption<DeviceManagementUserRightsSetting>;
    // This user right determines which users cannot log on to the computer. States NotConfigured, Blocked are supported
    userRightsDenyLocalLogOn?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which accounts can be used by a process to add entries to the security log. The security log
     * is used to trace unauthorized system access. Only states NotConfigured and Allowed are supported.
     */
    userRightsGenerateSecurityAudits?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * Assigning this user right to a user allows programs running on behalf of that user to impersonate a client. Requiring
     * this user right for this kind of impersonation prevents an unauthorized user from convincing a client to connect to a
     * service that they have created and then impersonating that client, which can elevate the unauthorized user's
     * permissions to administrative or system levels. Only states NotConfigured and Allowed are supported.
     */
    userRightsImpersonateClient?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which accounts can use a process with Write Property access to another process to increase
     * the execution priority assigned to the other process. Only states NotConfigured and Allowed are supported.
     */
    userRightsIncreaseSchedulingPriority?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users can dynamically load and unload device drivers or other code in to kernel mode.
     * Only states NotConfigured and Allowed are supported.
     */
    userRightsLoadUnloadDrivers?: NullableOption<DeviceManagementUserRightsSetting>;
    // This user right determines which users can log on to the computer. States NotConfigured, Allowed are supported
    userRightsLocalLogOn?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which accounts can use a process to keep data in physical memory, which prevents the system
     * from paging the data to virtual memory on disk. Only states NotConfigured and Allowed are supported.
     */
    userRightsLockMemory?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users can specify object access auditing options for individual resources, such as
     * files, Active Directory objects, and registry keys. Only states NotConfigured and Allowed are supported.
     */
    userRightsManageAuditingAndSecurityLogs?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users and groups can run maintenance tasks on a volume, such as remote
     * defragmentation. Only states NotConfigured and Allowed are supported.
     */
    userRightsManageVolumes?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines who can modify firmware environment values. Only states NotConfigured and Allowed are
     * supported.
     */
    userRightsModifyFirmwareEnvironment?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which user accounts can modify the integrity label of objects, such as files, registry keys,
     * or processes owned by other users. Only states NotConfigured and Allowed are supported.
     */
    userRightsModifyObjectLabels?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users can use performance monitoring tools to monitor the performance of system
     * processes. Only states NotConfigured and Allowed are supported.
     */
    userRightsProfileSingleProcess?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users and groups are prohibited from logging on as a Remote Desktop Services client.
     * Only states NotConfigured and Blocked are supported
     */
    userRightsRemoteDesktopServicesLogOn?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users are allowed to shut down a computer from a remote location on the network.
     * Misuse of this user right can result in a denial of service. Only states NotConfigured and Allowed are supported.
     */
    userRightsRemoteShutdown?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users can bypass file, directory, registry, and other persistent objects permissions
     * when restoring backed up files and directories, and determines which users can set any valid security principal as the
     * owner of an object. Only states NotConfigured and Allowed are supported.
     */
    userRightsRestoreData?: NullableOption<DeviceManagementUserRightsSetting>;
    /**
     * This user right determines which users can take ownership of any securable object in the system, including Active
     * Directory objects, files and folders, printers, registry keys, processes, and threads. Only states NotConfigured and
     * Allowed are supported.
     */
    userRightsTakeOwnership?: NullableOption<DeviceManagementUserRightsSetting>;
    // Configure windows defender TamperProtection settings. Possible values are: notConfigured, enable, disable.
    windowsDefenderTamperProtection?: WindowsDefenderTamperProtectionOptions;
    /**
     * This setting determines whether the Accessory management service's start type is Automatic(2), Manual(3), Disabled(4).
     * Default: Manual. Possible values are: manual, automatic, disabled.
     */
    xboxServicesAccessoryManagementServiceStartupMode?: ServiceStartType;
    // This setting determines whether xbox game save is enabled (1) or disabled (0).
    xboxServicesEnableXboxGameSaveTask?: boolean;
    /**
     * This setting determines whether Live Auth Manager service's start type is Automatic(2), Manual(3), Disabled(4).
     * Default: Manual. Possible values are: manual, automatic, disabled.
     */
    xboxServicesLiveAuthManagerServiceStartupMode?: ServiceStartType;
    /**
     * This setting determines whether Live Game save service's start type is Automatic(2), Manual(3), Disabled(4). Default:
     * Manual. Possible values are: manual, automatic, disabled.
     */
    xboxServicesLiveGameSaveServiceStartupMode?: ServiceStartType;
    /**
     * This setting determines whether Networking service's start type is Automatic(2), Manual(3), Disabled(4). Default:
     * Manual. Possible values are: manual, automatic, disabled.
     */
    xboxServicesLiveNetworkingServiceStartupMode?: ServiceStartType;
}
export interface Windows10EnterpriseModernAppManagementConfiguration extends DeviceConfiguration {
    // Indicates whether or not to uninstall a fixed list of built-in Windows apps.
    uninstallBuiltInApps?: boolean;
}
export interface Windows10GeneralConfiguration extends DeviceConfiguration {
    /**
     * Indicates whether or not to Block the user from adding email accounts to the device that are not associated with a
     * Microsoft account.
     */
    accountsBlockAddingNonMicrosoftAccountEmail?: boolean;
    // Specifies if Windows apps can be activated by voice. Possible values are: notConfigured, enabled, disabled.
    activateAppsWithVoice?: Enablement;
    // Indicates whether or not to block the user from selecting an AntiTheft mode preference (Windows 10 Mobile only).
    antiTheftModeBlocked?: boolean;
    /**
     * This policy setting permits users to change installation options that typically are available only to system
     * administrators.
     */
    appManagementMSIAllowUserControlOverInstall?: boolean;
    // This policy setting directs Windows Installer to use elevated permissions when it installs any program on the system.
    appManagementMSIAlwaysInstallWithElevatedPrivileges?: boolean;
    // List of semi-colon delimited Package Family Names of Windows apps. Listed Windows apps are to be launched after logon.
    appManagementPackageFamilyNamesToLaunchAfterLogOn?: NullableOption<string[]>;
    /**
     * Indicates whether apps from AppX packages signed with a trusted certificate can be side loaded. Possible values are:
     * notConfigured, blocked, allowed.
     */
    appsAllowTrustedAppsSideloading?: StateManagementSetting;
    /**
     * Indicates whether or not to disable the launch of all apps from Windows Store that came pre-installed or were
     * downloaded.
     */
    appsBlockWindowsStoreOriginatedApps?: boolean;
    // Allows secondary authentication devices to work with Windows.
    authenticationAllowSecondaryDevice?: boolean;
    // Specifies the preferred domain among available domains in the Azure AD tenant.
    authenticationPreferredAzureADTenantDomainName?: NullableOption<string>;
    /**
     * Indicates whether or not Web Credential Provider will be enabled. Possible values are: notConfigured, enabled,
     * disabled.
     */
    authenticationWebSignIn?: Enablement;
    // Specify a list of allowed Bluetooth services and profiles in hex formatted strings.
    bluetoothAllowedServices?: NullableOption<string[]>;
    // Whether or not to Block the user from using bluetooth advertising.
    bluetoothBlockAdvertising?: boolean;
    // Whether or not to Block the user from using bluetooth discoverable mode.
    bluetoothBlockDiscoverableMode?: boolean;
    // Whether or not to Block the user from using bluetooth.
    bluetoothBlocked?: boolean;
    // Whether or not to block specific bundled Bluetooth peripherals to automatically pair with the host device.
    bluetoothBlockPrePairing?: boolean;
    // Whether or not to block the users from using Swift Pair and other proximity based scenarios.
    bluetoothBlockPromptedProximalConnections?: boolean;
    // Whether or not to Block the user from accessing the camera of the device.
    cameraBlocked?: boolean;
    // Whether or not to Block the user from using data over cellular while roaming.
    cellularBlockDataWhenRoaming?: boolean;
    // Whether or not to Block the user from using VPN over cellular.
    cellularBlockVpn?: boolean;
    // Whether or not to Block the user from using VPN when roaming over cellular.
    cellularBlockVpnWhenRoaming?: boolean;
    /**
     * Whether or not to allow the cellular data channel on the device. If not configured, the cellular data channel is
     * allowed and the user can turn it off. Possible values are: blocked, required, allowed, notConfigured.
     */
    cellularData?: ConfigurationUsage;
    // Whether or not to Block the user from doing manual root certificate installation.
    certificatesBlockManualRootCertificateInstallation?: boolean;
    // Specifies the time zone to be applied to the device. This is the standard Windows name for the target time zone.
    configureTimeZone?: NullableOption<string>;
    /**
     * Whether or not to block Connected Devices Service which enables discovery and connection to other devices, remote
     * messaging, remote app sessions and other cross-device experiences.
     */
    connectedDevicesServiceBlocked?: boolean;
    // Whether or not to Block the user from using copy paste.
    copyPasteBlocked?: boolean;
    // Whether or not to Block the user from using Cortana.
    cortanaBlocked?: boolean;
    // Specify whether to allow or disallow the Federal Information Processing Standard (FIPS) policy.
    cryptographyAllowFipsAlgorithmPolicy?: boolean;
    /**
     * This policy setting allows you to block direct memory access (DMA) for all hot pluggable PCI downstream ports until a
     * user logs into Windows.
     */
    dataProtectionBlockDirectMemoryAccess?: NullableOption<boolean>;
    // Whether or not to block end user access to Defender.
    defenderBlockEndUserAccess?: boolean;
    // Allows or disallows Windows Defender On Access Protection functionality.
    defenderBlockOnAccessProtection?: boolean;
    // Specifies the level of cloud-delivered protection. Possible values are: notConfigured, high, highPlus, zeroTolerance.
    defenderCloudBlockLevel?: DefenderCloudBlockLevelType;
    // Timeout extension for file scanning by the cloud. Valid values 0 to 50
    defenderCloudExtendedTimeout?: NullableOption<number>;
    // Timeout extension for file scanning by the cloud. Valid values 0 to 50
    defenderCloudExtendedTimeoutInSeconds?: NullableOption<number>;
    // Number of days before deleting quarantined malware. Valid values 0 to 90
    defenderDaysBeforeDeletingQuarantinedMalware?: NullableOption<number>;
    // Gets or sets Defender’s actions to take on detected Malware per threat level.
    defenderDetectedMalwareActions?: NullableOption<DefenderDetectedMalwareActions>;
    // When blocked, catch-up scans for scheduled full scans will be turned off.
    defenderDisableCatchupFullScan?: boolean;
    // When blocked, catch-up scans for scheduled quick scans will be turned off.
    defenderDisableCatchupQuickScan?: boolean;
    // File extensions to exclude from scans and real time protection.
    defenderFileExtensionsToExclude?: NullableOption<string[]>;
    // Files and folder to exclude from scans and real time protection.
    defenderFilesAndFoldersToExclude?: NullableOption<string[]>;
    /**
     * Value for monitoring file activity. Possible values are: userDefined, disable, monitorAllFiles,
     * monitorIncomingFilesOnly, monitorOutgoingFilesOnly.
     */
    defenderMonitorFileActivity?: DefenderMonitorFileActivity;
    /**
     * Gets or sets Defender’s action to take on Potentially Unwanted Application (PUA), which includes software with
     * behaviors of ad-injection, software bundling, persistent solicitation for payment or subscription, etc. Defender alerts
     * user when PUA is being downloaded or attempts to install itself. Added in Windows 10 for desktop. Possible values are:
     * deviceDefault, block, audit.
     */
    defenderPotentiallyUnwantedAppAction?: NullableOption<DefenderPotentiallyUnwantedAppAction>;
    /**
     * Gets or sets Defender’s action to take on Potentially Unwanted Application (PUA), which includes software with
     * behaviors of ad-injection, software bundling, persistent solicitation for payment or subscription, etc. Defender alerts
     * user when PUA is being downloaded or attempts to install itself. Added in Windows 10 for desktop. Possible values are:
     * userDefined, enable, auditMode, warn, notConfigured.
     */
    defenderPotentiallyUnwantedAppActionSetting?: DefenderProtectionType;
    // Processes to exclude from scans and real time protection.
    defenderProcessesToExclude?: NullableOption<string[]>;
    /**
     * The configuration for how to prompt user for sample submission. Possible values are: userDefined, alwaysPrompt,
     * promptBeforeSendingPersonalData, neverSendData, sendAllDataWithoutPrompting.
     */
    defenderPromptForSampleSubmission?: DefenderPromptForSampleSubmission;
    // Indicates whether or not to require behavior monitoring.
    defenderRequireBehaviorMonitoring?: boolean;
    // Indicates whether or not to require cloud protection.
    defenderRequireCloudProtection?: boolean;
    // Indicates whether or not to require network inspection system.
    defenderRequireNetworkInspectionSystem?: boolean;
    // Indicates whether or not to require real time monitoring.
    defenderRequireRealTimeMonitoring?: boolean;
    // Indicates whether or not to scan archive files.
    defenderScanArchiveFiles?: boolean;
    // Indicates whether or not to scan downloads.
    defenderScanDownloads?: boolean;
    // Indicates whether or not to scan incoming mail messages.
    defenderScanIncomingMail?: boolean;
    // Indicates whether or not to scan mapped network drives during full scan.
    defenderScanMappedNetworkDrivesDuringFullScan?: boolean;
    // Max CPU usage percentage during scan. Valid values 0 to 100
    defenderScanMaxCpu?: NullableOption<number>;
    // Indicates whether or not to scan files opened from a network folder.
    defenderScanNetworkFiles?: boolean;
    // Indicates whether or not to scan removable drives during full scan.
    defenderScanRemovableDrivesDuringFullScan?: boolean;
    // Indicates whether or not to scan scripts loaded in Internet Explorer browser.
    defenderScanScriptsLoadedInInternetExplorer?: boolean;
    // The defender system scan type. Possible values are: userDefined, disabled, quick, full.
    defenderScanType?: DefenderScanType;
    // The time to perform a daily quick scan.
    defenderScheduledQuickScanTime?: NullableOption<string>;
    // The defender time for the system scan.
    defenderScheduledScanTime?: NullableOption<string>;
    // When enabled, low CPU priority will be used during scheduled scans.
    defenderScheduleScanEnableLowCpuPriority?: boolean;
    // The signature update interval in hours. Specify 0 not to check. Valid values 0 to 24
    defenderSignatureUpdateIntervalInHours?: NullableOption<number>;
    /**
     * Checks for the user consent level in Windows Defender to send data. Possible values are: sendSafeSamplesAutomatically,
     * alwaysPrompt, neverSend, sendAllSamplesAutomatically.
     */
    defenderSubmitSamplesConsentType?: DefenderSubmitSamplesConsentType;
    /**
     * Defender day of the week for the system scan. Possible values are: userDefined, everyday, sunday, monday, tuesday,
     * wednesday, thursday, friday, saturday, noScheduledScan.
     */
    defenderSystemScanSchedule?: WeeklySchedule;
    // Indicates whether or not to allow developer unlock. Possible values are: notConfigured, blocked, allowed.
    developerUnlockSetting?: StateManagementSetting;
    // Indicates whether or not to Block the user from resetting their phone.
    deviceManagementBlockFactoryResetOnMobile?: boolean;
    // Indicates whether or not to Block the user from doing manual un-enrollment from device management.
    deviceManagementBlockManualUnenroll?: boolean;
    /**
     * Gets or sets a value allowing the device to send diagnostic and usage telemetry data, such as Watson. Possible values
     * are: userDefined, none, basic, enhanced, full.
     */
    diagnosticsDataSubmissionMode?: DiagnosticDataSubmissionMode;
    // List of legacy applications that have GDI DPI Scaling turned off.
    displayAppListWithGdiDPIScalingTurnedOff?: NullableOption<string[]>;
    // List of legacy applications that have GDI DPI Scaling turned on.
    displayAppListWithGdiDPIScalingTurnedOn?: NullableOption<string[]>;
    /**
     * Allow users to change Start pages on Edge. Use the EdgeHomepageUrls to specify the Start pages that the user would see
     * by default when they open Edge.
     */
    edgeAllowStartPagesModification?: boolean;
    // Indicates whether or not to prevent access to about flags on Edge browser.
    edgeBlockAccessToAboutFlags?: boolean;
    /**
     * Block the address bar dropdown functionality in Microsoft Edge. Disable this settings to minimize network connections
     * from Microsoft Edge to Microsoft services.
     */
    edgeBlockAddressBarDropdown?: boolean;
    // Indicates whether or not to block auto fill.
    edgeBlockAutofill?: boolean;
    /**
     * Block Microsoft compatibility list in Microsoft Edge. This list from Microsoft helps Edge properly display sites with
     * known compatibility issues.
     */
    edgeBlockCompatibilityList?: boolean;
    // Indicates whether or not to block developer tools in the Edge browser.
    edgeBlockDeveloperTools?: boolean;
    // Indicates whether or not to Block the user from using the Edge browser.
    edgeBlocked?: boolean;
    // Indicates whether or not to Block the user from making changes to Favorites.
    edgeBlockEditFavorites?: boolean;
    // Indicates whether or not to block extensions in the Edge browser.
    edgeBlockExtensions?: boolean;
    // Allow or prevent Edge from entering the full screen mode.
    edgeBlockFullScreenMode?: boolean;
    // Indicates whether or not to block InPrivate browsing on corporate networks, in the Edge browser.
    edgeBlockInPrivateBrowsing?: boolean;
    // Indicates whether or not to Block the user from using JavaScript.
    edgeBlockJavaScript?: boolean;
    /**
     * Block the collection of information by Microsoft for live tile creation when users pin a site to Start from Microsoft
     * Edge.
     */
    edgeBlockLiveTileDataCollection?: boolean;
    // Indicates whether or not to Block password manager.
    edgeBlockPasswordManager?: boolean;
    // Indicates whether or not to block popups.
    edgeBlockPopups?: boolean;
    // Decide whether Microsoft Edge is prelaunched at Windows startup.
    edgeBlockPrelaunch?: boolean;
    // Configure Edge to allow or block printing.
    edgeBlockPrinting?: boolean;
    // Configure Edge to allow browsing history to be saved or to never save browsing history.
    edgeBlockSavingHistory?: boolean;
    // Indicates whether or not to block the user from adding new search engine or changing the default search engine.
    edgeBlockSearchEngineCustomization?: boolean;
    // Indicates whether or not to block the user from using the search suggestions in the address bar.
    edgeBlockSearchSuggestions?: boolean;
    // Indicates whether or not to Block the user from sending the do not track header.
    edgeBlockSendingDoNotTrackHeader?: boolean;
    /**
     * Indicates whether or not to switch the intranet traffic from Edge to Internet Explorer. Note: the name of this property
     * is misleading; the property is obsolete, use EdgeSendIntranetTrafficToInternetExplorer instead.
     */
    edgeBlockSendingIntranetTrafficToInternetExplorer?: boolean;
    // Indicates whether the user can sideload extensions.
    edgeBlockSideloadingExtensions?: boolean;
    // Configure whether Edge preloads the new tab page at Windows startup.
    edgeBlockTabPreloading?: boolean;
    // Configure to load a blank page in Edge instead of the default New tab page and prevent users from changing it.
    edgeBlockWebContentOnNewTabPage?: boolean;
    // Clear browsing data on exiting Microsoft Edge.
    edgeClearBrowsingDataOnExit?: boolean;
    /**
     * Indicates which cookies to block in the Edge browser. Possible values are: userDefined, allow, blockThirdParty,
     * blockAll.
     */
    edgeCookiePolicy?: EdgeCookiePolicy;
    /**
     * Block the Microsoft web page that opens on the first use of Microsoft Edge. This policy allows enterprises, like those
     * enrolled in zero emissions configurations, to block this page.
     */
    edgeDisableFirstRunPage?: boolean;
    // Indicates the enterprise mode site list location. Could be a local file, local network or http location.
    edgeEnterpriseModeSiteListLocation?: NullableOption<string>;
    /**
     * Get or set a value that specifies whether to set the favorites bar to always be visible or hidden on any page. Possible
     * values are: notConfigured, hide, show.
     */
    edgeFavoritesBarVisibility?: VisibilitySetting;
    // The location of the favorites list to provision. Could be a local file, local network or http location.
    edgeFavoritesListLocation?: NullableOption<string>;
    // The first run URL for when Edge browser is opened for the first time.
    edgeFirstRunUrl?: NullableOption<string>;
    // Causes the Home button to either hide, load the default Start page, load a New tab page, or a custom URL
    edgeHomeButtonConfiguration?: NullableOption<EdgeHomeButtonConfiguration>;
    // Enable the Home button configuration.
    edgeHomeButtonConfigurationEnabled?: boolean;
    // The list of URLs for homepages shodwn on MDM-enrolled devices on Edge browser.
    edgeHomepageUrls?: NullableOption<string[]>;
    /**
     * Controls how the Microsoft Edge settings are restricted based on the configure kiosk mode. Possible values are:
     * notConfigured, digitalSignage, normalMode, publicBrowsingSingleApp, publicBrowsingMultiApp.
     */
    edgeKioskModeRestriction?: EdgeKioskModeRestrictionType;
    /**
     * Specifies the time in minutes from the last user activity before Microsoft Edge kiosk resets. Valid values are 0-1440.
     * The default is 5. 0 indicates no reset. Valid values 0 to 1440
     */
    edgeKioskResetAfterIdleTimeInMinutes?: NullableOption<number>;
    // Specify the page opened when new tabs are created.
    edgeNewTabPageURL?: NullableOption<string>;
    /**
     * Specify what kind of pages are open at start. Possible values are: notConfigured, startPage, newTabPage, previousPages,
     * specificPages.
     */
    edgeOpensWith?: EdgeOpenOptions;
    // Allow or prevent users from overriding certificate errors.
    edgePreventCertificateErrorOverride?: boolean;
    // Specify the list of package family names of browser extensions that are required and cannot be turned off by the user.
    edgeRequiredExtensionPackageFamilyNames?: NullableOption<string[]>;
    // Indicates whether or not to Require the user to use the smart screen filter.
    edgeRequireSmartScreen?: boolean;
    /**
     * Allows IT admins to set a default search engine for MDM-Controlled devices. Users can override this and change their
     * default search engine provided the AllowSearchEngineCustomization policy is not set.
     */
    edgeSearchEngine?: NullableOption<EdgeSearchEngineBase>;
    // Indicates whether or not to switch the intranet traffic from Edge to Internet Explorer.
    edgeSendIntranetTrafficToInternetExplorer?: boolean;
    /**
     * Controls the message displayed by Edge before switching to Internet Explorer. Possible values are: notConfigured,
     * disabled, enabled, keepGoing.
     */
    edgeShowMessageWhenOpeningInternetExplorerSites?: InternetExplorerMessageSetting;
    /**
     * Enable favorites sync between Internet Explorer and Microsoft Edge. Additions, deletions, modifications and order
     * changes to favorites are shared between browsers.
     */
    edgeSyncFavoritesWithInternetExplorer?: boolean;
    /**
     * Specifies what type of telemetry data (none, intranet, internet, both) is sent to Microsoft 365 Analytics. Possible
     * values are: notConfigured, intranet, internet, intranetAndInternet.
     */
    edgeTelemetryForMicrosoft365Analytics?: EdgeTelemetryMode;
    /**
     * Allow users with administrative rights to delete all user data and settings using CTRL + Win + R at the device lock
     * screen so that the device can be automatically re-configured and re-enrolled into management.
     */
    enableAutomaticRedeployment?: boolean;
    /**
     * This setting allows you to specify battery charge level at which Energy Saver is turned on. While on battery, Energy
     * Saver is automatically turned on at (and below) the specified battery charge level. Valid input range (0-100). Valid
     * values 0 to 100
     */
    energySaverOnBatteryThresholdPercentage?: NullableOption<number>;
    /**
     * This setting allows you to specify battery charge level at which Energy Saver is turned on. While plugged in, Energy
     * Saver is automatically turned on at (and below) the specified battery charge level. Valid input range (0-100). Valid
     * values 0 to 100
     */
    energySaverPluggedInThresholdPercentage?: NullableOption<number>;
    // Endpoint for discovering cloud printers.
    enterpriseCloudPrintDiscoveryEndPoint?: NullableOption<string>;
    /**
     * Maximum number of printers that should be queried from a discovery endpoint. This is a mobile only setting. Valid
     * values 1 to 65535
     */
    enterpriseCloudPrintDiscoveryMaxLimit?: NullableOption<number>;
    // OAuth resource URI for printer discovery service as configured in Azure portal.
    enterpriseCloudPrintMopriaDiscoveryResourceIdentifier?: NullableOption<string>;
    // Authentication endpoint for acquiring OAuth tokens.
    enterpriseCloudPrintOAuthAuthority?: NullableOption<string>;
    // GUID of a client application authorized to retrieve OAuth tokens from the OAuth Authority.
    enterpriseCloudPrintOAuthClientIdentifier?: NullableOption<string>;
    // OAuth resource URI for print service as configured in the Azure portal.
    enterpriseCloudPrintResourceIdentifier?: NullableOption<string>;
    // Indicates whether or not to enable device discovery UX.
    experienceBlockDeviceDiscovery?: boolean;
    // Indicates whether or not to allow the error dialog from displaying if no SIM card is detected.
    experienceBlockErrorDialogWhenNoSIM?: boolean;
    // Indicates whether or not to enable task switching on the device.
    experienceBlockTaskSwitcher?: boolean;
    /**
     * Allow or prevent the syncing of Microsoft Edge Browser settings. Option for IT admins to prevent syncing across
     * devices, but allow user override. Possible values are: notConfigured, blockedWithUserOverride, blocked.
     */
    experienceDoNotSyncBrowserSettings?: BrowserSyncSetting;
    /**
     * Controls if the user can configure search to Find My Files mode, which searches files in secondary hard drives and also
     * outside of the user profile. Find My Files does not allow users to search files or locations to which they do not have
     * access. Possible values are: notConfigured, enabled, disabled.
     */
    findMyFiles?: Enablement;
    // Indicates whether or not to block DVR and broadcasting.
    gameDvrBlocked?: boolean;
    /**
     * Controls the user access to the ink workspace, from the desktop and from above the lock screen. Possible values are:
     * notConfigured, enabled, disabled.
     */
    inkWorkspaceAccess?: InkAccessSetting;
    /**
     * Controls the user access to the ink workspace, from the desktop and from above the lock screen. Possible values are:
     * notConfigured, blocked, allowed.
     */
    inkWorkspaceAccessState?: StateManagementSetting;
    // Specify whether to show recommended app suggestions in the ink workspace.
    inkWorkspaceBlockSuggestedApps?: boolean;
    // Indicates whether or not to Block the user from using internet sharing.
    internetSharingBlocked?: boolean;
    // Indicates whether or not to Block the user from location services.
    locationServicesBlocked?: boolean;
    /**
     * This policy setting specifies whether Windows apps can be activated by voice while the system is locked. Possible
     * values are: notConfigured, enabled, disabled.
     */
    lockScreenActivateAppsWithVoice?: Enablement;
    /**
     * Specify whether to show a user-configurable setting to control the screen timeout while on the lock screen of Windows
     * 10 Mobile devices. If this policy is set to Allow, the value set by lockScreenTimeoutInSeconds is ignored.
     */
    lockScreenAllowTimeoutConfiguration?: boolean;
    // Indicates whether or not to block action center notifications over lock screen.
    lockScreenBlockActionCenterNotifications?: boolean;
    // Indicates whether or not the user can interact with Cortana using speech while the system is locked.
    lockScreenBlockCortana?: boolean;
    // Indicates whether to allow toast notifications above the device lock screen.
    lockScreenBlockToastNotifications?: boolean;
    /**
     * Set the duration (in seconds) from the screen locking to the screen turning off for Windows 10 Mobile devices.
     * Supported values are 11-1800. Valid values 11 to 1800
     */
    lockScreenTimeoutInSeconds?: NullableOption<number>;
    // Disables the ability to quickly switch between users that are logged on simultaneously without logging off.
    logonBlockFastUserSwitching?: boolean;
    // Indicates whether or not to block the MMS send/receive functionality on the device.
    messagingBlockMMS?: boolean;
    // Indicates whether or not to block the RCS send/receive functionality on the device.
    messagingBlockRichCommunicationServices?: boolean;
    // Indicates whether or not to block text message back up and restore and Messaging Everywhere.
    messagingBlockSync?: boolean;
    // Indicates whether or not to Block a Microsoft account.
    microsoftAccountBlocked?: boolean;
    // Indicates whether or not to Block Microsoft account settings sync.
    microsoftAccountBlockSettingsSync?: boolean;
    // Controls the Microsoft Account Sign-In Assistant (wlidsvc) NT service. Possible values are: notConfigured, disabled.
    microsoftAccountSignInAssistantSettings?: SignInAssistantOptions;
    /**
     * If set, proxy settings will be applied to all processes and accounts in the device. Otherwise, it will be applied to
     * the user account that’s enrolled into MDM.
     */
    networkProxyApplySettingsDeviceWide?: boolean;
    // Address to the proxy auto-config (PAC) script you want to use.
    networkProxyAutomaticConfigurationUrl?: NullableOption<string>;
    /**
     * Disable automatic detection of settings. If enabled, the system will try to find the path to a proxy auto-config (PAC)
     * script.
     */
    networkProxyDisableAutoDetect?: boolean;
    // Specifies manual proxy server settings.
    networkProxyServer?: NullableOption<Windows10NetworkProxyServer>;
    // Indicates whether or not to Block the user from using near field communication.
    nfcBlocked?: boolean;
    // Gets or sets a value allowing IT admins to prevent apps and features from working with files on OneDrive.
    oneDriveDisableFileSync?: boolean;
    /**
     * Specify whether PINs or passwords such as '1111' or '1234' are allowed. For Windows 10 desktops, it also controls the
     * use of picture passwords.
     */
    passwordBlockSimple?: boolean;
    // The password expiration in days. Valid values 0 to 730
    passwordExpirationDays?: NullableOption<number>;
    /**
     * This security setting determines the period of time (in days) that a password must be used before the user can change
     * it. Valid values 0 to 998
     */
    passwordMinimumAgeInDays?: NullableOption<number>;
    // The number of character sets required in the password.
    passwordMinimumCharacterSetCount?: NullableOption<number>;
    // The minimum password length. Valid values 4 to 16
    passwordMinimumLength?: NullableOption<number>;
    // The minutes of inactivity before the screen times out.
    passwordMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    // The number of previous passwords to prevent reuse of. Valid values 0 to 50
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Indicates whether or not to require the user to have a password.
    passwordRequired?: boolean;
    // The required password type. Possible values are: deviceDefault, alphanumeric, numeric.
    passwordRequiredType?: RequiredPasswordType;
    // Indicates whether or not to require a password upon resuming from an idle state.
    passwordRequireWhenResumeFromIdleState?: boolean;
    // The number of sign in failures before factory reset. Valid values 0 to 999
    passwordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    /**
     * A http or https Url to a jpg, jpeg or png image that needs to be downloaded and used as the Desktop Image or a file Url
     * to a local image on the file system that needs to used as the Desktop Image.
     */
    personalizationDesktopImageUrl?: NullableOption<string>;
    /**
     * A http or https Url to a jpg, jpeg or png image that neeeds to be downloaded and used as the Lock Screen Image or a
     * file Url to a local image on the file system that needs to be used as the Lock Screen Image.
     */
    personalizationLockScreenImageUrl?: NullableOption<string>;
    /**
     * This setting specifies the action that Windows takes when a user presses the Power button while on battery. Possible
     * values are: notConfigured, noAction, sleep, hibernate, shutdown.
     */
    powerButtonActionOnBattery?: PowerActionType;
    /**
     * This setting specifies the action that Windows takes when a user presses the Power button while plugged in. Possible
     * values are: notConfigured, noAction, sleep, hibernate, shutdown.
     */
    powerButtonActionPluggedIn?: PowerActionType;
    /**
     * This setting allows you to turn off hybrid sleep while on battery. If you set this setting to disable, a hiberfile is
     * not generated when the system transitions to sleep (Stand By). If you set this setting to enable or do not configure
     * this policy setting, users control this setting. Possible values are: notConfigured, enabled, disabled.
     */
    powerHybridSleepOnBattery?: Enablement;
    /**
     * This setting allows you to turn off hybrid sleep while plugged in. If you set this setting to disable, a hiberfile is
     * not generated when the system transitions to sleep (Stand By). If you set this setting to enable or do not configure
     * this policy setting, users control this setting. Possible values are: notConfigured, enabled, disabled.
     */
    powerHybridSleepPluggedIn?: Enablement;
    /**
     * This setting specifies the action that Windows takes when a user closes the lid on a mobile PC while on battery.
     * Possible values are: notConfigured, noAction, sleep, hibernate, shutdown.
     */
    powerLidCloseActionOnBattery?: PowerActionType;
    /**
     * This setting specifies the action that Windows takes when a user closes the lid on a mobile PC while plugged in.
     * Possible values are: notConfigured, noAction, sleep, hibernate, shutdown.
     */
    powerLidCloseActionPluggedIn?: PowerActionType;
    /**
     * This setting specifies the action that Windows takes when a user presses the Sleep button while on battery. Possible
     * values are: notConfigured, noAction, sleep, hibernate, shutdown.
     */
    powerSleepButtonActionOnBattery?: PowerActionType;
    /**
     * This setting specifies the action that Windows takes when a user presses the Sleep button while plugged in. Possible
     * values are: notConfigured, noAction, sleep, hibernate, shutdown.
     */
    powerSleepButtonActionPluggedIn?: PowerActionType;
    // Prevent user installation of additional printers from printers settings.
    printerBlockAddition?: boolean;
    // Name (network host name) of an installed printer.
    printerDefaultName?: NullableOption<string>;
    // Automatically provision printers based on their names (network host names).
    printerNames?: NullableOption<string[]>;
    /**
     * Enables or disables the use of advertising ID. Added in Windows 10, version 1607. Possible values are: notConfigured,
     * blocked, allowed.
     */
    privacyAdvertisingId?: StateManagementSetting;
    /**
     * Indicates whether or not to allow the automatic acceptance of the pairing and privacy user consent dialog when
     * launching apps.
     */
    privacyAutoAcceptPairingAndConsentPrompts?: boolean;
    // Blocks the usage of cloud based speech services for Cortana, Dictation, or Store applications.
    privacyBlockActivityFeed?: boolean;
    /**
     * Indicates whether or not to block the usage of cloud based speech services for Cortana, Dictation, or Store
     * applications.
     */
    privacyBlockInputPersonalization?: boolean;
    // Blocks the shared experiences/discovery of recently used resources in task switcher etc.
    privacyBlockPublishUserActivities?: boolean;
    // This policy prevents the privacy experience from launching during user logon for new and upgraded users.
    privacyDisableLaunchExperience?: boolean;
    // Indicates whether or not to Block the user from reset protection mode.
    resetProtectionModeBlocked?: boolean;
    // Specifies what filter level of safe search is required. Possible values are: userDefined, strict, moderate.
    safeSearchFilter?: SafeSearchFilterType;
    // Indicates whether or not to Block the user from taking Screenshots.
    screenCaptureBlocked?: boolean;
    // Specifies if search can use diacritics.
    searchBlockDiacritics?: boolean;
    // Indicates whether or not to block the web search.
    searchBlockWebResults?: boolean;
    // Specifies whether to use automatic language detection when indexing content and properties.
    searchDisableAutoLanguageDetection?: boolean;
    // Indicates whether or not to disable the search indexer backoff feature.
    searchDisableIndexerBackoff?: boolean;
    /**
     * Indicates whether or not to block indexing of WIP-protected items to prevent them from appearing in search results for
     * Cortana or Explorer.
     */
    searchDisableIndexingEncryptedItems?: boolean;
    // Indicates whether or not to allow users to add locations on removable drives to libraries and to be indexed.
    searchDisableIndexingRemovableDrive?: boolean;
    // Specifies if search can use location information.
    searchDisableLocation?: boolean;
    // Specifies if search can use location information.
    searchDisableUseLocation?: boolean;
    // Specifies minimum amount of hard drive space on the same drive as the index location before indexing stops.
    searchEnableAutomaticIndexSizeManangement?: boolean;
    // Indicates whether or not to block remote queries of this computer’s index.
    searchEnableRemoteQueries?: boolean;
    // Specify whether to allow automatic device encryption during OOBE when the device is Azure AD joined (desktop only).
    securityBlockAzureADJoinedDevicesAutoEncryption?: boolean;
    // Indicates whether or not to block access to Accounts in Settings app.
    settingsBlockAccountsPage?: boolean;
    // Indicates whether or not to block the user from installing provisioning packages.
    settingsBlockAddProvisioningPackage?: boolean;
    // Indicates whether or not to block access to Apps in Settings app.
    settingsBlockAppsPage?: boolean;
    // Indicates whether or not to block the user from changing the language settings.
    settingsBlockChangeLanguage?: boolean;
    // Indicates whether or not to block the user from changing power and sleep settings.
    settingsBlockChangePowerSleep?: boolean;
    // Indicates whether or not to block the user from changing the region settings.
    settingsBlockChangeRegion?: boolean;
    // Indicates whether or not to block the user from changing date and time settings.
    settingsBlockChangeSystemTime?: boolean;
    // Indicates whether or not to block access to Devices in Settings app.
    settingsBlockDevicesPage?: boolean;
    // Indicates whether or not to block access to Ease of Access in Settings app.
    settingsBlockEaseOfAccessPage?: boolean;
    // Indicates whether or not to block the user from editing the device name.
    settingsBlockEditDeviceName?: boolean;
    // Indicates whether or not to block access to Gaming in Settings app.
    settingsBlockGamingPage?: boolean;
    // Indicates whether or not to block access to Network &amp; Internet in Settings app.
    settingsBlockNetworkInternetPage?: boolean;
    // Indicates whether or not to block access to Personalization in Settings app.
    settingsBlockPersonalizationPage?: boolean;
    // Indicates whether or not to block access to Privacy in Settings app.
    settingsBlockPrivacyPage?: boolean;
    // Indicates whether or not to block the runtime configuration agent from removing provisioning packages.
    settingsBlockRemoveProvisioningPackage?: boolean;
    // Indicates whether or not to block access to Settings app.
    settingsBlockSettingsApp?: boolean;
    // Indicates whether or not to block access to System in Settings app.
    settingsBlockSystemPage?: boolean;
    // Indicates whether or not to block access to Time &amp; Language in Settings app.
    settingsBlockTimeLanguagePage?: boolean;
    // Indicates whether or not to block access to Update &amp; Security in Settings app.
    settingsBlockUpdateSecurityPage?: boolean;
    // Indicates whether or not to block multiple users of the same app to share data.
    sharedUserAppDataAllowed?: boolean;
    /**
     * Added in Windows 10, version 1703. Allows IT Admins to control whether users are allowed to install apps from places
     * other than the Store. Possible values are: notConfigured, anywhere, storeOnly, recommendations, preferStore.
     */
    smartScreenAppInstallControl?: AppInstallControlType;
    // Indicates whether or not users can override SmartScreen Filter warnings about potentially malicious websites.
    smartScreenBlockPromptOverride?: boolean;
    // Indicates whether or not users can override the SmartScreen Filter warnings about downloading unverified files
    smartScreenBlockPromptOverrideForFiles?: boolean;
    /**
     * This property will be deprecated in July 2019 and will be replaced by property SmartScreenAppInstallControl. Allows IT
     * Admins to control whether users are allowed to install apps from places other than the Store.
     */
    smartScreenEnableAppInstallControl?: boolean;
    // Indicates whether or not to block the user from unpinning apps from taskbar.
    startBlockUnpinningAppsFromTaskbar?: boolean;
    /**
     * Setting the value of this collapses the app list, removes the app list entirely, or disables the corresponding toggle
     * in the Settings app. Possible values are: userDefined, collapse, remove, disableSettingsApp.
     */
    startMenuAppListVisibility?: WindowsStartMenuAppListVisibilityType;
    // Enabling this policy hides the change account setting from appearing in the user tile in the start menu.
    startMenuHideChangeAccountSettings?: boolean;
    /**
     * Enabling this policy hides the most used apps from appearing on the start menu and disables the corresponding toggle in
     * the Settings app.
     */
    startMenuHideFrequentlyUsedApps?: boolean;
    // Enabling this policy hides hibernate from appearing in the power button in the start menu.
    startMenuHideHibernate?: boolean;
    // Enabling this policy hides lock from appearing in the user tile in the start menu.
    startMenuHideLock?: boolean;
    // Enabling this policy hides the power button from appearing in the start menu.
    startMenuHidePowerButton?: boolean;
    /**
     * Enabling this policy hides recent jump lists from appearing on the start menu/taskbar and disables the corresponding
     * toggle in the Settings app.
     */
    startMenuHideRecentJumpLists?: boolean;
    /**
     * Enabling this policy hides recently added apps from appearing on the start menu and disables the corresponding toggle
     * in the Settings app.
     */
    startMenuHideRecentlyAddedApps?: boolean;
    // Enabling this policy hides 'Restart/Update and Restart' from appearing in the power button in the start menu.
    startMenuHideRestartOptions?: boolean;
    // Enabling this policy hides shut down/update and shut down from appearing in the power button in the start menu.
    startMenuHideShutDown?: boolean;
    // Enabling this policy hides sign out from appearing in the user tile in the start menu.
    startMenuHideSignOut?: boolean;
    // Enabling this policy hides sleep from appearing in the power button in the start menu.
    startMenuHideSleep?: boolean;
    // Enabling this policy hides switch account from appearing in the user tile in the start menu.
    startMenuHideSwitchAccount?: boolean;
    // Enabling this policy hides the user tile from appearing in the start menu.
    startMenuHideUserTile?: boolean;
    /**
     * This policy setting allows you to import Edge assets to be used with startMenuLayoutXml policy. Start layout can
     * contain secondary tile from Edge app which looks for Edge local asset file. Edge local asset would not exist and cause
     * Edge secondary tile to appear empty in this case. This policy only gets applied when startMenuLayoutXml policy is
     * modified. The value should be a UTF-8 Base64 encoded byte array.
     */
    startMenuLayoutEdgeAssetsXml?: NullableOption<number>;
    /**
     * Allows admins to override the default Start menu layout and prevents the user from changing it. The layout is modified
     * by specifying an XML file based on a layout modification schema. XML needs to be in a UTF8 encoded byte array format.
     */
    startMenuLayoutXml?: NullableOption<number>;
    // Allows admins to decide how the Start menu is displayed. Possible values are: userDefined, fullScreen, nonFullScreen.
    startMenuMode?: WindowsStartMenuModeType;
    /**
     * Enforces the visibility (Show/Hide) of the Documents folder shortcut on the Start menu. Possible values are:
     * notConfigured, hide, show.
     */
    startMenuPinnedFolderDocuments?: VisibilitySetting;
    /**
     * Enforces the visibility (Show/Hide) of the Downloads folder shortcut on the Start menu. Possible values are:
     * notConfigured, hide, show.
     */
    startMenuPinnedFolderDownloads?: VisibilitySetting;
    /**
     * Enforces the visibility (Show/Hide) of the FileExplorer shortcut on the Start menu. Possible values are: notConfigured,
     * hide, show.
     */
    startMenuPinnedFolderFileExplorer?: VisibilitySetting;
    /**
     * Enforces the visibility (Show/Hide) of the HomeGroup folder shortcut on the Start menu. Possible values are:
     * notConfigured, hide, show.
     */
    startMenuPinnedFolderHomeGroup?: VisibilitySetting;
    /**
     * Enforces the visibility (Show/Hide) of the Music folder shortcut on the Start menu. Possible values are: notConfigured,
     * hide, show.
     */
    startMenuPinnedFolderMusic?: VisibilitySetting;
    /**
     * Enforces the visibility (Show/Hide) of the Network folder shortcut on the Start menu. Possible values are:
     * notConfigured, hide, show.
     */
    startMenuPinnedFolderNetwork?: VisibilitySetting;
    /**
     * Enforces the visibility (Show/Hide) of the PersonalFolder shortcut on the Start menu. Possible values are:
     * notConfigured, hide, show.
     */
    startMenuPinnedFolderPersonalFolder?: VisibilitySetting;
    /**
     * Enforces the visibility (Show/Hide) of the Pictures folder shortcut on the Start menu. Possible values are:
     * notConfigured, hide, show.
     */
    startMenuPinnedFolderPictures?: VisibilitySetting;
    /**
     * Enforces the visibility (Show/Hide) of the Settings folder shortcut on the Start menu. Possible values are:
     * notConfigured, hide, show.
     */
    startMenuPinnedFolderSettings?: VisibilitySetting;
    /**
     * Enforces the visibility (Show/Hide) of the Videos folder shortcut on the Start menu. Possible values are:
     * notConfigured, hide, show.
     */
    startMenuPinnedFolderVideos?: VisibilitySetting;
    // Indicates whether or not to Block the user from using removable storage.
    storageBlockRemovableStorage?: boolean;
    // Indicating whether or not to require encryption on a mobile device.
    storageRequireMobileDeviceEncryption?: boolean;
    // Indicates whether application data is restricted to the system drive.
    storageRestrictAppDataToSystemVolume?: boolean;
    // Indicates whether the installation of applications is restricted to the system drive.
    storageRestrictAppInstallToSystemVolume?: boolean;
    /**
     * Gets or sets the fully qualified domain name (FQDN) or IP address of a proxy server to forward Connected User
     * Experiences and Telemetry requests.
     */
    systemTelemetryProxyServer?: NullableOption<string>;
    // Specify whether non-administrators can use Task Manager to end tasks.
    taskManagerBlockEndTask?: boolean;
    // Whether the device is required to connect to the network.
    tenantLockdownRequireNetworkDuringOutOfBoxExperience?: boolean;
    // Indicates whether or not to uninstall a fixed list of built-in Windows apps.
    uninstallBuiltInApps?: boolean;
    // Indicates whether or not to Block the user from USB connection.
    usbBlocked?: boolean;
    // Indicates whether or not to Block the user from voice recording.
    voiceRecordingBlocked?: boolean;
    // Indicates whether or not user's localhost IP address is displayed while making phone calls using the WebRTC
    webRtcBlockLocalhostIpAddress?: boolean;
    // Indicating whether or not to block automatically connecting to Wi-Fi hotspots. Has no impact if Wi-Fi is blocked.
    wiFiBlockAutomaticConnectHotspots?: boolean;
    // Indicates whether or not to Block the user from using Wi-Fi.
    wiFiBlocked?: boolean;
    // Indicates whether or not to Block the user from using Wi-Fi manual configuration.
    wiFiBlockManualConfiguration?: boolean;
    /**
     * Specify how often devices scan for Wi-Fi networks. Supported values are 1-500, where 100 = default, and 500 = low
     * frequency. Valid values 1 to 500
     */
    wiFiScanInterval?: NullableOption<number>;
    // Windows 10 force update schedule for Apps.
    windows10AppsForceUpdateSchedule?: NullableOption<Windows10AppsForceUpdateSchedule>;
    /**
     * Allows IT admins to block experiences that are typically for consumers only, such as Start suggestions, Membership
     * notifications, Post-OOBE app install and redirect tiles.
     */
    windowsSpotlightBlockConsumerSpecificFeatures?: boolean;
    // Allows IT admins to turn off all Windows Spotlight features
    windowsSpotlightBlocked?: boolean;
    /**
     * Block suggestions from Microsoft that show after each OS clean install, upgrade or in an on-going basis to introduce
     * users to what is new or changed
     */
    windowsSpotlightBlockOnActionCenter?: boolean;
    // Block personalized content in Windows spotlight based on user’s device usage.
    windowsSpotlightBlockTailoredExperiences?: boolean;
    // Block third party content delivered via Windows Spotlight
    windowsSpotlightBlockThirdPartyNotifications?: boolean;
    // Block Windows Spotlight Windows welcome experience
    windowsSpotlightBlockWelcomeExperience?: boolean;
    // Allows IT admins to turn off the popup of Windows Tips.
    windowsSpotlightBlockWindowsTips?: boolean;
    // Specifies the type of Spotlight. Possible values are: notConfigured, disabled, enabled.
    windowsSpotlightConfigureOnLockScreen?: WindowsSpotlightEnablementSettings;
    // Indicates whether or not to block automatic update of apps from Windows Store.
    windowsStoreBlockAutoUpdate?: boolean;
    // Indicates whether or not to Block the user from using the Windows store.
    windowsStoreBlocked?: boolean;
    // Indicates whether or not to enable Private Store Only.
    windowsStoreEnablePrivateStoreOnly?: boolean;
    // Indicates whether or not to allow other devices from discovering this PC for projection.
    wirelessDisplayBlockProjectionToThisDevice?: boolean;
    // Indicates whether or not to allow user input from wireless display receiver.
    wirelessDisplayBlockUserInputFromReceiver?: boolean;
    // Indicates whether or not to require a PIN for new devices to initiate pairing.
    wirelessDisplayRequirePinForPairing?: boolean;
    /**
     * Indicates a list of applications with their access control levels over privacy data categories, and/or the default
     * access levels per category.
     */
    privacyAccessControls?: NullableOption<WindowsPrivacyDataAccessControlItem[]>;
}
export interface WindowsPrivacyDataAccessControlItem extends Entity {
    /**
     * This indicates an access level for the privacy data category to which the specified application will be given to.
     * Possible values are: notConfigured, forceAllow, forceDeny, userInControl.
     */
    accessLevel?: WindowsPrivacyDataAccessLevel;
    // The Package Family Name of a Windows app. When set, the access level applies to the specified application.
    appDisplayName?: NullableOption<string>;
    // The Package Family Name of a Windows app. When set, the access level applies to the specified application.
    appPackageFamilyName?: NullableOption<string>;
    /**
     * This indicates a privacy data category to which the specific access control will apply. Possible values are:
     * notConfigured, accountInfo, appsRunInBackground, calendar, callHistory, camera, contacts, diagnosticsInfo, email,
     * location, messaging, microphone, motion, notifications, phone, radios, tasks, syncWithDevices, trustedDevices.
     */
    dataCategory?: WindowsPrivacyDataCategory;
}
export interface Windows10ImportedPFXCertificateProfile extends WindowsCertificateProfileBase {
    /**
     * Intended Purpose of the Certificate Profile - which could be Unassigned, SmimeEncryption, SmimeSigning etc. Possible
     * values are: unassigned, smimeEncryption, smimeSigning, vpn, wifi.
     */
    intendedPurpose?: IntendedPurpose;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface Windows10MobileCompliancePolicy extends DeviceCompliancePolicy {
    // Require active firewall on Windows devices.
    activeFirewallRequired?: boolean;
    // Require devices to be reported healthy by Windows Device Health Attestation - bit locker is enabled
    bitLockerEnabled?: boolean;
    // Require devices to be reported as healthy by Windows Device Health Attestation.
    codeIntegrityEnabled?: boolean;
    /**
     * Require devices to be reported as healthy by Windows Device Health Attestation - early launch antimalware driver is
     * enabled.
     */
    earlyLaunchAntiMalwareDriverEnabled?: boolean;
    // Maximum Windows Phone version.
    osMaximumVersion?: NullableOption<string>;
    // Minimum Windows Phone version.
    osMinimumVersion?: NullableOption<string>;
    // Whether or not to block syncing the calendar.
    passwordBlockSimple?: boolean;
    // Number of days before password expiration. Valid values 1 to 255
    passwordExpirationDays?: NullableOption<number>;
    // The number of character sets required in the password.
    passwordMinimumCharacterSetCount?: NullableOption<number>;
    // Minimum password length. Valid values 4 to 16
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before a password is required.
    passwordMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // The number of previous passwords to prevent re-use of.
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Require a password to unlock Windows Phone device.
    passwordRequired?: boolean;
    // The required password type. Possible values are: deviceDefault, alphanumeric, numeric.
    passwordRequiredType?: RequiredPasswordType;
    // Require a password to unlock an idle device.
    passwordRequireToUnlockFromIdle?: boolean;
    // Require devices to be reported as healthy by Windows Device Health Attestation - secure boot is enabled.
    secureBootEnabled?: boolean;
    // Require encryption on windows devices.
    storageRequireEncryption?: boolean;
    // The valid operating system build ranges on Windows devices. This collection can contain a maximum of 10000 elements.
    validOperatingSystemBuildRanges?: NullableOption<OperatingSystemVersionRange[]>;
}
export interface Windows10NetworkBoundaryConfiguration extends DeviceConfiguration {
    // Windows Network Isolation Policy
    windowsNetworkIsolationPolicy?: NullableOption<WindowsNetworkIsolationPolicy>;
}
export interface Windows10PFXImportCertificateProfile extends DeviceConfiguration {
    /**
     * Not yet documented. Possible values are: useTpmKspOtherwiseUseSoftwareKsp, useTpmKspOtherwiseFail,
     * usePassportForWorkKspOtherwiseFail, useSoftwareKsp.
     */
    keyStorageProvider?: KeyStorageProviderOption;
}
export interface Windows10PkcsCertificateProfile extends Windows10CertificateProfileBase {
    // Target store certificate. Possible values are: user, machine.
    certificateStore?: NullableOption<CertificateStore>;
    // PKCS Certificate Template Name
    certificateTemplateName?: string;
    // PKCS Certification Authority
    certificationAuthority?: string;
    // PKCS Certification Authority Name
    certificationAuthorityName?: string;
    // Custom Subject Alternative Name Settings. This collection can contain a maximum of 500 elements.
    customSubjectAlternativeNames?: NullableOption<CustomSubjectAlternativeName[]>;
    // Extended Key Usage (EKU) settings. This collection can contain a maximum of 500 elements.
    extendedKeyUsages?: NullableOption<ExtendedKeyUsage[]>;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface Windows10SecureAssessmentConfiguration extends DeviceConfiguration {
    // Indicates whether or not to allow the app from printing during the test.
    allowPrinting?: boolean;
    // Indicates whether or not to allow screen capture capability during a test.
    allowScreenCapture?: boolean;
    // Indicates whether or not to allow text suggestions during the test.
    allowTextSuggestion?: boolean;
    /**
     * Specifies the application user model ID of the assessment app launched when a user signs in to a secure assessment with
     * a local guest account. Important notice: this property must be set with localGuestAccountName in order to make the
     * local guest account sign-in experience work properly for secure assessments.
     */
    assessmentAppUserModelId?: NullableOption<string>;
    /**
     * The account used to configure the Windows device for taking the test. The user can be a domain account (domain/user),
     * an AAD account (username@tenant.com) or a local account (username).
     */
    configurationAccount?: NullableOption<string>;
    /**
     * The account type used to by ConfigurationAccount. Possible values are: azureADAccount, domainAccount, localAccount,
     * localGuestAccount.
     */
    configurationAccountType?: SecureAssessmentAccountType;
    /**
     * Url link to an assessment that's automatically loaded when the secure assessment browser is launched. It has to be a
     * valid Url (http[s]://msdn.microsoft.com/).
     */
    launchUri?: NullableOption<string>;
    /**
     * Specifies the display text for the local guest account shown on the sign-in screen. Typically is the name of an
     * assessment. When the user clicks the local guest account on the sign-in screen, an assessment app is launched with a
     * specified assessment URL. Secure assessments can only be configured with local guest account sign-in on devices running
     * Windows 10, version 1903 or later. Important notice: this property must be set with assessmentAppUserModelID in order
     * to make the local guest account sign-in experience work properly for secure assessments.
     */
    localGuestAccountName?: NullableOption<string>;
}
export interface Windows10TeamGeneralConfiguration extends DeviceConfiguration {
    // Indicates whether or not to Block Azure Operational Insights.
    azureOperationalInsightsBlockTelemetry?: boolean;
    // The Azure Operational Insights workspace id.
    azureOperationalInsightsWorkspaceId?: NullableOption<string>;
    // The Azure Operational Insights Workspace key.
    azureOperationalInsightsWorkspaceKey?: NullableOption<string>;
    // Specifies whether to automatically launch the Connect app whenever a projection is initiated.
    connectAppBlockAutoLaunch?: boolean;
    // Indicates whether or not to Block setting a maintenance window for device updates.
    maintenanceWindowBlocked?: boolean;
    // Maintenance window duration for device updates. Valid values 0 to 5
    maintenanceWindowDurationInHours?: NullableOption<number>;
    // Maintenance window start time for device updates.
    maintenanceWindowStartTime?: NullableOption<string>;
    // Indicates whether or not to Block wireless projection.
    miracastBlocked?: boolean;
    /**
     * The channel. Possible values are: userDefined, one, two, three, four, five, six, seven, eight, nine, ten, eleven,
     * thirtySix, forty, fortyFour, fortyEight, oneHundredFortyNine, oneHundredFiftyThree, oneHundredFiftySeven,
     * oneHundredSixtyOne, oneHundredSixtyFive.
     */
    miracastChannel?: MiracastChannel;
    // Indicates whether or not to require a pin for wireless projection.
    miracastRequirePin?: boolean;
    /**
     * Specifies whether to disable the 'My meetings and files' feature in the Start menu, which shows the signed-in user's
     * meetings and files from Office 365.
     */
    settingsBlockMyMeetingsAndFiles?: boolean;
    // Specifies whether to allow the ability to resume a session when the session times out.
    settingsBlockSessionResume?: boolean;
    // Specifies whether to disable auto-populating of the sign-in dialog with invitees from scheduled meetings.
    settingsBlockSigninSuggestions?: boolean;
    /**
     * Specifies the default volume value for a new session. Permitted values are 0-100. The default is 45. Valid values 0 to
     * 100
     */
    settingsDefaultVolume?: NullableOption<number>;
    // Specifies the number of minutes until the Hub screen turns off.
    settingsScreenTimeoutInMinutes?: NullableOption<number>;
    // Specifies the number of minutes until the session times out.
    settingsSessionTimeoutInMinutes?: NullableOption<number>;
    // Specifies the number of minutes until the Hub enters sleep mode.
    settingsSleepTimeoutInMinutes?: NullableOption<number>;
    // The welcome screen background image URL. The URL must use the HTTPS protocol and return a PNG image.
    welcomeScreenBackgroundImageUrl?: NullableOption<string>;
    // Indicates whether or not to Block the welcome screen from waking up automatically when someone enters the room.
    welcomeScreenBlockAutomaticWakeUp?: boolean;
    /**
     * The welcome screen meeting information shown. Possible values are: userDefined, showOrganizerAndTimeOnly,
     * showOrganizerAndTimeAndSubject.
     */
    welcomeScreenMeetingInformation?: WelcomeScreenMeetingInformation;
}
export interface WindowsVpnConfiguration extends DeviceConfiguration {
    // Connection name displayed to the user.
    connectionName?: string;
    // Custom XML commands that configures the VPN connection. (UTF8 encoded byte array)
    customXml?: NullableOption<number>;
    /**
     * List of VPN Servers on the network. Make sure end users can access these network locations. This collection can contain
     * a maximum of 500 elements.
     */
    servers?: VpnServer[];
}
export interface Windows10VpnConfiguration extends WindowsVpnConfiguration {
    // Associated Apps. This collection can contain a maximum of 10000 elements.
    associatedApps?: NullableOption<Windows10AssociatedApps[]>;
    // Authentication method. Possible values are: certificate, usernameAndPassword, customEapXml, derivedCredential.
    authenticationMethod?: Windows10VpnAuthenticationMethod;
    /**
     * Connection type. Possible values are: pulseSecure, f5EdgeClient, dellSonicWallMobileConnect, checkPointCapsuleVpn,
     * automatic, ikEv2, l2tp, pptp, citrix, paloAltoGlobalProtect, ciscoAnyConnect.
     */
    connectionType?: Windows10VpnConnectionType;
    // Cryptography Suite security settings for IKEv2 VPN in Windows10 and above
    cryptographySuite?: NullableOption<CryptographySuite>;
    // DNS rules. This collection can contain a maximum of 1000 elements.
    dnsRules?: NullableOption<VpnDnsRule[]>;
    // Specify DNS suffixes to add to the DNS search list to properly route short names.
    dnsSuffixes?: NullableOption<string[]>;
    // Extensible Authentication Protocol (EAP) XML. (UTF8 encoded byte array)
    eapXml?: NullableOption<number>;
    // Enable Always On mode.
    enableAlwaysOn?: NullableOption<boolean>;
    // Enable conditional access.
    enableConditionalAccess?: boolean;
    // Enable device tunnel.
    enableDeviceTunnel?: NullableOption<boolean>;
    // Enable IP address registration with internal DNS.
    enableDnsRegistration?: NullableOption<boolean>;
    // Enable single sign-on (SSO) with alternate certificate.
    enableSingleSignOnWithAlternateCertificate?: boolean;
    // Enable split tunneling.
    enableSplitTunneling?: boolean;
    // Only associated Apps can use connection (per-app VPN).
    onlyAssociatedAppsCanUseConnection?: NullableOption<boolean>;
    // Profile target type. Possible values are: user, device, autoPilotDevice.
    profileTarget?: NullableOption<Windows10VpnProfileTarget>;
    // Proxy Server.
    proxyServer?: NullableOption<Windows10VpnProxyServer>;
    // Remember user credentials.
    rememberUserCredentials?: boolean;
    // Routes (optional for third-party providers). This collection can contain a maximum of 1000 elements.
    routes?: NullableOption<VpnRoute[]>;
    // Single sign-on Extended Key Usage (EKU).
    singleSignOnEku?: NullableOption<ExtendedKeyUsage>;
    // Single sign-on issuer hash.
    singleSignOnIssuerHash?: NullableOption<string>;
    // Traffic rules. This collection can contain a maximum of 1000 elements.
    trafficRules?: NullableOption<VpnTrafficRule[]>;
    // Trusted Network Domains
    trustedNetworkDomains?: NullableOption<string[]>;
    // Windows Information Protection (WIP) domain to associate with this connection.
    windowsInformationProtectionDomain?: NullableOption<string>;
    // Identity certificate for client authentication when authentication method is certificate.
    identityCertificate?: NullableOption<WindowsCertificateProfileBase>;
}
export interface Windows81CertificateProfileBase extends WindowsCertificateProfileBase {
    // Custom Subject Alternative Name Settings. This collection can contain a maximum of 500 elements.
    customSubjectAlternativeNames?: NullableOption<CustomSubjectAlternativeName[]>;
    // Extended Key Usage (EKU) settings. This collection can contain a maximum of 500 elements.
    extendedKeyUsages?: ExtendedKeyUsage[];
}
export interface Windows81CompliancePolicy extends DeviceCompliancePolicy {
    // Maximum Windows 8.1 version.
    osMaximumVersion?: NullableOption<string>;
    // Minimum Windows 8.1 version.
    osMinimumVersion?: NullableOption<string>;
    // Indicates whether or not to block simple password.
    passwordBlockSimple?: boolean;
    // Password expiration in days.
    passwordExpirationDays?: NullableOption<number>;
    // The number of character sets required in the password.
    passwordMinimumCharacterSetCount?: NullableOption<number>;
    // The minimum password length.
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before a password is required.
    passwordMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // The number of previous passwords to prevent re-use of. Valid values 0 to 24
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Require a password to unlock Windows device.
    passwordRequired?: boolean;
    // The required password type. Possible values are: deviceDefault, alphanumeric, numeric.
    passwordRequiredType?: RequiredPasswordType;
    // Indicates whether or not to require encryption on a windows 8.1 device.
    storageRequireEncryption?: boolean;
}
export interface Windows81GeneralConfiguration extends DeviceConfiguration {
    /**
     * Indicates whether or not to Block the user from adding email accounts to the device that are not associated with a
     * Microsoft account.
     */
    accountsBlockAddingNonMicrosoftAccountEmail?: boolean;
    // Value indicating whether this policy only applies to Windows 8.1. This property is read-only.
    applyOnlyToWindows81?: boolean;
    // Indicates whether or not to block auto fill.
    browserBlockAutofill?: boolean;
    // Indicates whether or not to block automatic detection of Intranet sites.
    browserBlockAutomaticDetectionOfIntranetSites?: boolean;
    // Indicates whether or not to block enterprise mode access.
    browserBlockEnterpriseModeAccess?: boolean;
    // Indicates whether or not to Block the user from using JavaScript.
    browserBlockJavaScript?: boolean;
    // Indicates whether or not to block plug-ins.
    browserBlockPlugins?: boolean;
    // Indicates whether or not to block popups.
    browserBlockPopups?: boolean;
    // Indicates whether or not to Block the user from sending the do not track header.
    browserBlockSendingDoNotTrackHeader?: boolean;
    // Indicates whether or not to block a single word entry on Intranet sites.
    browserBlockSingleWordEntryOnIntranetSites?: boolean;
    // The enterprise mode site list location. Could be a local file, local network or http location.
    browserEnterpriseModeSiteListLocation?: NullableOption<string>;
    // The internet security level. Possible values are: userDefined, medium, mediumHigh, high.
    browserInternetSecurityLevel?: InternetSiteSecurityLevel;
    // The Intranet security level. Possible values are: userDefined, low, mediumLow, medium, mediumHigh, high.
    browserIntranetSecurityLevel?: SiteSecurityLevel;
    // The logging report location.
    browserLoggingReportLocation?: NullableOption<string>;
    // Indicates whether or not to require a firewall.
    browserRequireFirewall?: boolean;
    // Indicates whether or not to require fraud warning.
    browserRequireFraudWarning?: boolean;
    // Indicates whether or not to require high security for restricted sites.
    browserRequireHighSecurityForRestrictedSites?: boolean;
    // Indicates whether or not to require the user to use the smart screen filter.
    browserRequireSmartScreen?: boolean;
    // The trusted sites security level. Possible values are: userDefined, low, mediumLow, medium, mediumHigh, high.
    browserTrustedSitesSecurityLevel?: SiteSecurityLevel;
    // Indicates whether or not to block data roaming.
    cellularBlockDataRoaming?: boolean;
    // Indicates whether or not to block diagnostic data submission.
    diagnosticsBlockDataSubmission?: boolean;
    /**
     * The minimum update classification to install automatically. Possible values are: userDefined, recommendedAndImportant,
     * important, none.
     */
    minimumAutoInstallClassification?: UpdateClassification;
    // Indicates whether or not to Block the user from using a pictures password and pin.
    passwordBlockPicturePasswordAndPin?: boolean;
    // Password expiration in days.
    passwordExpirationDays?: NullableOption<number>;
    // The number of character sets required in the password.
    passwordMinimumCharacterSetCount?: NullableOption<number>;
    // The minimum password length.
    passwordMinimumLength?: NullableOption<number>;
    // The minutes of inactivity before the screen times out.
    passwordMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    // The number of previous passwords to prevent re-use of. Valid values 0 to 24
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // The required password type. Possible values are: deviceDefault, alphanumeric, numeric.
    passwordRequiredType?: RequiredPasswordType;
    // The number of sign in failures before factory reset.
    passwordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    // Indicates whether or not to require encryption on a mobile device.
    storageRequireDeviceEncryption?: boolean;
    /**
     * The minimum update classification to install automatically. Possible values are: userDefined, recommendedAndImportant,
     * important, none.
     */
    updatesMinimumAutoInstallClassification?: UpdateClassification;
    // Indicates whether or not to require automatic updates.
    updatesRequireAutomaticUpdates?: boolean;
    /**
     * The user account control settings. Possible values are: userDefined, alwaysNotify, notifyOnAppChanges,
     * notifyOnAppChangesWithoutDimming, neverNotify.
     */
    userAccountControlSettings?: WindowsUserAccountControlSettings;
    // The work folders url.
    workFoldersUrl?: NullableOption<string>;
}
export interface Windows81SCEPCertificateProfile extends Windows81CertificateProfileBase {
    // Target store certificate. Possible values are: user, machine.
    certificateStore?: NullableOption<CertificateStore>;
    // SCEP Hash Algorithm. Possible values are: sha1, sha2.
    hashAlgorithm?: HashAlgorithms;
    // SCEP Key Size. Possible values are: size1024, size2048, size4096.
    keySize?: KeySize;
    // SCEP Key Usage. Possible values are: keyEncipherment, digitalSignature.
    keyUsage?: KeyUsages;
    // SCEP Server Url(s).
    scepServerUrls?: NullableOption<string[]>;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
    // Trusted Root Certificate
    rootCertificate?: NullableOption<Windows81TrustedRootCertificate>;
}
export interface Windows81TrustedRootCertificate extends DeviceConfiguration {
    // File name to display in UI.
    certFileName?: NullableOption<string>;
    /**
     * Destination store location for the Trusted Root Certificate. Possible values are: computerCertStoreRoot,
     * computerCertStoreIntermediate, userCertStoreIntermediate.
     */
    destinationStore?: CertificateDestinationStore;
    // Trusted Root Certificate
    trustedRootCertificate?: number;
}
export interface Windows81VpnConfiguration extends WindowsVpnConfiguration {
    // Value indicating whether this policy only applies to Windows 8.1. This property is read-only.
    applyOnlyToWindows81?: boolean;
    // Connection type. Possible values are: pulseSecure, f5EdgeClient, dellSonicWallMobileConnect, checkPointCapsuleVpn.
    connectionType?: WindowsVpnConnectionType;
    // Enable split tunneling for the VPN.
    enableSplitTunneling?: boolean;
    // Login group or domain when connection type is set to Dell SonicWALL Mobile Connection.
    loginGroupOrDomain?: NullableOption<string>;
    // Proxy Server.
    proxyServer?: NullableOption<Windows81VpnProxyServer>;
}
export interface Windows81WifiImportConfiguration extends DeviceConfiguration {
    // Payload. (UTF8 encoded byte array). This is the XML file saved on the device you used to connect to the Wi-Fi endpoint.
    payload?: number;
    // Payload file name (.xml).
    payloadFileName?: string;
    // Profile name displayed in the UI.
    profileName?: string;
}
export interface WindowsAssignedAccessProfile extends Entity {
    // These are the only Windows Store Apps that will be available to launch from the Start menu.
    appUserModelIds?: NullableOption<string[]>;
    /**
     * These are the paths of the Desktop Apps that will be available on the Start menu and the only apps the user will be
     * able to launch.
     */
    desktopAppPaths?: NullableOption<string[]>;
    /**
     * This is a friendly name used to identify a group of applications, the layout of these apps on the start menu and the
     * users to whom this kiosk configuration is assigned.
     */
    profileName?: string;
    // This setting allows the admin to specify whether the Task Bar is shown or not.
    showTaskBar?: boolean;
    /**
     * Allows admins to override the default Start layout and prevents the user from changing it. The layout is modified by
     * specifying an XML file based on a layout modification schema. XML needs to be in Binary format.
     */
    startMenuLayoutXml?: number;
    // The user accounts that will be locked to this kiosk configuration.
    userAccounts?: NullableOption<string[]>;
}
export interface WindowsDefenderAdvancedThreatProtectionConfiguration extends DeviceConfiguration {
    // Auto populate onboarding blob programmatically from Advanced Threat protection service
    advancedThreatProtectionAutoPopulateOnboardingBlob?: boolean;
    // Windows Defender AdvancedThreatProtection Offboarding Blob.
    advancedThreatProtectionOffboardingBlob?: NullableOption<string>;
    // Name of the file from which AdvancedThreatProtectionOffboardingBlob was obtained.
    advancedThreatProtectionOffboardingFilename?: NullableOption<string>;
    // Windows Defender AdvancedThreatProtection Onboarding Blob.
    advancedThreatProtectionOnboardingBlob?: NullableOption<string>;
    // Name of the file from which AdvancedThreatProtectionOnboardingBlob was obtained.
    advancedThreatProtectionOnboardingFilename?: NullableOption<string>;
    // Windows Defender AdvancedThreatProtection 'Allow Sample Sharing' Rule
    allowSampleSharing?: boolean;
    // Expedite Windows Defender Advanced Threat Protection telemetry reporting frequency.
    enableExpeditedTelemetryReporting?: boolean;
}
export interface WindowsDeliveryOptimizationConfiguration extends DeviceConfiguration {
    /**
     * Specifies number of seconds to delay an HTTP source in a background download that is allowed to use peer-to-peer. Valid
     * values 0 to 4294967295
     */
    backgroundDownloadFromHttpDelayInSeconds?: number;
    // Specifies foreground and background bandwidth usage using percentages, absolutes, or hours.
    bandwidthMode?: NullableOption<DeliveryOptimizationBandwidth>;
    /**
     * Specifies number of seconds to delay a fall back from cache servers to an HTTP source for a background download. Valid
     * values 0 to 2592000.
     */
    cacheServerBackgroundDownloadFallbackToHttpDelayInSeconds?: number;
    /**
     * Specifies number of seconds to delay a fall back from cache servers to an HTTP source for a foreground download. Valid
     * values 0 to 2592000.
     */
    cacheServerForegroundDownloadFallbackToHttpDelayInSeconds?: number;
    // Specifies cache servers host names.
    cacheServerHostNames?: NullableOption<string[]>;
    /**
     * Specifies the download method that delivery optimization can use to manage network bandwidth consumption for large
     * content distribution scenarios. Possible values are: userDefined, httpOnly, httpWithPeeringNat,
     * httpWithPeeringPrivateGroup, httpWithInternetPeering, simpleDownload, bypassMode.
     */
    deliveryOptimizationMode?: WindowsDeliveryOptimizationMode;
    // Specifying 0 sets Delivery Optimization to manage this setting using the cloud service. Valid values 0 to 86400
    foregroundDownloadFromHttpDelayInSeconds?: NullableOption<number>;
    /**
     * The options set in this policy only apply to Delivery Optimization mode Group (2) download mode. If Group (2) isn't set
     * as Download mode, this policy will be ignored. For option 3 - DHCP Option ID, the client will query DHCP Option ID 234
     * and use the returned GUID value as the Group ID.
     */
    groupIdSource?: NullableOption<DeliveryOptimizationGroupIdSource>;
    /**
     * Specifies the maximum time in days that each file is held in the Delivery Optimization cache after downloading
     * successfully (0-3650). Valid values 0 to 3650
     */
    maximumCacheAgeInDays?: NullableOption<number>;
    // Specifies the maximum cache size that Delivery Optimization either as a percentage or in GB.
    maximumCacheSize?: NullableOption<DeliveryOptimizationMaxCacheSize>;
    /**
     * The default value is 0. The value 0 (zero) means "not limited" and the cloud service default value will be used. Valid
     * values 0 to 100
     */
    minimumBatteryPercentageAllowedToUpload?: NullableOption<number>;
    // Recommended values: 64 GB to 256 GB. Valid values 1 to 100000
    minimumDiskSizeAllowedToPeerInGigabytes?: NullableOption<number>;
    // Recommended values: 1 MB to 100,000 MB. Valid values 1 to 100000
    minimumFileSizeToCacheInMegabytes?: NullableOption<number>;
    // Specifies the minimum RAM size in GB to use Peer Caching (1-100000). Valid values 1 to 100000
    minimumRamAllowedToPeerInGigabytes?: NullableOption<number>;
    // Specifies the drive that Delivery Optimization should use for its cache.
    modifyCacheLocation?: NullableOption<string>;
    // Option 1 (Subnet mask) only applies to Delivery Optimization modes Download Mode LAN (1) and Group (2).
    restrictPeerSelectionBy?: DeliveryOptimizationRestrictPeerSelectionByOptions;
    // Specifies whether the device is allowed to participate in Peer Caching while connected via VPN to the domain network.
    vpnPeerCaching?: Enablement;
}
export interface WindowsDomainJoinConfiguration extends DeviceConfiguration {
    // Active Directory domain name to join.
    activeDirectoryDomainName?: string;
    // Fixed prefix to be used for computer name.
    computerNameStaticPrefix?: string;
    // Dynamically generated characters used as suffix for computer name. Valid values 3 to 14
    computerNameSuffixRandomCharCount?: number;
    /**
     * Organizational unit (OU) where the computer account will be created. If this parameter is NULL, the well known computer
     * object container will be used as published in the domain.
     */
    organizationalUnit?: NullableOption<string>;
    // Reference to device configurations required for network connectivity
    networkAccessConfigurations?: NullableOption<DeviceConfiguration[]>;
}
export interface WindowsHealthMonitoringConfiguration extends DeviceConfiguration {
    // Enables device health monitoring on the device. Possible values are: notConfigured, enabled, disabled.
    allowDeviceHealthMonitoring?: Enablement;
    // Specifies custom set of events collected from the device where health monitoring is enabled
    configDeviceHealthMonitoringCustomScope?: NullableOption<string>;
    /**
     * Specifies set of events collected from the device where health monitoring is enabled. Possible values are: undefined,
     * healthMonitoring, bootPerformance, windowsUpdates.
     */
    configDeviceHealthMonitoringScope?: WindowsHealthMonitoringScope;
}
export interface WindowsIdentityProtectionConfiguration extends DeviceConfiguration {
    /**
     * Boolean value used to enable enhanced anti-spoofing for facial feature recognition on Windows Hello face
     * authentication.
     */
    enhancedAntiSpoofingForFacialFeaturesEnabled?: boolean;
    /**
     * Integer value specifies the period (in days) that a PIN can be used before the system requires the user to change it.
     * Valid values are 0 to 730 inclusive. Valid values 0 to 730
     */
    pinExpirationInDays?: NullableOption<number>;
    /**
     * This value configures the use of lowercase characters in the Windows Hello for Business PIN. Possible values are:
     * blocked, required, allowed, notConfigured.
     */
    pinLowercaseCharactersUsage?: ConfigurationUsage;
    /**
     * Integer value that sets the maximum number of characters allowed for the work PIN. Valid values are 4 to 127 inclusive
     * and greater than or equal to the value set for the minimum PIN. Valid values 4 to 127
     */
    pinMaximumLength?: NullableOption<number>;
    /**
     * Integer value that sets the minimum number of characters required for the Windows Hello for Business PIN. Valid values
     * are 4 to 127 inclusive and less than or equal to the value set for the maximum PIN. Valid values 4 to 127
     */
    pinMinimumLength?: NullableOption<number>;
    /**
     * Controls the ability to prevent users from using past PINs. This must be set between 0 and 50, inclusive, and the
     * current PIN of the user is included in that count. If set to 0, previous PINs are not stored. PIN history is not
     * preserved through a PIN reset. Valid values 0 to 50
     */
    pinPreviousBlockCount?: NullableOption<number>;
    // Boolean value that enables a user to change their PIN by using the Windows Hello for Business PIN recovery service.
    pinRecoveryEnabled?: boolean;
    /**
     * Controls the ability to use special characters in the Windows Hello for Business PIN. Possible values are: blocked,
     * required, allowed, notConfigured.
     */
    pinSpecialCharactersUsage?: ConfigurationUsage;
    /**
     * This value configures the use of uppercase characters in the Windows Hello for Business PIN. Possible values are:
     * blocked, required, allowed, notConfigured.
     */
    pinUppercaseCharactersUsage?: ConfigurationUsage;
    /**
     * Controls whether to require a Trusted Platform Module (TPM) for provisioning Windows Hello for Business. A TPM provides
     * an additional security benefit in that data stored on it cannot be used on other devices. If set to False, all devices
     * can provision Windows Hello for Business even if there is not a usable TPM.
     */
    securityDeviceRequired?: boolean;
    /**
     * Controls the use of biometric gestures, such as face and fingerprint, as an alternative to the Windows Hello for
     * Business PIN. If set to False, biometric gestures are not allowed. Users must still configure a PIN as a backup in case
     * of failures.
     */
    unlockWithBiometricsEnabled?: boolean;
    // Boolean value that enables Windows Hello for Business to use certificates to authenticate on-premise resources.
    useCertificatesForOnPremisesAuthEnabled?: boolean;
    // Boolean value used to enable the Windows Hello security key as a logon credential.
    useSecurityKeyForSignin?: boolean;
    // Boolean value that blocks Windows Hello for Business as a method for signing into Windows.
    windowsHelloForBusinessBlocked?: NullableOption<boolean>;
}
export interface WindowsKioskConfiguration extends DeviceConfiguration {
    // Enable public browsing kiosk mode for the Microsoft Edge browser. The Default is false.
    edgeKioskEnablePublicBrowsing?: boolean;
    // Specify URLs that the kiosk browser is allowed to navigate to
    kioskBrowserBlockedUrlExceptions?: NullableOption<string[]>;
    // Specify URLs that the kiosk browsers should not navigate to
    kioskBrowserBlockedURLs?: NullableOption<string[]>;
    // Specify the default URL the browser should navigate to on launch.
    kioskBrowserDefaultUrl?: NullableOption<string>;
    // Enable the kiosk browser's end session button. By default, the end session button is disabled.
    kioskBrowserEnableEndSessionButton?: boolean;
    // Enable the kiosk browser's home button. By default, the home button is disabled.
    kioskBrowserEnableHomeButton?: boolean;
    // Enable the kiosk browser's navigation buttons(forward/back). By default, the navigation buttons are disabled.
    kioskBrowserEnableNavigationButtons?: boolean;
    /**
     * Specify the number of minutes the session is idle until the kiosk browser restarts in a fresh state. Valid values are
     * 1-1440. Valid values 1 to 1440
     */
    kioskBrowserRestartOnIdleTimeInMinutes?: NullableOption<number>;
    /**
     * This policy setting allows to define a list of Kiosk profiles for a Kiosk configuration. This collection can contain a
     * maximum of 3 elements.
     */
    kioskProfiles?: NullableOption<WindowsKioskProfile[]>;
    // force update schedule for Kiosk devices.
    windowsKioskForceUpdateSchedule?: NullableOption<WindowsKioskForceUpdateSchedule>;
}
export interface WindowsPhone81CertificateProfileBase extends DeviceConfiguration {
    // Scale for the Certificate Validity Period. Possible values are: days, months, years.
    certificateValidityPeriodScale?: CertificateValidityPeriodScale;
    // Value for the Certificate Validtiy Period.
    certificateValidityPeriodValue?: number;
    // Extended Key Usage (EKU) settings. This collection can contain a maximum of 500 elements.
    extendedKeyUsages?: ExtendedKeyUsage[];
    /**
     * Key Storage Provider (KSP). Possible values are: useTpmKspOtherwiseUseSoftwareKsp, useTpmKspOtherwiseFail,
     * usePassportForWorkKspOtherwiseFail, useSoftwareKsp.
     */
    keyStorageProvider?: KeyStorageProviderOption;
    // Certificate renewal threshold percentage.
    renewalThresholdPercentage?: number;
    /**
     * Certificate Subject Alternative Name Type. Possible values are: none, emailAddress, userPrincipalName,
     * customAzureADAttribute, domainNameService, universalResourceIdentifier.
     */
    subjectAlternativeNameType?: SubjectAlternativeNameType;
    /**
     * Certificate Subject Name Format. Possible values are: commonName, commonNameIncludingEmail, commonNameAsEmail, custom,
     * commonNameAsIMEI, commonNameAsSerialNumber, commonNameAsAadDeviceId, commonNameAsIntuneDeviceId,
     * commonNameAsDurableDeviceId.
     */
    subjectNameFormat?: SubjectNameFormat;
}
export interface WindowsPhone81CompliancePolicy extends DeviceCompliancePolicy {
    // Maximum Windows Phone version.
    osMaximumVersion?: NullableOption<string>;
    // Minimum Windows Phone version.
    osMinimumVersion?: NullableOption<string>;
    // Whether or not to block syncing the calendar.
    passwordBlockSimple?: boolean;
    // Number of days before the password expires.
    passwordExpirationDays?: NullableOption<number>;
    // The number of character sets required in the password.
    passwordMinimumCharacterSetCount?: NullableOption<number>;
    // Minimum length of passwords.
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before a password is required.
    passwordMinutesOfInactivityBeforeLock?: NullableOption<number>;
    // Number of previous passwords to block. Valid values 0 to 24
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Whether or not to require a password.
    passwordRequired?: boolean;
    // The required password type. Possible values are: deviceDefault, alphanumeric, numeric.
    passwordRequiredType?: RequiredPasswordType;
    // Require encryption on windows phone devices.
    storageRequireEncryption?: boolean;
}
export interface WindowsPhone81CustomConfiguration extends DeviceConfiguration {
    // OMA settings. This collection can contain a maximum of 1000 elements.
    omaSettings?: NullableOption<OmaSetting[]>;
}
export interface WindowsPhone81GeneralConfiguration extends DeviceConfiguration {
    // Value indicating whether this policy only applies to Windows Phone 8.1. This property is read-only.
    applyOnlyToWindowsPhone81?: boolean;
    // Indicates whether or not to block copy paste.
    appsBlockCopyPaste?: boolean;
    // Indicates whether or not to block bluetooth.
    bluetoothBlocked?: boolean;
    // Indicates whether or not to block camera.
    cameraBlocked?: boolean;
    // Indicates whether or not to block Wi-Fi tethering. Has no impact if Wi-Fi is blocked.
    cellularBlockWifiTethering?: boolean;
    // List that is in the AppComplianceList. Possible values are: none, appsInListCompliant, appsNotInListCompliant.
    compliantAppListType?: AppListType;
    /**
     * List of apps in the compliance (either allow list or block list, controlled by CompliantAppListType). This collection
     * can contain a maximum of 10000 elements.
     */
    compliantAppsList?: NullableOption<AppListItem[]>;
    // Indicates whether or not to block diagnostic data submission.
    diagnosticDataBlockSubmission?: boolean;
    // Indicates whether or not to block custom email accounts.
    emailBlockAddingAccounts?: boolean;
    // Indicates whether or not to block location services.
    locationServicesBlocked?: boolean;
    // Indicates whether or not to block using a Microsoft Account.
    microsoftAccountBlocked?: boolean;
    // Indicates whether or not to block Near-Field Communication.
    nfcBlocked?: boolean;
    // Indicates whether or not to block syncing the calendar.
    passwordBlockSimple?: boolean;
    // Number of days before the password expires.
    passwordExpirationDays?: NullableOption<number>;
    // Number of character sets a password must contain.
    passwordMinimumCharacterSetCount?: NullableOption<number>;
    // Minimum length of passwords.
    passwordMinimumLength?: NullableOption<number>;
    // Minutes of inactivity before screen timeout.
    passwordMinutesOfInactivityBeforeScreenTimeout?: NullableOption<number>;
    // Number of previous passwords to block. Valid values 0 to 24
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Indicates whether or not to require a password.
    passwordRequired?: boolean;
    // Password type that is required. Possible values are: deviceDefault, alphanumeric, numeric.
    passwordRequiredType?: RequiredPasswordType;
    // Number of sign in failures allowed before factory reset.
    passwordSignInFailureCountBeforeFactoryReset?: NullableOption<number>;
    // Indicates whether or not to block screenshots.
    screenCaptureBlocked?: boolean;
    // Indicates whether or not to block removable storage.
    storageBlockRemovableStorage?: boolean;
    // Indicates whether or not to require encryption.
    storageRequireEncryption?: boolean;
    // Indicates whether or not to block the web browser.
    webBrowserBlocked?: boolean;
    // Indicates whether or not to block automatically connecting to Wi-Fi hotspots. Has no impact if Wi-Fi is blocked.
    wifiBlockAutomaticConnectHotspots?: boolean;
    // Indicates whether or not to block Wi-Fi.
    wifiBlocked?: boolean;
    // Indicates whether or not to block Wi-Fi hotspot reporting. Has no impact if Wi-Fi is blocked.
    wifiBlockHotspotReporting?: boolean;
    // Indicates whether or not to block the Windows Store.
    windowsStoreBlocked?: boolean;
}
export interface WindowsPhone81ImportedPFXCertificateProfile extends WindowsCertificateProfileBase {
    /**
     * Intended Purpose of the Certificate Profile - which could be Unassigned, SmimeEncryption, SmimeSigning etc. Possible
     * values are: unassigned, smimeEncryption, smimeSigning, vpn, wifi.
     */
    intendedPurpose?: IntendedPurpose;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
}
export interface WindowsPhone81SCEPCertificateProfile extends WindowsPhone81CertificateProfileBase {
    // SCEP Hash Algorithm. Possible values are: sha1, sha2.
    hashAlgorithm?: HashAlgorithms;
    // SCEP Key Size. Possible values are: size1024, size2048, size4096.
    keySize?: KeySize;
    // SCEP Key Usage. Possible values are: keyEncipherment, digitalSignature.
    keyUsage?: KeyUsages;
    // SCEP Server Url(s).
    scepServerUrls?: NullableOption<string[]>;
    // Custom String that defines the AAD Attribute.
    subjectAlternativeNameFormatString?: NullableOption<string>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
    // Certificate state for devices
    managedDeviceCertificateStates?: NullableOption<ManagedDeviceCertificateState[]>;
    // Trusted Root Certificate.
    rootCertificate?: NullableOption<WindowsPhone81TrustedRootCertificate>;
}
export interface WindowsPhone81TrustedRootCertificate extends DeviceConfiguration {
    // File name to display in UI.
    certFileName?: NullableOption<string>;
    // Trusted Root Certificate
    trustedRootCertificate?: number;
}
export interface WindowsPhone81VpnConfiguration extends Windows81VpnConfiguration {
    // Authentication method. Possible values are: certificate, usernameAndPassword, sharedSecret, derivedCredential, azureAD.
    authenticationMethod?: VpnAuthenticationMethod;
    // Bypass VPN on company Wi-Fi.
    bypassVpnOnCompanyWifi?: boolean;
    // Bypass VPN on home Wi-Fi.
    bypassVpnOnHomeWifi?: boolean;
    // DNS suffix search list.
    dnsSuffixSearchList?: NullableOption<string[]>;
    // Remember user credentials.
    rememberUserCredentials?: boolean;
    // Identity certificate for client authentication when authentication method is certificate.
    identityCertificate?: NullableOption<WindowsPhone81CertificateProfileBase>;
}
export interface WindowsPhoneEASEmailProfileConfiguration extends EasEmailProfileConfigurationBase {
    // Account name.
    accountName?: string;
    // Value indicating whether this policy only applies to Windows 8.1. This property is read-only.
    applyOnlyToWindowsPhone81?: boolean;
    // Duration of email to sync. Possible values are: userDefined, oneDay, threeDays, oneWeek, twoWeeks, oneMonth, unlimited.
    durationOfEmailToSync?: EmailSyncDuration;
    /**
     * Email attribute that is picked from AAD and injected into this profile before installing on the device. Possible values
     * are: userPrincipalName, primarySmtpAddress.
     */
    emailAddressSource?: NullableOption<UserEmailSource>;
    /**
     * Email sync schedule. Possible values are: userDefined, asMessagesArrive, manual, fifteenMinutes, thirtyMinutes,
     * sixtyMinutes, basedOnMyUsage.
     */
    emailSyncSchedule?: EmailSyncSchedule;
    // Exchange location that (URL) that the native mail app connects to.
    hostName?: string;
    // Indicates whether or not to use SSL.
    requireSsl?: boolean;
    // Whether or not to sync the calendar.
    syncCalendar?: boolean;
    // Whether or not to sync contacts.
    syncContacts?: boolean;
    // Whether or not to sync tasks.
    syncTasks?: boolean;
}
export interface WindowsUpdateForBusinessConfiguration extends DeviceConfiguration {
    /**
     * Automatic update mode. Possible values are: userDefined, notifyDownload, autoInstallAtMaintenanceTime,
     * autoInstallAndRebootAtMaintenanceTime, autoInstallAndRebootAtScheduledTime, autoInstallAndRebootWithoutEndUserControl,
     * windowsDefault.
     */
    automaticUpdateMode?: AutomaticUpdateMode;
    /**
     * Specify the method by which the auto-restart required notification is dismissed. Possible values are: notConfigured,
     * automatic, user.
     */
    autoRestartNotificationDismissal?: AutoRestartNotificationDismissalMethod;
    /**
     * Determines which branch devices will receive their updates from. Possible values are: userDefined, all,
     * businessReadyOnly, windowsInsiderBuildFast, windowsInsiderBuildSlow, windowsInsiderBuildRelease.
     */
    businessReadyUpdatesOnly?: WindowsUpdateType;
    // Number of days before feature updates are installed automatically with valid range from 2 to 30 days
    deadlineForFeatureUpdatesInDays?: NullableOption<number>;
    // Number of days before quality updates are installed automatically with valid range from 2 to 30 days
    deadlineForQualityUpdatesInDays?: NullableOption<number>;
    // Number of days after deadline until restarts occur automatically with valid range from 0 to 7 days
    deadlineGracePeriodInDays?: NullableOption<number>;
    /**
     * Delivery Optimization Mode. Possible values are: userDefined, httpOnly, httpWithPeeringNat,
     * httpWithPeeringPrivateGroup, httpWithInternetPeering, simpleDownload, bypassMode.
     */
    deliveryOptimizationMode?: WindowsDeliveryOptimizationMode;
    // Exclude Windows update Drivers
    driversExcluded?: boolean;
    /**
     * Deadline in days before automatically scheduling and executing a pending restart outside of active hours, with valid
     * range from 2 to 30 days
     */
    engagedRestartDeadlineInDays?: NullableOption<number>;
    // Number of days a user can snooze Engaged Restart reminder notifications with valid range from 1 to 3 days
    engagedRestartSnoozeScheduleInDays?: NullableOption<number>;
    /**
     * Number of days before transitioning from Auto Restarts scheduled outside of active hours to Engaged Restart, which
     * requires the user to schedule, with valid range from 0 to 30 days
     */
    engagedRestartTransitionScheduleInDays?: NullableOption<number>;
    // Defer Feature Updates by these many days
    featureUpdatesDeferralPeriodInDays?: number;
    // Pause Feature Updates
    featureUpdatesPaused?: boolean;
    // Feature Updates Pause Expiry datetime
    featureUpdatesPauseExpiryDateTime?: string;
    // Feature Updates Pause start date. This property is read-only.
    featureUpdatesPauseStartDate?: NullableOption<string>;
    // Feature Updates Rollback Start datetime
    featureUpdatesRollbackStartDateTime?: string;
    // The number of days after a Feature Update for which a rollback is valid
    featureUpdatesRollbackWindowInDays?: NullableOption<number>;
    // Specifies whether to rollback Feature Updates on the next device check in
    featureUpdatesWillBeRolledBack?: NullableOption<boolean>;
    // Installation schedule
    installationSchedule?: NullableOption<WindowsUpdateInstallScheduleType>;
    // Allow Microsoft Update Service
    microsoftUpdateServiceAllowed?: boolean;
    // Specifies if the device should wait until deadline for rebooting outside of active hours
    postponeRebootUntilAfterDeadline?: NullableOption<boolean>;
    // The pre-release features. Possible values are: userDefined, settingsOnly, settingsAndExperimentations, notAllowed.
    prereleaseFeatures?: PrereleaseFeatures;
    // Defer Quality Updates by these many days
    qualityUpdatesDeferralPeriodInDays?: number;
    // Pause Quality Updates
    qualityUpdatesPaused?: boolean;
    // Quality Updates Pause Expiry datetime
    qualityUpdatesPauseExpiryDateTime?: string;
    // Quality Updates Pause start date. This property is read-only.
    qualityUpdatesPauseStartDate?: NullableOption<string>;
    // Quality Updates Rollback Start datetime
    qualityUpdatesRollbackStartDateTime?: string;
    // Specifies whether to rollback Quality Updates on the next device check in
    qualityUpdatesWillBeRolledBack?: NullableOption<boolean>;
    // Specify the period for auto-restart imminent warning notifications. Supported values: 15, 30 or 60 (minutes).
    scheduleImminentRestartWarningInMinutes?: NullableOption<number>;
    // Specify the period for auto-restart warning reminder notifications. Supported values: 2, 4, 8, 12 or 24 (hours).
    scheduleRestartWarningInHours?: NullableOption<number>;
    /**
     * Set to skip all check before restart: Battery level = 40%, User presence, Display Needed, Presentation mode, Full
     * screen mode, phone call state, game mode etc.
     */
    skipChecksBeforeRestart?: boolean;
    /**
     * Specifies what Windows Update notifications users see. Possible values are: notConfigured, defaultNotifications,
     * restartWarningsOnly, disableAllNotifications.
     */
    updateNotificationLevel?: WindowsUpdateNotificationDisplayOption;
    /**
     * Scheduled the update installation on the weeks of the month. Possible values are: userDefined, firstWeek, secondWeek,
     * thirdWeek, fourthWeek, everyWeek.
     */
    updateWeeks?: NullableOption<WindowsUpdateForBusinessUpdateWeeks>;
    /**
     * Specifies whether to enable end user’s access to pause software updates. Possible values are: notConfigured, enabled,
     * disabled.
     */
    userPauseAccess?: Enablement;
    /**
     * Specifies whether to disable user’s access to scan Windows Update. Possible values are: notConfigured, enabled,
     * disabled.
     */
    userWindowsUpdateScanAccess?: Enablement;
    // Windows update for business configuration device states.
    deviceUpdateStates?: NullableOption<WindowsUpdateState[]>;
}
export interface WindowsUpdateState extends Entity {
    // Device display name.
    deviceDisplayName?: NullableOption<string>;
    // The id of the device.
    deviceId?: NullableOption<string>;
    // The current feature update version of the device.
    featureUpdateVersion?: NullableOption<string>;
    // The date time that the Windows Update Agent did a successful scan.
    lastScanDateTime?: string;
    // Last date time that the device sync with with Microsoft Intune.
    lastSyncDateTime?: string;
    // The Quality Update Version of the device.
    qualityUpdateVersion?: NullableOption<string>;
    // Windows udpate status. Possible values are: upToDate, pendingInstallation, pendingReboot, failed.
    status?: WindowsUpdateStatus;
    // The id of the user.
    userId?: NullableOption<string>;
    // User principal name.
    userPrincipalName?: NullableOption<string>;
}
export interface WindowsWifiConfiguration extends DeviceConfiguration {
    // Specify whether the wifi connection should connect automatically when in range.
    connectAutomatically?: NullableOption<boolean>;
    /**
     * Specify whether the wifi connection should connect to more preferred networks when already connected to this one.
     * Requires ConnectAutomatically to be true.
     */
    connectToPreferredNetwork?: NullableOption<boolean>;
    // Specify whether the wifi connection should connect automatically even when the SSID is not broadcasting.
    connectWhenNetworkNameIsHidden?: NullableOption<boolean>;
    // Specify whether to force FIPS compliance.
    forceFIPSCompliance?: NullableOption<boolean>;
    // Specify the metered connection limit type for the wifi connection. Possible values are: unrestricted, fixed, variable.
    meteredConnectionLimit?: NullableOption<MeteredConnectionLimitType>;
    // Specify the network configuration name.
    networkName?: NullableOption<string>;
    // This is the pre-shared key for WPA Personal Wi-Fi network.
    preSharedKey?: NullableOption<string>;
    // Specify the URL for the proxy server configuration script.
    proxyAutomaticConfigurationUrl?: NullableOption<string>;
    // Specify the IP address for the proxy server.
    proxyManualAddress?: NullableOption<string>;
    // Specify the port for the proxy server.
    proxyManualPort?: NullableOption<number>;
    // Specify the proxy setting for Wi-Fi configuration. Possible values are: none, manual, automatic.
    proxySetting?: NullableOption<WiFiProxySetting>;
    // Specify the SSID of the wifi connection.
    ssid?: NullableOption<string>;
    /**
     * Specify the Wifi Security Type. Possible values are: open, wpaPersonal, wpaEnterprise, wep, wpa2Personal,
     * wpa2Enterprise.
     */
    wifiSecurityType?: NullableOption<WiFiSecurityType>;
}
export interface WindowsWifiEnterpriseEAPConfiguration extends WindowsWifiConfiguration {
    // Specify the authentication method. Possible values are: certificate, usernameAndPassword, derivedCredential.
    authenticationMethod?: NullableOption<WiFiAuthenticationMethod>;
    /**
     * Specify the number of seconds for the client to wait after an authentication attempt before failing. Valid range
     * 1-3600.
     */
    authenticationPeriodInSeconds?: NullableOption<number>;
    // Specify the number of seconds between a failed authentication and the next authentication attempt. Valid range 1-3600.
    authenticationRetryDelayPeriodInSeconds?: NullableOption<number>;
    /**
     * Specify whether to authenticate the user, the device, either, or to use guest authentication (none). If you’re using
     * certificate authentication, make sure the certificate type matches the authentication type. Possible values are: none,
     * user, machine, machineOrUser, guest.
     */
    authenticationType?: NullableOption<WifiAuthenticationType>;
    /**
     * Specify whether to cache user credentials on the device so that users don’t need to keep entering them each time they
     * connect.
     */
    cacheCredentials?: NullableOption<boolean>;
    /**
     * Specify whether to prevent the user from being prompted to authorize new servers for trusted certification authorities
     * when EAP type is selected as PEAP.
     */
    disableUserPromptForServerValidation?: NullableOption<boolean>;
    /**
     * Specify the number of seconds to wait before sending an EAPOL (Extensible Authentication Protocol over LAN) Start
     * message. Valid range 1-3600.
     */
    eapolStartPeriodInSeconds?: NullableOption<number>;
    /**
     * Extensible Authentication Protocol (EAP). Indicates the type of EAP protocol set on the Wi-Fi endpoint (router).
     * Possible values are: eapTls, leap, eapSim, eapTtls, peap, eapFast.
     */
    eapType?: EapType;
    // Specify whether the wifi connection should enable pairwise master key caching.
    enablePairwiseMasterKeyCaching?: NullableOption<boolean>;
    // Specify whether pre-authentication should be enabled.
    enablePreAuthentication?: NullableOption<boolean>;
    /**
     * Specify inner authentication protocol for EAP TTLS. Possible values are: unencryptedPassword,
     * challengeHandshakeAuthenticationProtocol, microsoftChap, microsoftChapVersionTwo.
     */
    innerAuthenticationProtocolForEAPTTLS?: NullableOption<NonEapAuthenticationMethodForEapTtlsType>;
    // Specify the maximum authentication failures allowed for a set of credentials. Valid range 1-100.
    maximumAuthenticationFailures?: NullableOption<number>;
    // Specify maximum authentication timeout (in seconds). Valid range: 1-120
    maximumAuthenticationTimeoutInSeconds?: NullableOption<number>;
    /**
     * Specifiy the maximum number of EAPOL (Extensible Authentication Protocol over LAN) Start messages to be sent before
     * returning failure. Valid range 1-100.
     */
    maximumEAPOLStartMessages?: NullableOption<number>;
    // Specify maximum number of pairwise master keys in cache. Valid range: 1-255
    maximumNumberOfPairwiseMasterKeysInCache?: NullableOption<number>;
    // Specify maximum pairwise master key cache time (in minutes). Valid range: 5-1440
    maximumPairwiseMasterKeyCacheTimeInMinutes?: NullableOption<number>;
    // Specify maximum pre-authentication attempts. Valid range: 1-16
    maximumPreAuthenticationAttempts?: NullableOption<number>;
    // Specify the network single sign on type. Possible values are: disabled, prelogon, postlogon.
    networkSingleSignOn?: NullableOption<NetworkSingleSignOnType>;
    // Specify the string to replace usernames for privacy when using EAP TTLS or PEAP.
    outerIdentityPrivacyTemporaryValue?: NullableOption<string>;
    /**
     * Specify whether to enable verification of server's identity by validating the certificate when EAP type is selected as
     * PEAP.
     */
    performServerValidation?: NullableOption<boolean>;
    // Specify whether the wifi connection should prompt for additional authentication credentials.
    promptForAdditionalAuthenticationCredentials?: NullableOption<boolean>;
    // Specify whether to enable cryptographic binding when EAP type is selected as PEAP.
    requireCryptographicBinding?: NullableOption<boolean>;
    // Specify trusted server certificate names.
    trustedServerCertificateNames?: NullableOption<string[]>;
    /**
     * Specifiy whether to change the virtual LAN used by the device based on the user’s credentials. Cannot be used when
     * NetworkSingleSignOnType is set to Disabled.
     */
    userBasedVirtualLan?: NullableOption<boolean>;
    // Specify identity certificate for client authentication.
    identityCertificateForClientAuthentication?: NullableOption<WindowsCertificateProfileBase>;
    // Specify root certificate for client validation.
    rootCertificateForClientValidation?: NullableOption<Windows81TrustedRootCertificate>;
    // Specify root certificate for server validation.
    rootCertificatesForServerValidation?: NullableOption<Windows81TrustedRootCertificate[]>;
}
export interface DeviceManagementConfigurationChoiceSettingDefinition extends DeviceManagementConfigurationSettingDefinition {
    // Default option for choice setting
    defaultOptionId?: NullableOption<string>;
    // Options for the setting that can be selected
    options?: NullableOption<DeviceManagementConfigurationOptionDefinition[]>;
}
export interface DeviceManagementConfigurationChoiceSettingCollectionDefinition extends DeviceManagementConfigurationChoiceSettingDefinition {
    // Maximum number of choices in the collection. Valid values 1 to 100
    maximumCount?: number;
    // Minimum number of choices in the collection. Valid values 1 to 100
    minimumCount?: number;
}
export interface DeviceManagementConfigurationPolicyAssignment extends Entity {
    // The assignment source for the device compliance policy, direct or parcel/policySet.
    source?: DeviceAndAppManagementAssignmentSource;
    // The identifier of the source of the assignment.
    sourceId?: NullableOption<string>;
    // The assignment target for the DeviceManagementConfigurationPolicy.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface DeviceManagementConfigurationSetting extends Entity {
    // Setting Instance
    settingInstance?: DeviceManagementConfigurationSettingInstance;
    // List of related Setting Definitions
    settingDefinitions?: NullableOption<DeviceManagementConfigurationSettingDefinition[]>;
}
export interface DeviceManagementConfigurationSettingGroupDefinition extends DeviceManagementConfigurationSettingDefinition {
    // Dependent child settings to this group of settings
    childIds?: NullableOption<string[]>;
    // List of child settings that depend on this setting
    dependedOnBy?: NullableOption<DeviceManagementConfigurationSettingDependedOnBy[]>;
    // List of Dependencies for the setting group
    dependentOn?: NullableOption<DeviceManagementConfigurationDependentOn[]>;
}
export interface DeviceManagementConfigurationSettingGroupCollectionDefinition extends DeviceManagementConfigurationSettingGroupDefinition {
    // Maximum number of setting group count in the collection. Valid values 1 to 100
    maximumCount?: number;
    // Minimum number of setting group count in the collection. Valid values 1 to 100
    minimumCount?: number;
}
export interface DeviceManagementConfigurationSimpleSettingDefinition extends DeviceManagementConfigurationSettingDefinition {
    // Default setting value for this setting
    defaultValue?: NullableOption<DeviceManagementConfigurationSettingValue>;
    // list of child settings that depend on this setting
    dependedOnBy?: NullableOption<DeviceManagementConfigurationSettingDependedOnBy[]>;
    // list of parent settings this setting is dependent on
    dependentOn?: NullableOption<DeviceManagementConfigurationDependentOn[]>;
    // Definition of the value for this setting
    valueDefinition?: NullableOption<DeviceManagementConfigurationSettingValueDefinition>;
}
export interface DeviceManagementConfigurationSimpleSettingCollectionDefinition extends DeviceManagementConfigurationSimpleSettingDefinition {
    // Maximum number of simple settings in the collection. Valid values 1 to 100
    maximumCount?: number;
    // Minimum number of simple settings in the collection. Valid values 1 to 100
    minimumCount?: number;
}
export interface DeviceComanagementAuthorityConfiguration extends DeviceEnrollmentConfiguration {
    // CoManagement Authority configuration ConfigurationManagerAgentCommandLineArgument
    configurationManagerAgentCommandLineArgument?: NullableOption<string>;
    // CoManagement Authority configuration InstallConfigurationManagerAgent
    installConfigurationManagerAgent?: boolean;
    // CoManagement Authority configuration ManagedDeviceAuthority
    managedDeviceAuthority?: number;
}
export interface DeviceEnrollmentLimitConfiguration extends DeviceEnrollmentConfiguration {
    // The maximum number of devices that a user can enroll
    limit?: number;
}
export interface DeviceEnrollmentPlatformRestrictionConfiguration extends DeviceEnrollmentConfiguration {
    // Restrictions based on platform, platform operating system version, and device ownership
    platformRestriction?: NullableOption<DeviceEnrollmentPlatformRestriction>;
    // Type of platform for which this restriction applies.
    platformType?: EnrollmentRestrictionPlatformType;
}
export interface DeviceEnrollmentPlatformRestrictionsConfiguration extends DeviceEnrollmentConfiguration {
    // Android for work restrictions based on platform, platform operating system version, and device ownership
    androidForWorkRestriction?: NullableOption<DeviceEnrollmentPlatformRestriction>;
    // Android restrictions based on platform, platform operating system version, and device ownership
    androidRestriction?: NullableOption<DeviceEnrollmentPlatformRestriction>;
    // AOSP restrictions based on platform, platform operating system version, and device ownership
    aospRestriction?: NullableOption<DeviceEnrollmentPlatformRestriction>;
    // Ios restrictions based on platform, platform operating system version, and device ownership
    iosRestriction?: NullableOption<DeviceEnrollmentPlatformRestriction>;
    // Mac restrictions based on platform, platform operating system version, and device ownership
    macOSRestriction?: NullableOption<DeviceEnrollmentPlatformRestriction>;
    // Mac restrictions based on platform, platform operating system version, and device ownership
    macRestriction?: NullableOption<DeviceEnrollmentPlatformRestriction>;
    // Windows Home Sku restrictions based on platform, platform operating system version, and device ownership
    windowsHomeSkuRestriction?: NullableOption<DeviceEnrollmentPlatformRestriction>;
    // Windows mobile restrictions based on platform, platform operating system version, and device ownership
    windowsMobileRestriction?: NullableOption<DeviceEnrollmentPlatformRestriction>;
    // Windows restrictions based on platform, platform operating system version, and device ownership
    windowsRestriction?: NullableOption<DeviceEnrollmentPlatformRestriction>;
}
export interface DeviceEnrollmentWindowsHelloForBusinessConfiguration extends DeviceEnrollmentConfiguration {
    /**
     * Controls the ability to use the anti-spoofing features for facial recognition on devices which support it. If set to
     * disabled, anti-spoofing features are not allowed. If set to Not Configured, the user can choose whether they want to
     * use anti-spoofing. Possible values are: notConfigured, enabled, disabled.
     */
    enhancedBiometricsState?: Enablement;
    /**
     * Controls the period of time (in days) that a PIN can be used before the system requires the user to change it. This
     * must be set between 0 and 730, inclusive. If set to 0, the user's PIN will never expire
     */
    pinExpirationInDays?: number;
    /**
     * Controls the ability to use lowercase letters in the Windows Hello for Business PIN. Allowed permits the use of
     * lowercase letter(s), whereas Required ensures they are present. If set to Not Allowed, lowercase letters will not be
     * permitted. Possible values are: allowed, required, disallowed.
     */
    pinLowercaseCharactersUsage?: WindowsHelloForBusinessPinUsage;
    /**
     * Controls the maximum number of characters allowed for the Windows Hello for Business PIN. This value must be between 4
     * and 127, inclusive. This value must be greater than or equal to the value set for the minimum PIN.
     */
    pinMaximumLength?: number;
    /**
     * Controls the minimum number of characters required for the Windows Hello for Business PIN. This value must be between 4
     * and 127, inclusive, and less than or equal to the value set for the maximum PIN.
     */
    pinMinimumLength?: number;
    /**
     * Controls the ability to prevent users from using past PINs. This must be set between 0 and 50, inclusive, and the
     * current PIN of the user is included in that count. If set to 0, previous PINs are not stored. PIN history is not
     * preserved through a PIN reset.
     */
    pinPreviousBlockCount?: number;
    /**
     * Controls the ability to use special characters in the Windows Hello for Business PIN. Allowed permits the use of
     * special character(s), whereas Required ensures they are present. If set to Not Allowed, special character(s) will not
     * be permitted. Possible values are: allowed, required, disallowed.
     */
    pinSpecialCharactersUsage?: WindowsHelloForBusinessPinUsage;
    /**
     * Controls the ability to use uppercase letters in the Windows Hello for Business PIN. Allowed permits the use of
     * uppercase letter(s), whereas Required ensures they are present. If set to Not Allowed, uppercase letters will not be
     * permitted. Possible values are: allowed, required, disallowed.
     */
    pinUppercaseCharactersUsage?: WindowsHelloForBusinessPinUsage;
    /**
     * Controls the use of Remote Windows Hello for Business. Remote Windows Hello for Business provides the ability for a
     * portable, registered device to be usable as a companion for desktop authentication. The desktop must be Azure AD joined
     * and the companion device must have a Windows Hello for Business PIN.
     */
    remotePassportEnabled?: boolean;
    /**
     * Controls whether to require a Trusted Platform Module (TPM) for provisioning Windows Hello for Business. A TPM provides
     * an additional security benefit in that data stored on it cannot be used on other devices. If set to False, all devices
     * can provision Windows Hello for Business even if there is not a usable TPM.
     */
    securityDeviceRequired?: boolean;
    /**
     * Security key for Sign In provides the capacity for remotely turning ON/OFF Windows Hello Sercurity Keyl Not configured
     * will honor configurations done on the clinet. Possible values are: notConfigured, enabled, disabled.
     */
    securityKeyForSignIn?: Enablement;
    /**
     * Controls whether to allow the device to be configured for Windows Hello for Business. If set to disabled, the user
     * cannot provision Windows Hello for Business except on Azure Active Directory joined mobile phones if otherwise
     * required. If set to Not Configured, Intune will not override client defaults. Possible values are: notConfigured,
     * enabled, disabled.
     */
    state?: Enablement;
    /**
     * Controls the use of biometric gestures, such as face and fingerprint, as an alternative to the Windows Hello for
     * Business PIN. If set to False, biometric gestures are not allowed. Users must still configure a PIN as a backup in case
     * of failures.
     */
    unlockWithBiometricsEnabled?: boolean;
}
export interface Windows10EnrollmentCompletionPageConfiguration extends DeviceEnrollmentConfiguration {
    // Allow or block device reset on installation failure
    allowDeviceResetOnInstallFailure?: boolean;
    // Allow the user to continue using the device on installation failure
    allowDeviceUseOnInstallFailure?: boolean;
    // Allow or block log collection on installation failure
    allowLogCollectionOnInstallFailure?: boolean;
    // Allow the user to retry the setup on installation failure
    blockDeviceSetupRetryByUser?: boolean;
    // Set custom error message to show upon installation failure
    customErrorMessage?: NullableOption<string>;
    // Only show installation progress for first user post enrollment
    disableUserStatusTrackingAfterFirstUser?: boolean;
    // Set installation progress timeout in minutes
    installProgressTimeoutInMinutes?: NullableOption<number>;
    // Selected applications to track the installation status
    selectedMobileAppIds?: NullableOption<string[]>;
    // Show or hide installation progress to user
    showInstallationProgress?: boolean;
    // Only show installation progress for Autopilot enrollment scenarios
    trackInstallProgressForAutopilotOnly?: boolean;
}
export interface DeviceManagementAbstractComplexSettingDefinition extends DeviceManagementSettingDefinition {
    // List of definition IDs for all possible implementations of this abstract complex setting
    implementations?: NullableOption<string[]>;
}
export interface DeviceManagementSettingInstance extends Entity {
    // The ID of the setting definition for this instance
    definitionId?: string;
    // JSON representation of the value
    valueJson?: NullableOption<string>;
}
export interface DeviceManagementAbstractComplexSettingInstance extends DeviceManagementSettingInstance {
    // The definition ID for the chosen implementation of this complex setting
    implementationId?: NullableOption<string>;
    // The values that make up the complex setting
    value?: NullableOption<DeviceManagementSettingInstance[]>;
}
export interface DeviceManagementBooleanSettingInstance extends DeviceManagementSettingInstance {
    // The boolean value
    value?: NullableOption<boolean>;
}
export interface DeviceManagementCollectionSettingDefinition extends DeviceManagementSettingDefinition {
    // The Setting Definition ID that describes what each element of the collection looks like
    elementDefinitionId?: NullableOption<string>;
}
export interface DeviceManagementCollectionSettingInstance extends DeviceManagementSettingInstance {
    // The collection of values
    value?: NullableOption<DeviceManagementSettingInstance[]>;
}
export interface DeviceManagementComplexSettingDefinition extends DeviceManagementSettingDefinition {
    // The definitions of each property of the complex setting
    propertyDefinitionIds?: NullableOption<string[]>;
}
export interface DeviceManagementComplexSettingInstance extends DeviceManagementSettingInstance {
    // The values that make up the complex setting
    value?: NullableOption<DeviceManagementSettingInstance[]>;
}
export interface DeviceManagementIntegerSettingInstance extends DeviceManagementSettingInstance {
    // The integer value
    value?: NullableOption<number>;
}
export interface DeviceManagementIntentAssignment extends Entity {
    // The assignment target
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface DeviceManagementIntentSettingCategory extends DeviceManagementSettingCategory {
    // The settings this category contains
    settings?: NullableOption<DeviceManagementSettingInstance[]>;
}
export interface DeviceManagementIntentDeviceSettingStateSummary extends Entity {
    // Number of compliant devices
    compliantCount?: number;
    // Number of devices in conflict
    conflictCount?: number;
    // Number of error devices
    errorCount?: number;
    // Number of non compliant devices
    nonCompliantCount?: number;
    // Number of not applicable devices
    notApplicableCount?: number;
    // Number of remediated devices
    remediatedCount?: number;
    // Name of a setting
    settingName?: NullableOption<string>;
}
export interface DeviceManagementIntentDeviceState extends Entity {
    // Device name that is being reported
    deviceDisplayName?: NullableOption<string>;
    // Device id that is being reported
    deviceId?: NullableOption<string>;
    // Last modified date time of an intent report
    lastReportedDateTime?: string;
    /**
     * Device state for an intent. Possible values are: unknown, notApplicable, compliant, remediated, nonCompliant, error,
     * conflict, notAssigned.
     */
    state?: ComplianceStatus;
    // The user name that is being reported on a device
    userName?: NullableOption<string>;
    // The user principal name that is being reported on a device
    userPrincipalName?: NullableOption<string>;
}
export interface DeviceManagementIntentDeviceStateSummary extends Entity {
    // Number of devices in conflict
    conflictCount?: number;
    // Number of error devices
    errorCount?: number;
    // Number of failed devices
    failedCount?: number;
    // Number of not applicable devices
    notApplicableCount?: number;
    // Number of not applicable devices due to mismatch platform and policy
    notApplicablePlatformCount?: number;
    // Number of succeeded devices
    successCount?: number;
}
export interface DeviceManagementIntentUserState extends Entity {
    // Count of Devices that belongs to a user for an intent
    deviceCount?: number;
    // Last modified date time of an intent report
    lastReportedDateTime?: string;
    /**
     * User state for an intent. Possible values are: unknown, notApplicable, compliant, remediated, nonCompliant, error,
     * conflict, notAssigned.
     */
    state?: ComplianceStatus;
    // The user name that is being reported on a device
    userName?: NullableOption<string>;
    // The user principal name that is being reported on a device
    userPrincipalName?: NullableOption<string>;
}
export interface DeviceManagementIntentUserStateSummary extends Entity {
    // Number of users in conflict
    conflictCount?: number;
    // Number of error users
    errorCount?: number;
    // Number of failed users
    failedCount?: number;
    // Number of not applicable users
    notApplicableCount?: number;
    // Number of succeeded users
    successCount?: number;
}
export interface DeviceManagementStringSettingInstance extends DeviceManagementSettingInstance {
    // The string value
    value?: NullableOption<string>;
}
export interface DeviceManagementTemplateSettingCategory extends DeviceManagementSettingCategory {
    // The settings this category contains
    recommendedSettings?: NullableOption<DeviceManagementSettingInstance[]>;
}
export interface SecurityBaselineStateSummary extends Entity {
    // Number of conflict devices
    conflictCount?: number;
    // Number of error devices
    errorCount?: number;
    // Number of not applicable devices
    notApplicableCount?: number;
    // Number of not secure devices
    notSecureCount?: number;
    // Number of secure devices
    secureCount?: number;
    // Number of unknown devices
    unknownCount?: number;
}
export interface SecurityBaselineCategoryStateSummary extends SecurityBaselineStateSummary {
    // The category name
    displayName?: NullableOption<string>;
}
export interface SecurityBaselineDeviceState extends Entity {
    // Display name of the device
    deviceDisplayName?: NullableOption<string>;
    // Last modified date time of the policy report
    lastReportedDateTime?: string;
    // Intune device id
    managedDeviceId?: NullableOption<string>;
    // Security baseline compliance state. Possible values are: unknown, secure, notApplicable, notSecure, error, conflict.
    state?: SecurityBaselineComplianceState;
    // User Principal Name
    userPrincipalName?: NullableOption<string>;
}
export interface SecurityBaselineSettingState extends Entity {
    // The policies that contribute to this setting instance
    contributingPolicies?: NullableOption<SecurityBaselineContributingPolicy[]>;
    // The error code if the setting is in error state
    errorCode?: NullableOption<string>;
    // The setting category id which this setting belongs to
    settingCategoryId?: NullableOption<string>;
    // The setting category name which this setting belongs to
    settingCategoryName?: NullableOption<string>;
    // The setting id guid
    settingId?: NullableOption<string>;
    // The setting name that is being reported
    settingName?: string;
    // The policies that contribute to this setting instance
    sourcePolicies?: NullableOption<SettingSource[]>;
    // The compliance state of the security baseline setting
    state?: SecurityBaselineComplianceState;
}
export interface SecurityBaselineTemplate extends DeviceManagementTemplate {
    // The security baseline per category device state summary
    categoryDeviceStateSummaries?: NullableOption<SecurityBaselineCategoryStateSummary[]>;
    // The security baseline device states
    deviceStates?: NullableOption<SecurityBaselineDeviceState[]>;
    // The security baseline device state summary
    deviceStateSummary?: NullableOption<SecurityBaselineStateSummary>;
}
export interface AppLogCollectionRequest extends Entity {
    // Time at which the upload log request reached a terminal state
    completedDateTime?: NullableOption<string>;
    // List of log folders.
    customLogFolders?: NullableOption<string[]>;
    // Error message if any during the upload process
    errorMessage?: NullableOption<string>;
    // Log upload status. Possible values are: pending, completed, failed.
    status?: AppLogUploadState;
}
export interface DeviceHealthScriptAssignment extends Entity {
    // Determine whether we want to run detection script only or run both detection script and remediation script
    runRemediationScript?: boolean;
    // Script run schedule for the target group
    runSchedule?: NullableOption<DeviceHealthScriptRunSchedule>;
    // The Azure Active Directory group we are targeting the script to
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface DeviceComplianceScriptDeviceState extends Entity {
    /**
     * Detection state from the lastest device compliance script execution. Possible values are: unknown, success, fail,
     * scriptError, pending, notApplicable.
     */
    detectionState?: RunState;
    // The next timestamp of when the device compliance script is expected to execute
    expectedStateUpdateDateTime?: NullableOption<string>;
    // The last timestamp of when the device compliance script executed
    lastStateUpdateDateTime?: string;
    // The last time that Intune Managment Extension synced with Intune
    lastSyncDateTime?: string;
    // Error from the detection script
    scriptError?: NullableOption<string>;
    // Output of the detection script
    scriptOutput?: NullableOption<string>;
    // The managed device on which the device compliance script executed
    managedDevice?: NullableOption<ManagedDevice>;
}
export interface DeviceComplianceScriptRunSummary extends Entity {
    /**
     * Number of devices on which the detection script execution encountered an error and did not complete. Valid values
     * -2147483648 to 2147483647
     */
    detectionScriptErrorDeviceCount?: number;
    /**
     * Number of devices which have not yet run the latest version of the device compliance script. Valid values -2147483648
     * to 2147483647
     */
    detectionScriptPendingDeviceCount?: number;
    // Number of devices for which the detection script found an issue. Valid values -2147483648 to 2147483647
    issueDetectedDeviceCount?: number;
    // Last run time for the script across all devices
    lastScriptRunDateTime?: NullableOption<string>;
    /**
     * Number of devices for which the detection script did not find an issue and the device is healthy. Valid values
     * -2147483648 to 2147483647
     */
    noIssueDetectedDeviceCount?: number;
}
export interface DeviceHealthScriptDeviceState extends Entity {
    // A list of the assignment filter ids used for health script applicability evaluation
    assignmentFilterIds?: NullableOption<string[]>;
    /**
     * Detection state from the lastest device health script execution. Possible values are: unknown, success, fail,
     * scriptError, pending, notApplicable.
     */
    detectionState?: RunState;
    // The next timestamp of when the device health script is expected to execute
    expectedStateUpdateDateTime?: NullableOption<string>;
    // The last timestamp of when the device health script executed
    lastStateUpdateDateTime?: string;
    // The last time that Intune Managment Extension synced with Intune
    lastSyncDateTime?: string;
    // Error from the detection script after remediation
    postRemediationDetectionScriptError?: NullableOption<string>;
    // Detection script output after remediation
    postRemediationDetectionScriptOutput?: NullableOption<string>;
    // Error from the detection script before remediation
    preRemediationDetectionScriptError?: NullableOption<string>;
    // Output of the detection script before remediation
    preRemediationDetectionScriptOutput?: NullableOption<string>;
    // Error output of the remediation script
    remediationScriptError?: NullableOption<string>;
    /**
     * Remediation state from the lastest device health script execution. Possible values are: unknown, skipped, success,
     * remediationFailed, scriptError.
     */
    remediationState?: RemediationState;
    // The managed device on which the device health script executed
    managedDevice?: NullableOption<ManagedDevice>;
}
export interface DeviceHealthScriptRunSummary extends Entity {
    // Number of devices on which the detection script execution encountered an error and did not complete
    detectionScriptErrorDeviceCount?: number;
    // Number of devices for which the detection script was not applicable
    detectionScriptNotApplicableDeviceCount?: number;
    // Number of devices which have not yet run the latest version of the device health script
    detectionScriptPendingDeviceCount?: number;
    // Number of devices for which the detection script found an issue
    issueDetectedDeviceCount?: number;
    // Number of devices that were remediated over the last 30 days
    issueRemediatedCumulativeDeviceCount?: number;
    // Number of devices for which the remediation script was able to resolve the detected issue
    issueRemediatedDeviceCount?: number;
    // Number of devices for which the remediation script executed successfully but failed to resolve the detected issue
    issueReoccurredDeviceCount?: number;
    // Last run time for the script across all devices
    lastScriptRunDateTime?: NullableOption<string>;
    // Number of devices for which the detection script did not find an issue and the device is healthy
    noIssueDetectedDeviceCount?: number;
    // Number of devices for which the remediation script execution encountered an error and did not complete
    remediationScriptErrorDeviceCount?: number;
    // Number of devices for which remediation was skipped
    remediationSkippedDeviceCount?: number;
}
export interface MalwareStateForWindowsDevice extends Entity {
    // Number of times the malware is detected
    detectionCount?: NullableOption<number>;
    // Device name
    deviceName?: NullableOption<string>;
    /**
     * Execution status of the malware like blocked/executing etc. Possible values are: unknown, blocked, allowed, running,
     * notRunning.
     */
    executionState?: NullableOption<WindowsMalwareExecutionState>;
    // Initial detection datetime of the malware
    initialDetectionDateTime?: NullableOption<string>;
    // The last time this particular threat was changed
    lastStateChangeDateTime?: NullableOption<string>;
    /**
     * Threat status of the malware like cleaned/quarantined/allowed etc. Possible values are: active, actionFailed,
     * manualStepsRequired, fullScanRequired, rebootRequired, remediatedWithNonCriticalFailures, quarantined, removed,
     * cleaned, allowed, noStatusCleared.
     */
    threatState?: NullableOption<WindowsMalwareThreatState>;
}
export interface UserExperienceAnalyticsMetric extends Entity {
    // The unit of the user experience analytics metric.
    unit?: NullableOption<string>;
    // The value of the user experience analytics metric.
    value?: number;
}
export interface UserExperienceAnalyticsWorkFromAnywhereDevice extends Entity {
    // The user experience analytics work from anywhere intune device's autopilotProfileAssigned.
    autoPilotProfileAssigned?: NullableOption<boolean>;
    // The user experience work from anywhere intune device's autopilotRegistered.
    autoPilotRegistered?: NullableOption<boolean>;
    // The user experience work from anywhere azure Ad device Id.
    azureAdDeviceId?: NullableOption<string>;
    // The user experience work from anywhere device's azure Ad joinType.
    azureAdJoinType?: NullableOption<string>;
    // The user experience work from anywhere device's azureAdRegistered.
    azureAdRegistered?: NullableOption<boolean>;
    // The user experience work from anywhere device's compliancePolicySetToIntune.
    compliancePolicySetToIntune?: NullableOption<boolean>;
    // The work from anywhere device's name.
    deviceName?: NullableOption<string>;
    // The user experience work from anywhere management agent of the device.
    managedBy?: NullableOption<string>;
    // The user experience work from anywhere device's manufacturer.
    manufacturer?: NullableOption<string>;
    // The user experience work from anywhere device's model.
    model?: NullableOption<string>;
    /**
     * The user experience work from anywhere device, Is OS check failed for device to upgrade to the latest version of
     * windows.
     */
    osCheckFailed?: NullableOption<boolean>;
    // The user experience work from anywhere device's OS Description.
    osDescription?: NullableOption<string>;
    // The user experience work from anywhere device's OS Version.
    osVersion?: NullableOption<string>;
    // The user experience work from anywhere device's otherWorkloadsSetToIntune.
    otherWorkloadsSetToIntune?: NullableOption<boolean>;
    // The user experience work from anywhere device's ownership.
    ownership?: NullableOption<string>;
    /**
     * The user experience work from anywhere device, Is processor hardware 64-bit architecture check failed for device to
     * upgrade to the latest version of windows.
     */
    processor64BitCheckFailed?: NullableOption<boolean>;
    /**
     * The user experience work from anywhere device, Is processor hardware core count check failed for device to upgrade to
     * the latest version of windows.
     */
    processorCoreCountCheckFailed?: NullableOption<boolean>;
    /**
     * The user experience work from anywhere device, Is processor hardware family check failed for device to upgrade to the
     * latest version of windows.
     */
    processorFamilyCheckFailed?: NullableOption<boolean>;
    /**
     * The user experience work from anywhere device, Is processor hardware speed check failed for device to upgrade to the
     * latest version of windows.
     */
    processorSpeedCheckFailed?: NullableOption<boolean>;
    /**
     * Is the user experience analytics work from anywhere device RAM hardware check failed for device to upgrade to the
     * latest version of windows
     */
    ramCheckFailed?: NullableOption<boolean>;
    /**
     * The user experience work from anywhere device, Is secure boot hardware check failed for device to upgrade to the latest
     * version of windows.
     */
    secureBootCheckFailed?: NullableOption<boolean>;
    // The user experience work from anywhere device's serial number.
    serialNumber?: NullableOption<string>;
    /**
     * The user experience work from anywhere device, Is storage hardware check failed for device to upgrade to the latest
     * version of windows.
     */
    storageCheckFailed?: NullableOption<boolean>;
    // The user experience work from anywhere device's tenantAttached.
    tenantAttached?: NullableOption<boolean>;
    /**
     * The user experience work from anywhere device, Is Trusted Platform Module (TPM) hardware check failed for device to the
     * latest version of upgrade to windows.
     */
    tpmCheckFailed?: NullableOption<boolean>;
    // The user experience work from anywhere windows upgrade eligibility status of device.
    upgradeEligibility?: OperatingSystemUpgradeEligibility;
}
export interface WindowsDeviceMalwareState extends Entity {
    // Information URL to learn more about the malware
    additionalInformationUrl?: NullableOption<string>;
    /**
     * Category of the malware. Possible values are: invalid, adware, spyware, passwordStealer, trojanDownloader, worm,
     * backdoor, remoteAccessTrojan, trojan, emailFlooder, keylogger, dialer, monitoringSoftware, browserModifier, cookie,
     * browserPlugin, aolExploit, nuker, securityDisabler, jokeProgram, hostileActiveXControl, softwareBundler,
     * stealthNotifier, settingsModifier, toolBar, remoteControlSoftware, trojanFtp, potentialUnwantedSoftware, icqExploit,
     * trojanTelnet, exploit, filesharingProgram, malwareCreationTool, remote_Control_Software, tool, trojanDenialOfService,
     * trojanDropper, trojanMassMailer, trojanMonitoringSoftware, trojanProxyServer, virus, known, unknown, spp, behavior,
     * vulnerability, policy, enterpriseUnwantedSoftware, ransom, hipsRule.
     */
    category?: NullableOption<WindowsMalwareCategory>;
    // Number of times the malware is detected
    detectionCount?: NullableOption<number>;
    // Malware name
    displayName?: NullableOption<string>;
    /**
     * Execution status of the malware like blocked/executing etc. Possible values are: unknown, blocked, allowed, running,
     * notRunning.
     */
    executionState?: NullableOption<WindowsMalwareExecutionState>;
    // Initial detection datetime of the malware
    initialDetectionDateTime?: NullableOption<string>;
    // The last time this particular threat was changed
    lastStateChangeDateTime?: NullableOption<string>;
    // Severity of the malware. Possible values are: unknown, low, moderate, high, severe.
    severity?: NullableOption<WindowsMalwareSeverity>;
    /**
     * Current status of the malware like cleaned/quarantined/allowed etc. Possible values are: unknown, detected, cleaned,
     * quarantined, removed, allowed, blocked, cleanFailed, quarantineFailed, removeFailed, allowFailed, abandoned,
     * blockFailed.
     */
    state?: NullableOption<WindowsMalwareState>;
    /**
     * Current status of the malware like cleaned/quarantined/allowed etc. Possible values are: active, actionFailed,
     * manualStepsRequired, fullScanRequired, rebootRequired, remediatedWithNonCriticalFailures, quarantined, removed,
     * cleaned, allowed, noStatusCleared.
     */
    threatState?: NullableOption<WindowsMalwareThreatState>;
}
// tslint:disable-next-line: no-empty-interface
export interface WindowsManagedDevice extends ManagedDevice {}
export interface WindowsManagementAppHealthState extends Entity {
    // Name of the device on which Windows management app is installed.
    deviceName?: NullableOption<string>;
    // Windows 10 OS version of the device on which Windows management app is installed.
    deviceOSVersion?: NullableOption<string>;
    // Windows management app health state. Possible values are: unknown, healthy, unhealthy.
    healthState?: HealthState;
    // Windows management app installed version.
    installedVersion?: NullableOption<string>;
    // Windows management app last check-in time.
    lastCheckInDateTime?: string;
}
export interface WindowsManagementAppHealthSummary extends Entity {
    // Healthy device count.
    healthyDeviceCount?: number;
    // Unhealthy device count.
    unhealthyDeviceCount?: number;
    // Unknown device count.
    unknownDeviceCount?: number;
}
export interface DeviceManagementResourceAccessProfileAssignment extends Entity {
    // The assignment intent for the resource access profile. Possible values are: apply, remove.
    intent?: DeviceManagementResourceAccessProfileIntent;
    // The identifier of the source of the assignment.
    sourceId?: NullableOption<string>;
    // The assignment target for the resource access profile.
    target?: DeviceAndAppManagementAssignmentTarget;
}
// tslint:disable-next-line: no-empty-interface
export interface Windows10XCertificateProfile extends DeviceManagementResourceAccessProfileBase {}
export interface Windows10XSCEPCertificateProfile extends Windows10XCertificateProfile {
    // Target store certificate. Possible values are: user, machine.
    certificateStore?: CertificateStore;
    // Scale for the Certificate Validity Period. Possible values are: days, months, years.
    certificateValidityPeriodScale?: CertificateValidityPeriodScale;
    // Value for the Certificate Validity Period
    certificateValidityPeriodValue?: number;
    // Extended Key Usage (EKU) settings.
    extendedKeyUsages?: ExtendedKeyUsage[];
    // SCEP Hash Algorithm.
    hashAlgorithm?: HashAlgorithms[];
    // SCEP Key Size. Possible values are: size1024, size2048, size4096.
    keySize?: KeySize;
    /**
     * Key Storage Provider (KSP). Possible values are: useTpmKspOtherwiseUseSoftwareKsp, useTpmKspOtherwiseFail,
     * usePassportForWorkKspOtherwiseFail, useSoftwareKsp.
     */
    keyStorageProvider?: KeyStorageProviderOption;
    // SCEP Key Usage. Possible values are: keyEncipherment, digitalSignature.
    keyUsage?: KeyUsages;
    // Certificate renewal threshold percentage
    renewalThresholdPercentage?: number;
    // Trusted Root Certificate ID
    rootCertificateId?: NullableOption<string>;
    // SCEP Server Url(s).
    scepServerUrls?: NullableOption<string[]>;
    // Custom AAD Attributes.
    subjectAlternativeNameFormats?: NullableOption<Windows10XCustomSubjectAlternativeName[]>;
    /**
     * Custom format to use with SubjectNameFormat = Custom. Example: CN={{EmailAddress}},E={{EmailAddress}},OU=Enterprise
     * Users,O=Contoso Corporation,L=Redmond,ST=WA,C=US
     */
    subjectNameFormatString?: NullableOption<string>;
}
export interface Windows10XTrustedRootCertificate extends DeviceManagementResourceAccessProfileBase {
    // File name to display in UI.
    certFileName?: NullableOption<string>;
    /**
     * Destination store location for the Trusted Root Certificate. Possible values are: computerCertStoreRoot,
     * computerCertStoreIntermediate, userCertStoreIntermediate.
     */
    destinationStore?: CertificateDestinationStore;
    // Trusted Root Certificate
    trustedRootCertificate?: number;
}
export interface Windows10XVpnConfiguration extends DeviceManagementResourceAccessProfileBase {
    // ID to the Authentication Certificate
    authenticationCertificateId?: NullableOption<string>;
    // Custom XML commands that configures the VPN connection. (UTF8 byte encoding)
    customXml?: number;
    // Custom Xml file name.
    customXmlFileName?: NullableOption<string>;
}
export interface Windows10XWifiConfiguration extends DeviceManagementResourceAccessProfileBase {
    // ID to the Authentication Certificate
    authenticationCertificateId?: NullableOption<string>;
    // Custom XML commands that configures the VPN connection. (UTF8 byte encoding)
    customXml?: number;
    // Custom Xml file name.
    customXmlFileName?: NullableOption<string>;
}
export interface ActiveDirectoryWindowsAutopilotDeploymentProfile extends WindowsAutopilotDeploymentProfile {
    /**
     * The Autopilot Hybrid Azure AD join flow will continue even if it does not establish domain controller connectivity
     * during OOBE.
     */
    hybridAzureADJoinSkipConnectivityCheck?: boolean;
    // Configuration to join Active Directory domain
    domainJoinConfiguration?: NullableOption<WindowsDomainJoinConfiguration>;
}
export interface AppleEnrollmentProfileAssignment extends Entity {
    // The assignment target for the Apple user initiated deployment profile.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
// tslint:disable-next-line: no-empty-interface
export interface AzureADWindowsAutopilotDeploymentProfile extends WindowsAutopilotDeploymentProfile {}
export interface EnrollmentProfile extends Entity {
    // Configuration endpoint url to use for Enrollment
    configurationEndpointUrl?: NullableOption<string>;
    // Description of the profile
    description?: NullableOption<string>;
    // Name of the profile
    displayName?: NullableOption<string>;
    // Indicates to authenticate with Apple Setup Assistant instead of Company Portal.
    enableAuthenticationViaCompanyPortal?: boolean;
    // Indicates that Company Portal is required on setup assistant enrolled devices
    requireCompanyPortalOnSetupAssistantEnrolledDevices?: boolean;
    // Indicates if the profile requires user authentication
    requiresUserAuthentication?: boolean;
}
export interface DepEnrollmentBaseProfile extends EnrollmentProfile {
    // Indicates if Apple id setup pane is disabled
    appleIdDisabled?: boolean;
    // Indicates if Apple pay setup pane is disabled
    applePayDisabled?: boolean;
    // URL for setup assistant login
    configurationWebUrl?: boolean;
    // Sets a literal or name pattern.
    deviceNameTemplate?: NullableOption<string>;
    // Indicates if diagnostics setup pane is disabled
    diagnosticsDisabled?: boolean;
    // Indicates if displaytone setup screen is disabled
    displayToneSetupDisabled?: boolean;
    // Indicates if this is the default profile
    isDefault?: boolean;
    // Indicates if the profile is mandatory
    isMandatory?: boolean;
    // Indicates if Location service setup pane is disabled
    locationDisabled?: boolean;
    // Indicates if privacy screen is disabled
    privacyPaneDisabled?: boolean;
    // Indicates if the profile removal option is disabled
    profileRemovalDisabled?: boolean;
    // Indicates if Restore setup pane is blocked
    restoreBlocked?: boolean;
    // Indicates if screen timeout setup is disabled
    screenTimeScreenDisabled?: boolean;
    // Indicates if siri setup pane is disabled
    siriDisabled?: boolean;
    /**
     * Supervised mode, True to enable, false otherwise. See
     * https://docs.microsoft.com/intune/deploy-use/enroll-devices-in-microsoft-intune for additional information.
     */
    supervisedModeEnabled?: boolean;
    // Support department information
    supportDepartment?: NullableOption<string>;
    // Support phone number
    supportPhoneNumber?: NullableOption<string>;
    // Indicates if 'Terms and Conditions' setup pane is disabled
    termsAndConditionsDisabled?: boolean;
    // Indicates if touch id setup pane is disabled
    touchIdDisabled?: boolean;
}
export interface DepEnrollmentProfile extends EnrollmentProfile {
    // Indicates if Apple id setup pane is disabled
    appleIdDisabled?: boolean;
    // Indicates if Apple pay setup pane is disabled
    applePayDisabled?: boolean;
    // Indicates if the device will need to wait for configured confirmation
    awaitDeviceConfiguredConfirmation?: boolean;
    // Indicates if diagnostics setup pane is disabled
    diagnosticsDisabled?: boolean;
    /**
     * This indicates whether the device is to be enrolled in a mode which enables multi user scenarios. Only applicable in
     * shared iPads.
     */
    enableSharedIPad?: boolean;
    // Indicates if this is the default profile
    isDefault?: boolean;
    // Indicates if the profile is mandatory
    isMandatory?: boolean;
    // Indicates the iTunes pairing mode. Possible values are: disallow, allow, requiresCertificate.
    iTunesPairingMode?: ITunesPairingMode;
    // Indicates if Location service setup pane is disabled
    locationDisabled?: boolean;
    // Indicates if Mac OS file vault is disabled
    macOSFileVaultDisabled?: boolean;
    // Indicates if Mac OS registration is disabled
    macOSRegistrationDisabled?: boolean;
    // Management certificates for Apple Configurator
    managementCertificates?: NullableOption<ManagementCertificateWithThumbprint[]>;
    // Indicates if Passcode setup pane is disabled
    passCodeDisabled?: boolean;
    // Indicates if the profile removal option is disabled
    profileRemovalDisabled?: boolean;
    // Indicates if Restore setup pane is blocked
    restoreBlocked?: boolean;
    // Indicates if Restore from Android is disabled
    restoreFromAndroidDisabled?: boolean;
    // This specifies the maximum number of users that can use a shared iPad. Only applicable in shared iPad mode.
    sharedIPadMaximumUserCount?: number;
    // Indicates if siri setup pane is disabled
    siriDisabled?: boolean;
    /**
     * Supervised mode, True to enable, false otherwise. See
     * https://docs.microsoft.com/intune/deploy-use/enroll-devices-in-microsoft-intune for additional information.
     */
    supervisedModeEnabled?: boolean;
    // Support department information
    supportDepartment?: NullableOption<string>;
    // Support phone number
    supportPhoneNumber?: NullableOption<string>;
    // Indicates if 'Terms and Conditions' setup pane is disabled
    termsAndConditionsDisabled?: boolean;
    // Indicates if touch id setup pane is disabled
    touchIdDisabled?: boolean;
    // Indicates if zoom setup pane is disabled
    zoomDisabled?: boolean;
}
export interface DepIOSEnrollmentProfile extends DepEnrollmentBaseProfile {
    // Indicates if Apperance screen is disabled
    appearanceScreenDisabled?: boolean;
    // Indicates if the device will need to wait for configured confirmation
    awaitDeviceConfiguredConfirmation?: boolean;
    // Carrier URL for activating device eSIM.
    carrierActivationUrl?: NullableOption<string>;
    /**
     * If set, indicates which Vpp token should be used to deploy the Company Portal w/ device licensing.
     * 'enableAuthenticationViaCompanyPortal' must be set in order for this property to be set.
     */
    companyPortalVppTokenId?: NullableOption<string>;
    // Indicates if Device To Device Migration is disabled
    deviceToDeviceMigrationDisabled?: boolean;
    /**
     * This indicates whether the device is to be enrolled in a mode which enables multi user scenarios. Only applicable in
     * shared iPads.
     */
    enableSharedIPad?: boolean;
    /**
     * Tells the device to enable single app mode and apply app-lock during enrollment. Default is false.
     * 'enableAuthenticationViaCompanyPortal' and 'companyPortalVppTokenId' must be set for this property to be set.
     */
    enableSingleAppEnrollmentMode?: boolean;
    // Indicates if Express Language screen is disabled
    expressLanguageScreenDisabled?: boolean;
    // Indicates if temporary sessions is enabled
    forceTemporarySession?: boolean;
    // Indicates if home button sensitivity screen is disabled
    homeButtonScreenDisabled?: boolean;
    // Indicates if iMessage and FaceTime screen is disabled
    iMessageAndFaceTimeScreenDisabled?: boolean;
    // Indicates the iTunes pairing mode. Possible values are: disallow, allow, requiresCertificate.
    iTunesPairingMode?: ITunesPairingMode;
    // Management certificates for Apple Configurator
    managementCertificates?: NullableOption<ManagementCertificateWithThumbprint[]>;
    // Indicates if onboarding setup screen is disabled
    onBoardingScreenDisabled?: boolean;
    // Indicates if Passcode setup pane is disabled
    passCodeDisabled?: boolean;
    // Indicates timeout before locked screen requires the user to enter the device passocde to unlock it
    passcodeLockGracePeriodInSeconds?: NullableOption<number>;
    // Indicates if Preferred language screen is disabled
    preferredLanguageScreenDisabled?: boolean;
    // Indicates if Weclome screen is disabled
    restoreCompletedScreenDisabled?: boolean;
    // Indicates if Restore from Android is disabled
    restoreFromAndroidDisabled?: boolean;
    // This specifies the maximum number of users that can use a shared iPad. Only applicable in shared iPad mode.
    sharedIPadMaximumUserCount?: number;
    // Indicates if the SIMSetup screen is disabled
    simSetupScreenDisabled?: boolean;
    // Indicates if the mandatory sofware update screen is disabled
    softwareUpdateScreenDisabled?: boolean;
    // Indicates timeout of temporary session
    temporarySessionTimeoutInSeconds?: number;
    // Indicates if Weclome screen is disabled
    updateCompleteScreenDisabled?: boolean;
    // Indicates timeout of temporary session
    userSessionTimeoutInSeconds?: number;
    // Indicates if the watch migration screen is disabled
    watchMigrationScreenDisabled?: boolean;
    // Indicates if Weclome screen is disabled
    welcomeScreenDisabled?: boolean;
    // Indicates if zoom setup pane is disabled
    zoomDisabled?: boolean;
}
export interface DepMacOSEnrollmentProfile extends DepEnrollmentBaseProfile {
    // Indicates if Accessibility screen is disabled
    accessibilityScreenDisabled?: boolean;
    // Indicates if iCloud Documents and Desktop screen is disabled
    chooseYourLockScreenDisabled?: boolean;
    // Indicates if file vault is disabled
    fileVaultDisabled?: boolean;
    // Indicates if iCloud Analytics screen is disabled
    iCloudDiagnosticsDisabled?: boolean;
    // Indicates if iCloud Documents and Desktop screen is disabled
    iCloudStorageDisabled?: boolean;
    // Indicates if Passcode setup pane is disabled
    passCodeDisabled?: boolean;
    // Indicates if registration is disabled
    registrationDisabled?: boolean;
    // Indicates if zoom setup pane is disabled
    zoomDisabled?: boolean;
}
// tslint:disable-next-line: interface-name
export interface ImportedAppleDeviceIdentity extends Entity {
    // Created Date Time of the device
    createdDateTime?: string;
    // The description of the device
    description?: NullableOption<string>;
    // Apple device discovery source. Possible values are: unknown, adminImport, deviceEnrollmentProgram.
    discoverySource?: DiscoverySource;
    // The state of the device in Intune. Possible values are: unknown, enrolled, pendingReset, failed, notContacted, blocked.
    enrollmentState?: EnrollmentState;
    // Indicates if the device is deleted from Apple Business Manager
    isDeleted?: NullableOption<boolean>;
    // Indicates if the Apple device is supervised. More information is at: https://support.apple.com/en-us/HT202837
    isSupervised?: boolean;
    // Last Contacted Date Time of the device
    lastContactedDateTime?: string;
    // The platform of the Device. Possible values are: unknown, ios, android, windows, windowsMobile, macOS.
    platform?: Platform;
    // The time enrollment profile was assigned to the device
    requestedEnrollmentProfileAssignmentDateTime?: NullableOption<string>;
    // Enrollment profile Id admin intends to apply to the device during next enrollment
    requestedEnrollmentProfileId?: NullableOption<string>;
    // Device serial number
    serialNumber?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface ImportedAppleDeviceIdentityResult extends ImportedAppleDeviceIdentity {
    // Status of imported device identity
    status?: boolean;
}
// tslint:disable-next-line: interface-name
export interface ImportedDeviceIdentityResult extends ImportedDeviceIdentity {
    // Status of imported device identity
    status?: boolean;
}
// tslint:disable-next-line: interface-name
export interface ImportedWindowsAutopilotDeviceIdentityUpload extends Entity {
    // DateTime when the entity is created.
    createdDateTimeUtc?: string;
    // Upload status.
    status?: ImportedWindowsAutopilotDeviceIdentityUploadStatus;
    // Collection of all Autopilot devices as a part of this upload.
    deviceIdentities?: NullableOption<ImportedWindowsAutopilotDeviceIdentity[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface LocationManagementCondition extends ManagementCondition {}
export interface CircularGeofenceManagementCondition extends LocationManagementCondition {
    // Latitude in degrees, between -90 and +90 inclusive.
    latitude?: number;
    // Longitude in degrees, between -180 and +180 inclusive.
    longitude?: number;
    // Radius in meters.
    radiusInMeters?: number;
}
// tslint:disable-next-line: no-empty-interface
export interface NetworkManagementCondition extends ManagementCondition {}
export interface NetworkIPv4ConfigurationManagementCondition extends NetworkManagementCondition {
    // Valid DNS suffixes for the current network. e.g. seattle.contoso.com
    dnsSuffixList?: NullableOption<string[]>;
    // The IPv4 address of the DHCP server for the adapter.
    ipV4DHCPServer?: NullableOption<string>;
    // The IPv4 DNS servers configured for the adapter.
    ipV4DNSServerList?: NullableOption<string[]>;
    // The IPv4 gateway address. e.g. 10.0.0.0
    ipV4Gateway?: NullableOption<string>;
    // The IPv4 subnet to be connected to. e.g. 10.0.0.0/8
    ipV4Prefix?: NullableOption<string>;
}
export interface NetworkIPv6ConfigurationManagementCondition extends NetworkManagementCondition {
    // Valid DNS suffixes for the current network. e.g. seattle.contoso.com
    dnsSuffixList?: NullableOption<string[]>;
    // An IPv6 DNS servers configured for the adapter.
    ipV6DNSServerList?: NullableOption<string[]>;
    // The IPv6 gateway address to. e.g 2001:db8::1
    ipV6Gateway?: NullableOption<string>;
    // The IPv6 subnet to be connected to. e.g. 2001:db8::/32
    ipV6Prefix?: NullableOption<string>;
}
export interface GroupPolicySettingMapping extends Entity {
    // Admx Group Policy Id
    admxSettingDefinitionId?: NullableOption<string>;
    // List of Child Ids of the group policy setting.
    childIdList?: NullableOption<string[]>;
    // The Intune Setting Definition Id
    intuneSettingDefinitionId?: NullableOption<string>;
    // The list of Intune Setting URIs this group policy setting maps to
    intuneSettingUriList?: NullableOption<string[]>;
    // Indicates if the setting is supported by Intune or not
    isMdmSupported?: boolean;
    // The CSP name this group policy setting maps to.
    mdmCspName?: NullableOption<string>;
    // The minimum OS version this mdm setting supports.
    mdmMinimumOSVersion?: number;
    // The MDM CSP URI this group policy setting maps to.
    mdmSettingUri?: NullableOption<string>;
    // Indicates if the setting is supported in Mdm or not. Possible values are: unknown, supported, unsupported, deprecated.
    mdmSupportedState?: MdmSupportedState;
    // Parent Id of the group policy setting.
    parentId?: NullableOption<string>;
    // The category the group policy setting is in.
    settingCategory?: NullableOption<string>;
    // The display name of this group policy setting.
    settingDisplayName?: NullableOption<string>;
    // The display value of this group policy setting.
    settingDisplayValue?: NullableOption<string>;
    // The display value type of this group policy setting.
    settingDisplayValueType?: NullableOption<string>;
    // The name of this group policy setting.
    settingName?: NullableOption<string>;
    // The scope of the setting. Possible values are: unknown, device, user.
    settingScope?: GroupPolicySettingScope;
    /**
     * The setting type (security or admx) of the Group Policy. Possible values are: unknown, policy, account,
     * securityOptions, userRightsAssignment, auditSetting, windowsFirewallSettings.
     */
    settingType?: GroupPolicySettingType;
    // The value of this group policy setting.
    settingValue?: NullableOption<string>;
    // The display units of this group policy setting value
    settingValueDisplayUnits?: NullableOption<string>;
    // The value type of this group policy setting.
    settingValueType?: NullableOption<string>;
}
export interface UnsupportedGroupPolicyExtension extends Entity {
    // ExtensionType of the unsupported extension.
    extensionType?: NullableOption<string>;
    // Namespace Url of the unsupported extension.
    namespaceUrl?: NullableOption<string>;
    // Node name of the unsupported extension.
    nodeName?: NullableOption<string>;
    // Setting Scope of the unsupported extension. Possible values are: unknown, device, user.
    settingScope?: GroupPolicySettingScope;
}
export interface GroupPolicyConfigurationAssignment extends Entity {
    // The date and time the entity was last modified.
    lastModifiedDateTime?: string;
    // The type of groups targeted the group policy configuration.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface GroupPolicyDefinitionValue extends Entity {
    /**
     * Specifies how the value should be configured. This can be either as a Policy or as a Preference. Possible values are:
     * policy, preference.
     */
    configurationType?: GroupPolicyConfigurationType;
    // The date and time the object was created.
    createdDateTime?: string;
    // Enables or disables the associated group policy definition.
    enabled?: boolean;
    // The date and time the entity was last modified.
    lastModifiedDateTime?: string;
    // The associated group policy definition with the value.
    definition?: NullableOption<GroupPolicyDefinition>;
    // The associated group policy presentation values with the definition value.
    presentationValues?: NullableOption<GroupPolicyPresentationValue[]>;
}
export interface GroupPolicyPresentation extends Entity {
    // Localized text label for any presentation entity. The default value is empty.
    label?: NullableOption<string>;
    // The date and time the entity was last modified.
    lastModifiedDateTime?: string;
    // The group policy definition associated with the presentation.
    definition?: NullableOption<GroupPolicyDefinition>;
}
export interface GroupPolicyPresentationValue extends Entity {
    // The date and time the object was created.
    createdDateTime?: string;
    // The date and time the object was last modified.
    lastModifiedDateTime?: string;
    // The group policy definition value associated with the presentation value.
    definitionValue?: NullableOption<GroupPolicyDefinitionValue>;
    // The group policy presentation associated with the presentation value.
    presentation?: NullableOption<GroupPolicyPresentation>;
}
export interface GroupPolicyOperation extends Entity {
    // The date and time the entity was last modified.
    lastModifiedDateTime?: string;
    // The group policy operation status. Possible values are: unknown, inProgress, success, failed.
    operationStatus?: GroupPolicyOperationStatus;
    /**
     * The type of group policy operation. Possible values are: none, upload, uploadNewVersion, addLanguageFiles,
     * removeLanguageFiles, updateLanguageFiles, remove.
     */
    operationType?: GroupPolicyOperationType;
    // The group policy operation status detail.
    statusDetails?: NullableOption<string>;
}
export interface GroupPolicyPresentationCheckBox extends GroupPolicyPresentation {
    // Default value for the check box. The default value is false.
    defaultChecked?: boolean;
}
export interface GroupPolicyPresentationComboBox extends GroupPolicyPresentation {
    // Localized default string displayed in the combo box. The default value is empty.
    defaultValue?: NullableOption<string>;
    // An unsigned integer that specifies the maximum number of text characters for the parameter. The default value is 1023.
    maxLength?: number;
    // Specifies whether a value must be specified for the parameter. The default value is false.
    required?: boolean;
    // Localized strings listed in the drop-down list of the combo box. The default value is empty.
    suggestions?: NullableOption<string[]>;
}
export interface GroupPolicyPresentationDecimalTextBox extends GroupPolicyPresentation {
    // An unsigned integer that specifies the initial value for the decimal text box. The default value is 1.
    defaultValue?: number;
    // An unsigned integer that specifies the maximum allowed value. The default value is 9999.
    maxValue?: number;
    // An unsigned integer that specifies the minimum allowed value. The default value is 0.
    minValue?: number;
    // Requirement to enter a value in the parameter box. The default value is false.
    required?: boolean;
    // If true, create a spin control; otherwise, create a text box for numeric entry. The default value is true.
    spin?: boolean;
    // An unsigned integer that specifies the increment of change for the spin control. The default value is 1.
    spinStep?: number;
}
export interface GroupPolicyPresentationDropdownList extends GroupPolicyPresentation {
    // Localized string value identifying the default choice of the list of items.
    defaultItem?: NullableOption<GroupPolicyPresentationDropdownListItem>;
    // Represents a set of localized display names and their associated values.
    items?: NullableOption<GroupPolicyPresentationDropdownListItem[]>;
    // Requirement to enter a value in the parameter box. The default value is false.
    required?: boolean;
}
export interface GroupPolicyPresentationListBox extends GroupPolicyPresentation {
    /**
     * If this option is specified true the user must specify the registry subkey value and the registry subkey name. The list
     * box shows two columns, one for the name and one for the data. The default value is false.
     */
    explicitValue?: boolean;
    // Not yet documented
    valuePrefix?: NullableOption<string>;
}
export interface GroupPolicyPresentationLongDecimalTextBox extends GroupPolicyPresentation {
    // An unsigned integer that specifies the initial value for the decimal text box. The default value is 1.
    defaultValue?: number;
    // An unsigned long that specifies the maximum allowed value. The default value is 9999.
    maxValue?: number;
    // An unsigned long that specifies the minimum allowed value. The default value is 0.
    minValue?: number;
    // Requirement to enter a value in the parameter box. The default value is false.
    required?: boolean;
    // If true, create a spin control; otherwise, create a text box for numeric entry. The default value is true.
    spin?: boolean;
    // An unsigned integer that specifies the increment of change for the spin control. The default value is 1.
    spinStep?: number;
}
export interface GroupPolicyPresentationMultiTextBox extends GroupPolicyPresentation {
    // An unsigned integer that specifies the maximum number of text characters. Default value is 1023.
    maxLength?: number;
    // An unsigned integer that specifies the maximum number of strings. Default value is 0.
    maxStrings?: number;
    // Requirement to enter a value in the text box. Default value is false.
    required?: boolean;
}
// tslint:disable-next-line: no-empty-interface
export interface GroupPolicyPresentationText extends GroupPolicyPresentation {}
export interface GroupPolicyPresentationTextBox extends GroupPolicyPresentation {
    // Localized default string displayed in the text box. The default value is empty.
    defaultValue?: NullableOption<string>;
    // An unsigned integer that specifies the maximum number of text characters. Default value is 1023.
    maxLength?: number;
    // Requirement to enter a value in the text box. Default value is false.
    required?: boolean;
}
export interface GroupPolicyPresentationValueBoolean extends GroupPolicyPresentationValue {
    // An boolean value for the associated presentation.
    value?: boolean;
}
export interface GroupPolicyPresentationValueDecimal extends GroupPolicyPresentationValue {
    // An unsigned integer value for the associated presentation.
    value?: number;
}
export interface GroupPolicyPresentationValueList extends GroupPolicyPresentationValue {
    // A list of pairs for the associated presentation.
    values?: NullableOption<KeyValuePair[]>;
}
export interface GroupPolicyPresentationValueLongDecimal extends GroupPolicyPresentationValue {
    // An unsigned long value for the associated presentation.
    value?: number;
}
export interface GroupPolicyPresentationValueMultiText extends GroupPolicyPresentationValue {
    // A collection of non-empty strings for the associated presentation.
    values?: NullableOption<string[]>;
}
export interface GroupPolicyPresentationValueText extends GroupPolicyPresentationValue {
    // A string value for the associated presentation.
    value?: NullableOption<string>;
}
export interface AndroidManagedAppRegistration extends ManagedAppRegistration {
    // The patch version for the current android app registration
    patchVersion?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IosManagedAppRegistration extends ManagedAppRegistration {}
export interface ManagedAppOperation extends Entity {
    // The operation name.
    displayName?: NullableOption<string>;
    // The last time the app operation was modified.
    lastModifiedDateTime?: string;
    // The current state of the operation
    state?: NullableOption<string>;
    // Version of the entity.
    version?: NullableOption<string>;
}
export interface ManagedAppStatusRaw extends ManagedAppStatus {
    // Status report content.
    content?: NullableOption<any>;
}
export interface WindowsInformationProtectionAppLockerFile extends Entity {
    // The friendly name
    displayName?: NullableOption<string>;
    // File as a byte array
    file?: NullableOption<number>;
    // SHA256 hash of the file
    fileHash?: NullableOption<string>;
    // Version of the entity.
    version?: NullableOption<string>;
}
export interface MicrosoftTunnelServer extends Entity {
    // The digest of the current agent image running on this server
    agentImageDigest?: NullableOption<string>;
    // The MicrosoftTunnelServer's display name
    displayName?: NullableOption<string>;
    // When the MicrosoftTunnelServer last checked in
    lastCheckinDateTime?: string;
    // The digest of the current server image running on this server
    serverImageDigest?: NullableOption<string>;
    /**
     * The MicrosoftTunnelServer's health status. Possible values are: unknown, healthy, unhealthy, warning, offline,
     * upgradeInProgress, upgradeFailed.
     */
    tunnelServerHealthStatus?: MicrosoftTunnelServerHealthStatus;
}
export interface LocalizedNotificationMessage extends Entity {
    /**
     * Flag to indicate whether or not this is the default locale for language fallback. This flag can only be set. To unset,
     * set this property to true on another Localized Notification Message.
     */
    isDefault?: boolean;
    // DateTime the object was last modified.
    lastModifiedDateTime?: string;
    // The Locale for which this message is destined.
    locale?: string;
    // The Message Template content.
    messageTemplate?: string;
    // The Message Template Subject.
    subject?: string;
}
export interface AppVulnerabilityManagedDevice extends Entity {
    // The device name.
    displayName?: NullableOption<string>;
    // The created date.
    lastSyncDateTime?: string;
    // The Intune managed device ID.
    managedDeviceId?: NullableOption<string>;
}
export interface AppVulnerabilityMobileApp extends Entity {
    // The created date.
    createdDateTime?: string;
    // The device name.
    displayName?: NullableOption<string>;
    // The last modified date.
    lastModifiedDateTime?: string;
    // The Intune mobile app ID.
    mobileAppId?: NullableOption<string>;
    // The app type.
    mobileAppType?: NullableOption<string>;
    // The app version.
    version?: NullableOption<string>;
}
export interface AppVulnerabilityTask extends DeviceAppManagementTask {
    // The app name.
    appName?: NullableOption<string>;
    // The app publisher.
    appPublisher?: NullableOption<string>;
    // The app version.
    appVersion?: NullableOption<string>;
    // Information about the mitigation.
    insights?: NullableOption<string>;
    // The number of vulnerable devices.
    managedDeviceCount?: number;
    // The mitigation type. Possible values are: unknown, update, uninstall, securityConfiguration.
    mitigationType?: AppVulnerabilityTaskMitigationType;
    // The number of vulnerable mobile apps.
    mobileAppCount?: number;
    // The remediation steps.
    remediation?: NullableOption<string>;
    // The vulnerable managed devices.
    managedDevices?: NullableOption<AppVulnerabilityManagedDevice[]>;
    // The vulnerable mobile apps.
    mobileApps?: NullableOption<AppVulnerabilityMobileApp[]>;
}
export interface SecurityConfigurationTask extends DeviceAppManagementTask {
    // The applicable platform. Possible values are: unknown, macOS, windows10AndLater, windows10AndWindowsServer.
    applicablePlatform?: EndpointSecurityConfigurationApplicablePlatform;
    /**
     * The endpoint security policy type. Possible values are: unknown, antivirus, diskEncryption, firewall,
     * endpointDetectionAndResponse, attackSurfaceReduction, accountProtection.
     */
    endpointSecurityPolicy?: EndpointSecurityConfigurationType;
    /**
     * The endpoint security policy profile. Possible values are: unknown, antivirus, windowsSecurity, bitLocker, fileVault,
     * firewall, firewallRules, endpointDetectionAndResponse, deviceControl, appAndBrowserIsolation, exploitProtection,
     * webProtection, applicationControl, attackSurfaceReductionRules, accountProtection.
     */
    endpointSecurityPolicyProfile?: EndpointSecurityConfigurationProfileType;
    // Information about the mitigation.
    insights?: NullableOption<string>;
    // The intended settings and their values.
    intendedSettings?: NullableOption<KeyValuePair[]>;
    // The number of vulnerable devices.
    managedDeviceCount?: number;
    // The vulnerable managed devices.
    managedDevices?: NullableOption<VulnerableManagedDevice[]>;
}
export interface VulnerableManagedDevice extends Entity {
    // The device name.
    displayName?: NullableOption<string>;
    // The last sync date.
    lastSyncDateTime?: string;
    // The Intune managed device ID.
    managedDeviceId?: NullableOption<string>;
}
export interface UnmanagedDeviceDiscoveryTask extends DeviceAppManagementTask {
    // Unmanaged devices discovered in the network.
    unmanagedDevices?: NullableOption<UnmanagedDevice[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceAndAppManagementRoleDefinition extends RoleDefinition {}
export interface RoleScopeTagAutoAssignment extends Entity {
    // The auto-assignment target for the specific Role Scope Tag.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface EmbeddedSIMActivationCodePoolAssignment extends Entity {
    // The type of groups targeted by the embedded SIM activation code pool.
    target?: DeviceAndAppManagementAssignmentTarget;
}
export interface EmbeddedSIMDeviceState extends Entity {
    // The time the embedded SIM device status was created. Generated service side.
    createdDateTime?: string;
    // Device name to which the subscription was provisioned e.g. DESKTOP-JOE
    deviceName?: NullableOption<string>;
    // The time the embedded SIM device last checked in. Updated service side.
    lastSyncDateTime?: NullableOption<string>;
    // The time the embedded SIM device status was last modified. Updated service side.
    modifiedDateTime?: string;
    /**
     * The state of the profile operation applied to the device. Possible values are: notEvaluated, failed, installing,
     * installed, deleting, error, deleted, removedByUser.
     */
    state?: EmbeddedSIMDeviceStateValue;
    // String description of the provisioning state.
    stateDetails?: NullableOption<string>;
    /**
     * The Universal Integrated Circuit Card Identifier (UICCID) identifying the hardware onto which a profile is to be
     * deployed.
     */
    universalIntegratedCircuitCardIdentifier?: NullableOption<string>;
    // Username which the subscription was provisioned to e.g. joe@contoso.com
    userName?: NullableOption<string>;
}
export interface AppleVppTokenTroubleshootingEvent extends DeviceManagementTroubleshootingEvent {
    // Apple Volume Purchase Program Token Identifier.
    tokenId?: NullableOption<string>;
}
export interface DeviceManagementAutopilotPolicyStatusDetail extends Entity {
    // The policy compliance status. Possible values are: unknown, compliant, installed, notCompliant, notInstalled, error.
    complianceStatus?: DeviceManagementAutopilotPolicyComplianceStatus;
    // The friendly name of the policy.
    displayName?: NullableOption<string>;
    /**
     * The errorode associated with the compliance or enforcement status of the policy. Error code for enforcement status
     * takes precedence if it exists.
     */
    errorCode?: number;
    // Timestamp of the reported policy status
    lastReportedDateTime?: string;
    // The type of policy. Possible values are: unknown, application, appModel, configurationPolicy.
    policyType?: DeviceManagementAutopilotPolicyType;
    // Indicates if this prolicy was tracked as part of the autopilot bootstrap enrollment sync session
    trackedOnEnrollmentStatus?: boolean;
}
export interface EnrollmentTroubleshootingEvent extends DeviceManagementTroubleshootingEvent {
    // Azure AD device identifier.
    deviceId?: NullableOption<string>;
    /**
     * Type of the enrollment. Possible values are: unknown, userEnrollment, deviceEnrollmentManager, appleBulkWithUser,
     * appleBulkWithoutUser, windowsAzureADJoin, windowsBulkUserless, windowsAutoEnrollment, windowsBulkAzureDomainJoin,
     * windowsCoManagement, windowsAzureADJoinUsingDeviceAuth, appleUserEnrollment, appleUserEnrollmentWithServiceAccount,
     * azureAdJoinUsingAzureVmExtension, androidEnterpriseDedicatedDevice, androidEnterpriseFullyManaged,
     * androidEnterpriseCorporateWorkProfile.
     */
    enrollmentType?: DeviceEnrollmentType;
    /**
     * Highlevel failure category. Possible values are: unknown, authentication, authorization, accountValidation,
     * userValidation, deviceNotSupported, inMaintenance, badRequest, featureNotSupported, enrollmentRestrictionsEnforced,
     * clientDisconnected, userAbandonment.
     */
    failureCategory?: DeviceEnrollmentFailureReason;
    // Detailed failure reason.
    failureReason?: NullableOption<string>;
    // Device identifier created or collected by Intune.
    managedDeviceIdentifier?: NullableOption<string>;
    // Operating System.
    operatingSystem?: NullableOption<string>;
    // OS Version.
    osVersion?: NullableOption<string>;
    // Identifier for the user that tried to enroll the device.
    userId?: NullableOption<string>;
}
export interface WindowsDefenderApplicationControlSupplementalPolicyAssignment extends Entity {
    // The target group assignment defined by the admin.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface WindowsDefenderApplicationControlSupplementalPolicyDeploymentSummary extends Entity {
    // Number of Devices that have successfully deployed this WindowsDefenderApplicationControl supplemental policy.
    deployedDeviceCount?: number;
    // Number of Devices that have failed to deploy this WindowsDefenderApplicationControl supplemental policy.
    failedDeviceCount?: number;
}
export interface WindowsDefenderApplicationControlSupplementalPolicyDeploymentStatus extends Entity {
    /**
     * The deployment state of the policy. Possible values are: unknown, success, tokenError, notAuthorizedByToken,
     * policyNotFound.
     */
    deploymentStatus?: WindowsDefenderApplicationControlSupplementalPolicyStatuses;
    // Device ID.
    deviceId?: NullableOption<string>;
    // Device name.
    deviceName?: NullableOption<string>;
    // Last sync date time.
    lastSyncDateTime?: string;
    // Windows OS Version Description.
    osDescription?: NullableOption<string>;
    // Windows OS Version.
    osVersion?: NullableOption<string>;
    // Human readable version of the WindowsDefenderApplicationControl supplemental policy.
    policyVersion?: NullableOption<string>;
    // The name of the user of this device.
    userName?: NullableOption<string>;
    // User Principal Name.
    userPrincipalName?: NullableOption<string>;
    // The navigation link to the WindowsDefenderApplicationControl supplemental policy.
    policy?: NullableOption<WindowsDefenderApplicationControlSupplementalPolicy>;
}
export interface WindowsFeatureUpdateCatalogItem extends WindowsUpdateCatalogItem {
    // The feature update version
    version?: string;
}
export interface WindowsFeatureUpdateProfileAssignment extends Entity {
    // The assignment target that the feature update profile is assigned to.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface WindowsQualityUpdateCatalogItem extends WindowsUpdateCatalogItem {
    // Classification of the quality update. Possible values are: all, security, nonSecurity.
    classification?: WindowsQualityUpdateClassification;
    // Flag indicating if update qualifies for expedite
    isExpeditable?: boolean;
    // Knowledge base article id
    kbArticleId?: string;
}
export interface WindowsQualityUpdateProfileAssignment extends Entity {
    // The assignment target that the feature update profile is assigned to.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
// tslint:disable-next-line: interface-name
export interface IntuneBrandingProfileAssignment extends Entity {
    // Assignment target that the branding profile is assigned to.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface Admin {
    serviceAnnouncement?: NullableOption<ServiceAnnouncement>;
    windows?: NullableOption<WindowsUpdates.Windows>;
}
export interface ServiceAnnouncement extends Entity {
    /**
     * A collection of service health information for tenant. This property is a contained navigation property, it is nullable
     * and readonly.
     */
    healthOverviews?: NullableOption<ServiceHealth[]>;
    /**
     * A collection of service issues for tenant. This property is a contained navigation property, it is nullable and
     * readonly.
     */
    issues?: NullableOption<ServiceHealthIssue[]>;
    /**
     * A collection of service messages for tenant. This property is a contained navigation property, it is nullable and
     * readonly.
     */
    messages?: NullableOption<ServiceUpdateMessage[]>;
}
export interface ServiceHealth extends Entity {
    /**
     * The service name. Use the list healthOverviews operation to get exact string names for services subscribed by the
     * tenant.
     */
    service?: string;
    /**
     * Show the overral service health status. Possible values are: serviceOperational, investigating, restoringService,
     * verifyingService, serviceRestored, postIncidentReviewPublished, serviceDegradation, serviceInterruption,
     * extendedRecovery, falsePositive, investigationSuspended, resolved, mitigatedExternal, mitigated, resolvedExternal,
     * confirmed, reported, unknownFutureValue.
     */
    status?: ServiceHealthStatus;
    // A collection of issues happened on the service, with detailed information for each issue.
    issues?: NullableOption<ServiceHealthIssue[]>;
}
export interface ServiceAnnouncementBase extends Entity {
    // Additional details about service event. This property doesn't support filters.
    details?: NullableOption<KeyValuePair[]>;
    // The end time of the service event.
    endDateTime?: NullableOption<string>;
    // The last modified time of the service event.
    lastModifiedDateTime?: string;
    // The start time of the service event.
    startDateTime?: string;
    // The title of the service event.
    title?: string;
}
export interface ServiceHealthIssue extends ServiceAnnouncementBase {
    // The type of service health issue. Possible values are: advisory, incident, unknownFutureValue.
    classification?: ServiceHealthClassificationType;
    // The feature name of the service issue.
    feature?: NullableOption<string>;
    // The feature group name of the service issue.
    featureGroup?: NullableOption<string>;
    // The description of the service issue impact.
    impactDescription?: string;
    // Indicates whether the issue is resolved.
    isResolved?: boolean;
    // Indicates the origin of the service issue. Possible values are: microsoft, thirdParty, customer, unknownFutureValue.
    origin?: ServiceHealthOrigin;
    // Collection of historical posts for the service issue.
    posts?: ServiceHealthIssuePost[];
    // Indicates the service affected by the issue.
    service?: string;
    /**
     * The status of the service issue. Possible values are: serviceOperational, investigating, restoringService,
     * verifyingService, serviceRestored, postIncidentReviewPublished, serviceDegradation, serviceInterruption,
     * extendedRecovery, falsePositive, investigationSuspended, resolved, mitigatedExternal, mitigated, resolvedExternal,
     * confirmed, reported, unknownFutureValue.
     */
    status?: ServiceHealthStatus;
}
export interface ServiceUpdateMessage extends ServiceAnnouncementBase {
    // The expected deadline of the action for the message.
    actionRequiredByDateTime?: NullableOption<string>;
    // The content type and content of the service message body.
    body?: ItemBody;
    // The service message category. Possible values are: preventOrFixIssue, planForChange, stayInformed, unknownFutureValue.
    category?: ServiceUpdateCategory;
    // Indicates whether the message describes a major update for the service.
    isMajorChange?: NullableOption<boolean>;
    // The affected services by the service message.
    services?: NullableOption<string[]>;
    // The severity of the service message. Possible values are: normal, high, critical, unknownFutureValue.
    severity?: ServiceUpdateSeverity;
    // A collection of tags for the service message.
    tags?: NullableOption<string[]>;
    /**
     * Represents user view points data of the service message. This data includes message status such as whether the user has
     * archived, read, or marked the message as favorite. This property is null when accessed with application permissions.
     */
    viewPoint?: NullableOption<ServiceUpdateMessageViewpoint>;
}
// tslint:disable-next-line: no-empty-interface
export interface SearchEntity extends Entity {}
export interface TenantRelationship {
    // The operations available to interact with the multi-tenant management platform.
    managedTenants?: NullableOption<ManagedTenants.ManagedTenant>;
}
export interface Account extends Entity {
    blocked?: NullableOption<boolean>;
    category?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    number?: NullableOption<string>;
    subCategory?: NullableOption<string>;
}
export interface AgedAccountsPayable extends Entity {
    agedAsOfDate?: NullableOption<string>;
    balanceDue?: NullableOption<number>;
    currencyCode?: NullableOption<string>;
    currentAmount?: NullableOption<number>;
    name?: NullableOption<string>;
    period1Amount?: NullableOption<number>;
    period2Amount?: NullableOption<number>;
    period3Amount?: NullableOption<number>;
    periodLengthFilter?: NullableOption<string>;
    vendorNumber?: NullableOption<string>;
}
export interface AgedAccountsReceivable extends Entity {
    agedAsOfDate?: NullableOption<string>;
    balanceDue?: NullableOption<number>;
    currencyCode?: NullableOption<string>;
    currentAmount?: NullableOption<number>;
    customerNumber?: NullableOption<string>;
    name?: NullableOption<string>;
    period1Amount?: NullableOption<number>;
    period2Amount?: NullableOption<number>;
    period3Amount?: NullableOption<number>;
    periodLengthFilter?: NullableOption<string>;
}
export interface Company extends Entity {
    businessProfileId?: NullableOption<string>;
    displayName?: NullableOption<string>;
    name?: NullableOption<string>;
    systemVersion?: NullableOption<string>;
    accounts?: NullableOption<Account[]>;
    agedAccountsPayable?: NullableOption<AgedAccountsPayable[]>;
    agedAccountsReceivable?: NullableOption<AgedAccountsReceivable[]>;
    companyInformation?: NullableOption<CompanyInformation[]>;
    countriesRegions?: NullableOption<CountryRegion[]>;
    currencies?: NullableOption<Currency[]>;
    customerPaymentJournals?: NullableOption<CustomerPaymentJournal[]>;
    customerPayments?: NullableOption<CustomerPayment[]>;
    customers?: NullableOption<Customer[]>;
    dimensions?: NullableOption<Dimension[]>;
    dimensionValues?: NullableOption<DimensionValue[]>;
    employees?: NullableOption<Employee[]>;
    generalLedgerEntries?: NullableOption<GeneralLedgerEntry[]>;
    itemCategories?: NullableOption<ItemCategory[]>;
    items?: NullableOption<Item[]>;
    journalLines?: NullableOption<JournalLine[]>;
    journals?: NullableOption<Journal[]>;
    paymentMethods?: NullableOption<PaymentMethod[]>;
    paymentTerms?: NullableOption<PaymentTerm[]>;
    picture?: NullableOption<Picture[]>;
    purchaseInvoiceLines?: NullableOption<PurchaseInvoiceLine[]>;
    purchaseInvoices?: NullableOption<PurchaseInvoice[]>;
    salesCreditMemoLines?: NullableOption<SalesCreditMemoLine[]>;
    salesCreditMemos?: NullableOption<SalesCreditMemo[]>;
    salesInvoiceLines?: NullableOption<SalesInvoiceLine[]>;
    salesInvoices?: NullableOption<SalesInvoice[]>;
    salesOrderLines?: NullableOption<SalesOrderLine[]>;
    salesOrders?: NullableOption<SalesOrder[]>;
    salesQuoteLines?: NullableOption<SalesQuoteLine[]>;
    salesQuotes?: NullableOption<SalesQuote[]>;
    shipmentMethods?: NullableOption<ShipmentMethod[]>;
    taxAreas?: NullableOption<TaxArea[]>;
    taxGroups?: NullableOption<TaxGroup[]>;
    unitsOfMeasure?: NullableOption<UnitOfMeasure[]>;
    vendors?: NullableOption<Vendor[]>;
}
export interface CompanyInformation extends Entity {
    address?: NullableOption<PostalAddressType>;
    currencyCode?: NullableOption<string>;
    currentFiscalYearStartDate?: NullableOption<string>;
    displayName?: NullableOption<string>;
    email?: NullableOption<string>;
    faxNumber?: NullableOption<string>;
    industry?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    phoneNumber?: NullableOption<string>;
    picture?: NullableOption<any>;
    taxRegistrationNumber?: NullableOption<string>;
    website?: NullableOption<string>;
}
export interface CountryRegion extends Entity {
    addressFormat?: NullableOption<string>;
    code?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
}
export interface Currency extends Entity {
    amountDecimalPlaces?: NullableOption<string>;
    amountRoundingPrecision?: NullableOption<number>;
    code?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    symbol?: NullableOption<string>;
}
export interface CustomerPaymentJournal extends Entity {
    balancingAccountId?: NullableOption<string>;
    balancingAccountNumber?: NullableOption<string>;
    code?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    account?: NullableOption<Account>;
    customerPayments?: NullableOption<CustomerPayment[]>;
}
export interface CustomerPayment extends Entity {
    amount?: NullableOption<number>;
    appliesToInvoiceId?: NullableOption<string>;
    appliesToInvoiceNumber?: NullableOption<string>;
    comment?: NullableOption<string>;
    contactId?: NullableOption<string>;
    customerId?: NullableOption<string>;
    customerNumber?: NullableOption<string>;
    description?: NullableOption<string>;
    documentNumber?: NullableOption<string>;
    externalDocumentNumber?: NullableOption<string>;
    journalDisplayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    lineNumber?: NullableOption<number>;
    postingDate?: NullableOption<string>;
    customer?: NullableOption<Customer>;
}
export interface Customer extends Entity {
    address?: NullableOption<PostalAddressType>;
    blocked?: NullableOption<string>;
    currencyCode?: NullableOption<string>;
    currencyId?: NullableOption<string>;
    displayName?: NullableOption<string>;
    email?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    number?: NullableOption<string>;
    paymentMethodId?: NullableOption<string>;
    paymentTermsId?: NullableOption<string>;
    phoneNumber?: NullableOption<string>;
    shipmentMethodId?: NullableOption<string>;
    taxAreaDisplayName?: NullableOption<string>;
    taxAreaId?: NullableOption<string>;
    taxLiable?: NullableOption<boolean>;
    taxRegistrationNumber?: NullableOption<string>;
    type?: NullableOption<string>;
    website?: NullableOption<string>;
    currency?: NullableOption<Currency>;
    paymentMethod?: NullableOption<PaymentMethod>;
    paymentTerm?: NullableOption<PaymentTerm>;
    picture?: NullableOption<Picture[]>;
    shipmentMethod?: NullableOption<ShipmentMethod>;
}
export interface Dimension extends Entity {
    code?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    dimensionValues?: NullableOption<DimensionValue[]>;
}
export interface DimensionValue extends Entity {
    code?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
}
export interface Employee extends Entity {
    address?: NullableOption<PostalAddressType>;
    birthDate?: NullableOption<string>;
    displayName?: NullableOption<string>;
    email?: NullableOption<string>;
    employmentDate?: NullableOption<string>;
    givenName?: NullableOption<string>;
    jobTitle?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    middleName?: NullableOption<string>;
    mobilePhone?: NullableOption<string>;
    number?: NullableOption<string>;
    personalEmail?: NullableOption<string>;
    phoneNumber?: NullableOption<string>;
    statisticsGroupCode?: NullableOption<string>;
    status?: NullableOption<string>;
    surname?: NullableOption<string>;
    terminationDate?: NullableOption<string>;
    picture?: NullableOption<Picture[]>;
}
export interface GeneralLedgerEntry extends Entity {
    accountId?: NullableOption<string>;
    accountNumber?: NullableOption<string>;
    creditAmount?: NullableOption<number>;
    debitAmount?: NullableOption<number>;
    description?: NullableOption<string>;
    documentNumber?: NullableOption<string>;
    documentType?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    postingDate?: NullableOption<string>;
    account?: NullableOption<Account>;
}
// tslint:disable-next-line: interface-name
export interface ItemCategory extends Entity {
    code?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface Item extends Entity {
    baseUnitOfMeasureId?: NullableOption<string>;
    blocked?: NullableOption<boolean>;
    displayName?: NullableOption<string>;
    gtin?: NullableOption<string>;
    inventory?: NullableOption<number>;
    itemCategoryCode?: NullableOption<string>;
    itemCategoryId?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    number?: NullableOption<string>;
    priceIncludesTax?: NullableOption<boolean>;
    taxGroupCode?: NullableOption<string>;
    taxGroupId?: NullableOption<string>;
    type?: NullableOption<string>;
    unitCost?: NullableOption<number>;
    unitPrice?: NullableOption<number>;
    itemCategory?: NullableOption<ItemCategory>;
    picture?: NullableOption<Picture[]>;
}
export interface JournalLine extends Entity {
    accountId?: NullableOption<string>;
    accountNumber?: NullableOption<string>;
    amount?: NullableOption<number>;
    comment?: NullableOption<string>;
    description?: NullableOption<string>;
    documentNumber?: NullableOption<string>;
    externalDocumentNumber?: NullableOption<string>;
    journalDisplayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    lineNumber?: NullableOption<number>;
    postingDate?: NullableOption<string>;
    account?: NullableOption<Account>;
}
export interface Journal extends Entity {
    balancingAccountId?: NullableOption<string>;
    balancingAccountNumber?: NullableOption<string>;
    code?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    account?: NullableOption<Account>;
    journalLines?: NullableOption<JournalLine[]>;
}
export interface PaymentMethod extends Entity {
    code?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
}
export interface PaymentTerm extends Entity {
    calculateDiscountOnCreditMemos?: NullableOption<boolean>;
    code?: NullableOption<string>;
    discountDateCalculation?: NullableOption<string>;
    discountPercent?: NullableOption<number>;
    displayName?: NullableOption<string>;
    dueDateCalculation?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
}
export interface Picture extends Entity {
    content?: NullableOption<any>;
    contentType?: NullableOption<string>;
    height?: NullableOption<number>;
    width?: NullableOption<number>;
}
export interface PurchaseInvoiceLine extends Entity {
    accountId?: NullableOption<string>;
    amountExcludingTax?: NullableOption<number>;
    amountIncludingTax?: NullableOption<number>;
    description?: NullableOption<string>;
    discountAmount?: NullableOption<number>;
    discountAppliedBeforeTax?: NullableOption<boolean>;
    discountPercent?: NullableOption<number>;
    documentId?: NullableOption<string>;
    expectedReceiptDate?: NullableOption<string>;
    invoiceDiscountAllocation?: NullableOption<number>;
    itemId?: NullableOption<string>;
    lineType?: NullableOption<string>;
    netAmount?: NullableOption<number>;
    netAmountIncludingTax?: NullableOption<number>;
    netTaxAmount?: NullableOption<number>;
    quantity?: NullableOption<number>;
    sequence?: NullableOption<number>;
    taxCode?: NullableOption<string>;
    taxPercent?: NullableOption<number>;
    totalTaxAmount?: NullableOption<number>;
    unitCost?: NullableOption<number>;
    account?: NullableOption<Account>;
    item?: NullableOption<Item>;
}
export interface PurchaseInvoice extends Entity {
    buyFromAddress?: NullableOption<PostalAddressType>;
    currencyCode?: NullableOption<string>;
    currencyId?: NullableOption<string>;
    discountAmount?: NullableOption<number>;
    discountAppliedBeforeTax?: NullableOption<boolean>;
    dueDate?: NullableOption<string>;
    invoiceDate?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    number?: NullableOption<string>;
    payToAddress?: NullableOption<PostalAddressType>;
    payToContact?: NullableOption<string>;
    payToName?: NullableOption<string>;
    payToVendorId?: NullableOption<string>;
    payToVendorNumber?: NullableOption<string>;
    pricesIncludeTax?: NullableOption<boolean>;
    shipToAddress?: NullableOption<PostalAddressType>;
    shipToContact?: NullableOption<string>;
    shipToName?: NullableOption<string>;
    status?: NullableOption<string>;
    totalAmountExcludingTax?: NullableOption<number>;
    totalAmountIncludingTax?: NullableOption<number>;
    totalTaxAmount?: NullableOption<number>;
    vendorId?: NullableOption<string>;
    vendorInvoiceNumber?: NullableOption<string>;
    vendorName?: NullableOption<string>;
    vendorNumber?: NullableOption<string>;
    currency?: NullableOption<Currency>;
    purchaseInvoiceLines?: NullableOption<PurchaseInvoiceLine[]>;
    vendor?: NullableOption<Vendor>;
}
export interface SalesCreditMemoLine extends Entity {
    accountId?: NullableOption<string>;
    amountExcludingTax?: NullableOption<number>;
    amountIncludingTax?: NullableOption<number>;
    description?: NullableOption<string>;
    discountAmount?: NullableOption<number>;
    discountAppliedBeforeTax?: NullableOption<boolean>;
    discountPercent?: NullableOption<number>;
    documentId?: NullableOption<string>;
    invoiceDiscountAllocation?: NullableOption<number>;
    itemId?: NullableOption<string>;
    lineType?: NullableOption<string>;
    netAmount?: NullableOption<number>;
    netAmountIncludingTax?: NullableOption<number>;
    netTaxAmount?: NullableOption<number>;
    quantity?: NullableOption<number>;
    sequence?: NullableOption<number>;
    shipmentDate?: NullableOption<string>;
    taxCode?: NullableOption<string>;
    taxPercent?: NullableOption<number>;
    totalTaxAmount?: NullableOption<number>;
    unitOfMeasureId?: NullableOption<string>;
    unitPrice?: NullableOption<number>;
    account?: NullableOption<Account>;
    item?: NullableOption<Item>;
}
export interface SalesCreditMemo extends Entity {
    billingPostalAddress?: NullableOption<PostalAddressType>;
    billToCustomerId?: NullableOption<string>;
    billToCustomerNumber?: NullableOption<string>;
    billToName?: NullableOption<string>;
    creditMemoDate?: NullableOption<string>;
    currencyCode?: NullableOption<string>;
    currencyId?: NullableOption<string>;
    customerId?: NullableOption<string>;
    customerName?: NullableOption<string>;
    customerNumber?: NullableOption<string>;
    discountAmount?: NullableOption<number>;
    discountAppliedBeforeTax?: NullableOption<boolean>;
    dueDate?: NullableOption<string>;
    email?: NullableOption<string>;
    externalDocumentNumber?: NullableOption<string>;
    invoiceId?: NullableOption<string>;
    invoiceNumber?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    number?: NullableOption<string>;
    paymentTermsId?: NullableOption<string>;
    phoneNumber?: NullableOption<string>;
    pricesIncludeTax?: NullableOption<boolean>;
    salesperson?: NullableOption<string>;
    sellingPostalAddress?: NullableOption<PostalAddressType>;
    status?: NullableOption<string>;
    totalAmountExcludingTax?: NullableOption<number>;
    totalAmountIncludingTax?: NullableOption<number>;
    totalTaxAmount?: NullableOption<number>;
    currency?: NullableOption<Currency>;
    customer?: NullableOption<Customer>;
    paymentTerm?: NullableOption<PaymentTerm>;
    salesCreditMemoLines?: NullableOption<SalesCreditMemoLine[]>;
}
export interface SalesInvoiceLine extends Entity {
    accountId?: NullableOption<string>;
    amountExcludingTax?: NullableOption<number>;
    amountIncludingTax?: NullableOption<number>;
    description?: NullableOption<string>;
    discountAmount?: NullableOption<number>;
    discountAppliedBeforeTax?: NullableOption<boolean>;
    discountPercent?: NullableOption<number>;
    documentId?: NullableOption<string>;
    invoiceDiscountAllocation?: NullableOption<number>;
    itemId?: NullableOption<string>;
    lineType?: NullableOption<string>;
    netAmount?: NullableOption<number>;
    netAmountIncludingTax?: NullableOption<number>;
    netTaxAmount?: NullableOption<number>;
    quantity?: NullableOption<number>;
    sequence?: NullableOption<number>;
    shipmentDate?: NullableOption<string>;
    taxCode?: NullableOption<string>;
    taxPercent?: NullableOption<number>;
    totalTaxAmount?: NullableOption<number>;
    unitOfMeasureId?: NullableOption<string>;
    unitPrice?: NullableOption<number>;
    account?: NullableOption<Account>;
    item?: NullableOption<Item>;
}
export interface SalesInvoice extends Entity {
    billingPostalAddress?: NullableOption<PostalAddressType>;
    billToCustomerId?: NullableOption<string>;
    billToCustomerNumber?: NullableOption<string>;
    billToName?: NullableOption<string>;
    currencyCode?: NullableOption<string>;
    currencyId?: NullableOption<string>;
    customerId?: NullableOption<string>;
    customerName?: NullableOption<string>;
    customerNumber?: NullableOption<string>;
    customerPurchaseOrderReference?: NullableOption<string>;
    discountAmount?: NullableOption<number>;
    discountAppliedBeforeTax?: NullableOption<boolean>;
    dueDate?: NullableOption<string>;
    email?: NullableOption<string>;
    externalDocumentNumber?: NullableOption<string>;
    invoiceDate?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    number?: NullableOption<string>;
    orderId?: NullableOption<string>;
    orderNumber?: NullableOption<string>;
    paymentTermsId?: NullableOption<string>;
    phoneNumber?: NullableOption<string>;
    pricesIncludeTax?: NullableOption<boolean>;
    salesperson?: NullableOption<string>;
    sellingPostalAddress?: NullableOption<PostalAddressType>;
    shipmentMethodId?: NullableOption<string>;
    shippingPostalAddress?: NullableOption<PostalAddressType>;
    shipToContact?: NullableOption<string>;
    shipToName?: NullableOption<string>;
    status?: NullableOption<string>;
    totalAmountExcludingTax?: NullableOption<number>;
    totalAmountIncludingTax?: NullableOption<number>;
    totalTaxAmount?: NullableOption<number>;
    currency?: NullableOption<Currency>;
    customer?: NullableOption<Customer>;
    paymentTerm?: NullableOption<PaymentTerm>;
    salesInvoiceLines?: NullableOption<SalesInvoiceLine[]>;
    shipmentMethod?: NullableOption<ShipmentMethod>;
}
export interface SalesOrderLine extends Entity {
    accountId?: NullableOption<string>;
    amountExcludingTax?: NullableOption<number>;
    amountIncludingTax?: NullableOption<number>;
    description?: NullableOption<string>;
    discountAmount?: NullableOption<number>;
    discountAppliedBeforeTax?: NullableOption<boolean>;
    discountPercent?: NullableOption<number>;
    documentId?: NullableOption<string>;
    invoiceDiscountAllocation?: NullableOption<number>;
    invoicedQuantity?: NullableOption<number>;
    invoiceQuantity?: NullableOption<number>;
    itemId?: NullableOption<string>;
    lineType?: NullableOption<string>;
    netAmount?: NullableOption<number>;
    netAmountIncludingTax?: NullableOption<number>;
    netTaxAmount?: NullableOption<number>;
    quantity?: NullableOption<number>;
    sequence?: NullableOption<number>;
    shipmentDate?: NullableOption<string>;
    shippedQuantity?: NullableOption<number>;
    shipQuantity?: NullableOption<number>;
    taxCode?: NullableOption<string>;
    taxPercent?: NullableOption<number>;
    totalTaxAmount?: NullableOption<number>;
    unitOfMeasureId?: NullableOption<string>;
    unitPrice?: NullableOption<number>;
    account?: NullableOption<Account>;
    item?: NullableOption<Item>;
}
export interface SalesOrder extends Entity {
    billingPostalAddress?: NullableOption<PostalAddressType>;
    billToCustomerId?: NullableOption<string>;
    billToCustomerNumber?: NullableOption<string>;
    billToName?: NullableOption<string>;
    currencyCode?: NullableOption<string>;
    currencyId?: NullableOption<string>;
    customerId?: NullableOption<string>;
    customerName?: NullableOption<string>;
    customerNumber?: NullableOption<string>;
    discountAmount?: NullableOption<number>;
    discountAppliedBeforeTax?: NullableOption<boolean>;
    email?: NullableOption<string>;
    externalDocumentNumber?: NullableOption<string>;
    fullyShipped?: NullableOption<boolean>;
    lastModifiedDateTime?: NullableOption<string>;
    number?: NullableOption<string>;
    orderDate?: NullableOption<string>;
    partialShipping?: NullableOption<boolean>;
    paymentTermsId?: NullableOption<string>;
    phoneNumber?: NullableOption<string>;
    pricesIncludeTax?: NullableOption<boolean>;
    requestedDeliveryDate?: NullableOption<string>;
    salesperson?: NullableOption<string>;
    sellingPostalAddress?: NullableOption<PostalAddressType>;
    shippingPostalAddress?: NullableOption<PostalAddressType>;
    shipToContact?: NullableOption<string>;
    shipToName?: NullableOption<string>;
    status?: NullableOption<string>;
    totalAmountExcludingTax?: NullableOption<number>;
    totalAmountIncludingTax?: NullableOption<number>;
    totalTaxAmount?: NullableOption<number>;
    currency?: NullableOption<Currency>;
    customer?: NullableOption<Customer>;
    paymentTerm?: NullableOption<PaymentTerm>;
    salesOrderLines?: NullableOption<SalesOrderLine[]>;
}
export interface SalesQuoteLine extends Entity {
    accountId?: NullableOption<string>;
    amountExcludingTax?: NullableOption<number>;
    amountIncludingTax?: NullableOption<number>;
    description?: NullableOption<string>;
    discountAmount?: NullableOption<number>;
    discountAppliedBeforeTax?: NullableOption<boolean>;
    discountPercent?: NullableOption<number>;
    documentId?: NullableOption<string>;
    itemId?: NullableOption<string>;
    lineType?: NullableOption<string>;
    netAmount?: NullableOption<number>;
    netAmountIncludingTax?: NullableOption<number>;
    netTaxAmount?: NullableOption<number>;
    quantity?: NullableOption<number>;
    sequence?: NullableOption<number>;
    taxCode?: NullableOption<string>;
    taxPercent?: NullableOption<number>;
    totalTaxAmount?: NullableOption<number>;
    unitOfMeasureId?: NullableOption<string>;
    unitPrice?: NullableOption<number>;
    account?: NullableOption<Account>;
    item?: NullableOption<Item>;
}
export interface SalesQuote extends Entity {
    acceptedDate?: NullableOption<string>;
    billingPostalAddress?: NullableOption<PostalAddressType>;
    billToCustomerId?: NullableOption<string>;
    billToCustomerNumber?: NullableOption<string>;
    billToName?: NullableOption<string>;
    currencyCode?: NullableOption<string>;
    currencyId?: NullableOption<string>;
    customerId?: NullableOption<string>;
    customerName?: NullableOption<string>;
    customerNumber?: NullableOption<string>;
    discountAmount?: NullableOption<number>;
    documentDate?: NullableOption<string>;
    dueDate?: NullableOption<string>;
    email?: NullableOption<string>;
    externalDocumentNumber?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    number?: NullableOption<string>;
    paymentTermsId?: NullableOption<string>;
    phoneNumber?: NullableOption<string>;
    salesperson?: NullableOption<string>;
    sellingPostalAddress?: NullableOption<PostalAddressType>;
    sentDate?: NullableOption<string>;
    shipmentMethodId?: NullableOption<string>;
    shippingPostalAddress?: NullableOption<PostalAddressType>;
    shipToContact?: NullableOption<string>;
    shipToName?: NullableOption<string>;
    status?: NullableOption<string>;
    totalAmountExcludingTax?: NullableOption<number>;
    totalAmountIncludingTax?: NullableOption<number>;
    totalTaxAmount?: NullableOption<number>;
    validUntilDate?: NullableOption<string>;
    currency?: NullableOption<Currency>;
    customer?: NullableOption<Customer>;
    paymentTerm?: NullableOption<PaymentTerm>;
    salesQuoteLines?: NullableOption<SalesQuoteLine[]>;
    shipmentMethod?: NullableOption<ShipmentMethod>;
}
export interface ShipmentMethod extends Entity {
    code?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
}
export interface TaxArea extends Entity {
    code?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    taxType?: NullableOption<string>;
}
export interface TaxGroup extends Entity {
    code?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    taxType?: NullableOption<string>;
}
export interface UnitOfMeasure extends Entity {
    code?: NullableOption<string>;
    displayName?: NullableOption<string>;
    internationalStandardCode?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
}
export interface Vendor extends Entity {
    address?: NullableOption<PostalAddressType>;
    balance?: NullableOption<number>;
    blocked?: NullableOption<string>;
    currencyCode?: NullableOption<string>;
    currencyId?: NullableOption<string>;
    displayName?: NullableOption<string>;
    email?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    number?: NullableOption<string>;
    paymentMethodId?: NullableOption<string>;
    paymentTermsId?: NullableOption<string>;
    phoneNumber?: NullableOption<string>;
    taxLiable?: NullableOption<boolean>;
    taxRegistrationNumber?: NullableOption<string>;
    website?: NullableOption<string>;
    currency?: NullableOption<Currency>;
    paymentMethod?: NullableOption<PaymentMethod>;
    paymentTerm?: NullableOption<PaymentTerm>;
    picture?: NullableOption<Picture[]>;
}
export interface Financials {
    companies?: NullableOption<Company[]>;
}
export interface EmailActivitySummary extends Entity {
    read?: NullableOption<number>;
    receive?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    send?: NullableOption<number>;
}
export interface EmailActivityUserDetail extends Entity {
    assignedProducts?: NullableOption<string[]>;
    deletedDate?: NullableOption<string>;
    displayName?: NullableOption<string>;
    isDeleted?: NullableOption<boolean>;
    lastActivityDate?: NullableOption<string>;
    readCount?: NullableOption<number>;
    receiveCount?: NullableOption<number>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    sendCount?: NullableOption<number>;
    userPrincipalName?: NullableOption<string>;
}
export interface EmailAppUsageAppsUserCounts extends Entity {
    imap4App?: NullableOption<number>;
    mailForMac?: NullableOption<number>;
    otherForMobile?: NullableOption<number>;
    outlookForMac?: NullableOption<number>;
    outlookForMobile?: NullableOption<number>;
    outlookForWeb?: NullableOption<number>;
    outlookForWindows?: NullableOption<number>;
    pop3App?: NullableOption<number>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    smtpApp?: NullableOption<number>;
}
export interface EmailAppUsageUserCounts extends Entity {
    imap4App?: NullableOption<number>;
    mailForMac?: NullableOption<number>;
    otherForMobile?: NullableOption<number>;
    outlookForMac?: NullableOption<number>;
    outlookForMobile?: NullableOption<number>;
    outlookForWeb?: NullableOption<number>;
    outlookForWindows?: NullableOption<number>;
    pop3App?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    smtpApp?: NullableOption<number>;
}
export interface EmailAppUsageUserDetail extends Entity {
    deletedDate?: NullableOption<string>;
    displayName?: NullableOption<string>;
    imap4App?: NullableOption<string[]>;
    isDeleted?: NullableOption<boolean>;
    lastActivityDate?: NullableOption<string>;
    mailForMac?: NullableOption<string[]>;
    otherForMobile?: NullableOption<string[]>;
    outlookForMac?: NullableOption<string[]>;
    outlookForMobile?: NullableOption<string[]>;
    outlookForWeb?: NullableOption<string[]>;
    outlookForWindows?: NullableOption<string[]>;
    pop3App?: NullableOption<string[]>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    smtpApp?: NullableOption<string[]>;
    userPrincipalName?: NullableOption<string>;
}
export interface EmailAppUsageVersionsUserCounts extends Entity {
    outlook2007?: NullableOption<number>;
    outlook2010?: NullableOption<number>;
    outlook2013?: NullableOption<number>;
    outlook2016?: NullableOption<number>;
    outlook2019?: NullableOption<number>;
    outlookM365?: NullableOption<number>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    undetermined?: NullableOption<number>;
}
export interface MailboxUsageDetail extends Entity {
    createdDate?: NullableOption<string>;
    deletedDate?: NullableOption<string>;
    deletedItemCount?: NullableOption<number>;
    deletedItemSizeInBytes?: NullableOption<number>;
    displayName?: NullableOption<string>;
    isDeleted?: NullableOption<boolean>;
    issueWarningQuotaInBytes?: NullableOption<number>;
    itemCount?: NullableOption<number>;
    lastActivityDate?: NullableOption<string>;
    prohibitSendQuotaInBytes?: NullableOption<number>;
    prohibitSendReceiveQuotaInBytes?: NullableOption<number>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    storageUsedInBytes?: NullableOption<number>;
    userPrincipalName?: NullableOption<string>;
}
export interface MailboxUsageMailboxCounts extends Entity {
    active?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    total?: NullableOption<number>;
}
export interface MailboxUsageQuotaStatusMailboxCounts extends Entity {
    indeterminate?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    sendProhibited?: NullableOption<number>;
    sendReceiveProhibited?: NullableOption<number>;
    underLimit?: NullableOption<number>;
    warningIssued?: NullableOption<number>;
}
export interface MailboxUsageStorage extends Entity {
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    storageUsedInBytes?: NullableOption<number>;
}
export interface Office365ActivationCounts extends Entity {
    // The activation count on an Android device.
    android?: NullableOption<number>;
    // The activation count on iOS.
    ios?: NullableOption<number>;
    // The activation count on Mac OS.
    mac?: NullableOption<number>;
    // The product type, such as 'Microsoft 365 ProPlus' or 'Project Client'.
    productType?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The activation count on Windows. This number includes every activation on any Windows computer.
    windows?: NullableOption<number>;
    // The activation count on Windows 10 mobile.
    windows10Mobile?: NullableOption<number>;
}
export interface Office365ActivationsUserCounts extends Entity {
    // The number of users who have activated the product.
    activated?: NullableOption<number>;
    // The number of users have been assigned for the product license.
    assigned?: NullableOption<number>;
    // The product type such as 'Microsoft 365 ProPlus' or 'Project Client'.
    productType?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The number of users who have used the product on a shared computer.
    sharedComputerActivation?: NullableOption<number>;
}
export interface Office365ActivationsUserDetail extends Entity {
    /**
     * 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.
     */
    displayName?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The user's latest product activation counts on all the platforms for all the assigned product types.
    userActivationCounts?: NullableOption<UserActivationCounts[]>;
    /**
     * 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.
     */
    userPrincipalName?: NullableOption<string>;
}
export interface Office365ActiveUserCounts extends Entity {
    // The number of active users in Exchange. Any user who can read and send email is considered an active user.
    exchange?: NullableOption<number>;
    /**
     * The number of active users in Microsoft 365. This number includes all the active users in Exchange, OneDrive,
     * SharePoint, Skype For Business, Yammer, and Microsoft Teams. You can find the definition of active user for each
     * product in the respective property description.
     */
    office365?: NullableOption<number>;
    /**
     * The number of active users in OneDrive. Any user who viewed or edited files, shared files internally or externally, or
     * synced files is considered an active user.
     */
    oneDrive?: NullableOption<number>;
    // The date on which a number of users were active.
    reportDate?: NullableOption<string>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    /**
     * The number of active users in SharePoint. Any user who viewed or edited files, shared files internally or externally,
     * synced files, or viewed SharePoint pages is considered an active user.
     */
    sharePoint?: NullableOption<number>;
    /**
     * The number of active users in Skype For Business. Any user who organized or participated in conferences, or joined
     * peer-to-peer sessions is considered an active user.
     */
    skypeForBusiness?: NullableOption<number>;
    /**
     * The number of active users in Microsoft Teams. Any user who posted messages in team channels, sent messages in private
     * chat sessions, or participated in meetings or calls is considered an active user.
     */
    teams?: NullableOption<number>;
    // The number of active users in Yammer. Any user who can post, read, or like messages is considered an active user.
    yammer?: NullableOption<number>;
}
export interface Office365ActiveUserDetail extends Entity {
    // All the products assigned for the user.
    assignedProducts?: NullableOption<string[]>;
    // The date when the delete operation happened. Default value is 'null' when the user has not been deleted.
    deletedDate?: NullableOption<string>;
    /**
     * 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.
     */
    displayName?: NullableOption<string>;
    // The date when user last read or sent email.
    exchangeLastActivityDate?: NullableOption<string>;
    // The last date when the user was assigned an Exchange license.
    exchangeLicenseAssignDate?: NullableOption<string>;
    // Whether the user has been assigned an Exchange license.
    hasExchangeLicense?: NullableOption<boolean>;
    // Whether the user has been assigned a OneDrive license.
    hasOneDriveLicense?: NullableOption<boolean>;
    // Whether the user has been assigned a SharePoint license.
    hasSharePointLicense?: NullableOption<boolean>;
    // Whether the user has been assigned a Skype For Business license.
    hasSkypeForBusinessLicense?: NullableOption<boolean>;
    // Whether the user has been assigned a Teams license.
    hasTeamsLicense?: NullableOption<boolean>;
    // Whether the user has been assigned a Yammer license.
    hasYammerLicense?: NullableOption<boolean>;
    // Whether this user has been deleted or soft deleted.
    isDeleted?: NullableOption<boolean>;
    // The date when user last viewed or edited files, shared files internally or externally, or synced files.
    oneDriveLastActivityDate?: NullableOption<string>;
    // The last date when the user was assigned a OneDrive license.
    oneDriveLicenseAssignDate?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    /**
     * The date when user last viewed or edited files, shared files internally or externally, synced files, or viewed
     * SharePoint pages.
     */
    sharePointLastActivityDate?: NullableOption<string>;
    // The last date when the user was assigned a SharePoint license.
    sharePointLicenseAssignDate?: NullableOption<string>;
    // The date when user last organized or participated in conferences, or joined peer-to-peer sessions.
    skypeForBusinessLastActivityDate?: NullableOption<string>;
    // The last date when the user was assigned a Skype For Business license.
    skypeForBusinessLicenseAssignDate?: NullableOption<string>;
    /**
     * The date when user last posted messages in team channels, sent messages in private chat sessions, or participated in
     * meetings or calls.
     */
    teamsLastActivityDate?: NullableOption<string>;
    // The last date when the user was assigned a Teams license.
    teamsLicenseAssignDate?: NullableOption<string>;
    /**
     * 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.
     */
    userPrincipalName?: NullableOption<string>;
    // The date when user last posted, read, or liked message.
    yammerLastActivityDate?: NullableOption<string>;
    // The last date when the user was assigned a Yammer license.
    yammerLicenseAssignDate?: NullableOption<string>;
}
export interface Office365GroupsActivityCounts extends Entity {
    // The number of emails received by Group mailboxes.
    exchangeEmailsReceived?: NullableOption<number>;
    /**
     * The date on which a number of emails were sent to a group mailbox or a number of messages were posted, read, or liked
     * in a Yammer group
     */
    reportDate?: NullableOption<string>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The number of messages liked in Yammer groups.
    yammerMessagesLiked?: NullableOption<number>;
    // The number of messages posted to Yammer groups.
    yammerMessagesPosted?: NullableOption<number>;
    // The number of messages read in Yammer groups.
    yammerMessagesRead?: NullableOption<number>;
}
export interface Office365GroupsActivityDetail extends Entity {
    // The storage used of the group mailbox.
    exchangeMailboxStorageUsedInBytes?: NullableOption<number>;
    // The number of items in the group mailbox.
    exchangeMailboxTotalItemCount?: NullableOption<number>;
    // The number of email that the group mailbox received.
    exchangeReceivedEmailCount?: NullableOption<number>;
    // The group external member count.
    externalMemberCount?: NullableOption<number>;
    // The display name of the group.
    groupDisplayName?: NullableOption<string>;
    // The group id.
    groupId?: NullableOption<string>;
    // The group type. Possible values are: Public or Private.
    groupType?: NullableOption<string>;
    // Whether this user has been deleted or soft deleted.
    isDeleted?: NullableOption<boolean>;
    /**
     * The last activity date for the following scenarios: group mailbox received email; user viewed, edited, shared, or
     * synced files in SharePoint document library; user viewed SharePoint pages; user posted, read, or liked messages in
     * Yammer groups.
     */
    lastActivityDate?: NullableOption<string>;
    // The group member count.
    memberCount?: NullableOption<number>;
    // The group owner principal name.
    ownerPrincipalName?: NullableOption<string>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The number of active files in SharePoint Group site.
    sharePointActiveFileCount?: NullableOption<number>;
    // The storage used by SharePoint Group site.
    sharePointSiteStorageUsedInBytes?: NullableOption<number>;
    // The total number of files in SharePoint Group site.
    sharePointTotalFileCount?: NullableOption<number>;
    // The number of messages liked in Yammer groups.
    yammerLikedMessageCount?: NullableOption<number>;
    // The number of messages posted to Yammer groups.
    yammerPostedMessageCount?: NullableOption<number>;
    // The number of messages read in Yammer groups.
    yammerReadMessageCount?: NullableOption<number>;
}
export interface Office365GroupsActivityFileCounts extends Entity {
    // The number of files that were viewed, edited, shared, or synced in the group's SharePoint document library.
    active?: NullableOption<number>;
    // The date on which a number of files were active in the group's SharePoint site.
    reportDate?: NullableOption<string>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The total number of files in the group's SharePoint document library.
    total?: NullableOption<number>;
}
export interface Office365GroupsActivityGroupCounts extends Entity {
    /**
     * The number of active groups. A group is considered active if any of the following occurred: group mailbox received
     * email; user viewed, edited, shared, or synced files in SharePoint document library; user viewed SharePoint pages; user
     * posted, read, or liked messages in Yammer groups.
     */
    active?: NullableOption<number>;
    // The date on which a number of groups were active.
    reportDate?: NullableOption<string>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The total number of groups.
    total?: NullableOption<number>;
}
export interface Office365GroupsActivityStorage extends Entity {
    // The storage used in group mailbox.
    mailboxStorageUsedInBytes?: NullableOption<number>;
    // The snapshot date for Exchange and SharePoint used storage.
    reportDate?: NullableOption<string>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The storage used in SharePoint document library.
    siteStorageUsedInBytes?: NullableOption<number>;
}
export interface Office365ServicesUserCounts extends Entity {
    // The number of active users on Exchange. Any user who can read and send email is considered an active user.
    exchangeActive?: NullableOption<number>;
    // The number of inactive users on Exchange.
    exchangeInactive?: NullableOption<number>;
    // The number of active users on Microsoft 365.
    office365Active?: NullableOption<number>;
    // The number of inactive users on Microsoft 365.
    office365Inactive?: NullableOption<number>;
    /**
     * The number of active users on OneDrive. Any user who viewed or edited files, shared files internally or externally, or
     * synced files is considered an active user.
     */
    oneDriveActive?: NullableOption<number>;
    // The number of inactive users on OneDrive.
    oneDriveInactive?: NullableOption<number>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    /**
     * The number of active users on SharePoint. Any user who viewed or edited files, shared files internally or externally,
     * synced files, or viewed SharePoint pages is considered an active user.
     */
    sharePointActive?: NullableOption<number>;
    // The number of inactive users on SharePoint.
    sharePointInactive?: NullableOption<number>;
    /**
     * The number of active users on Skype For Business. Any user who organized or participated in conferences, or joined
     * peer-to-peer sessions is considered an active user.
     */
    skypeForBusinessActive?: NullableOption<number>;
    // The number of inactive users on Skype For Business.
    skypeForBusinessInactive?: NullableOption<number>;
    /**
     * The number of active users on Microsoft Teams. Any user who posted messages in team channels, sent messages in private
     * chat sessions, or participated in meetings or calls is considered an active user.
     */
    teamsActive?: NullableOption<number>;
    // The number of inactive users on Microsoft Teams.
    teamsInactive?: NullableOption<number>;
    // The number of active users on Yammer. Any user who can post, read, or like messages is considered an active user.
    yammerActive?: NullableOption<number>;
    // The number of inactive users on Yammer.
    yammerInactive?: NullableOption<number>;
}
export interface OneDriveActivityUserDetail extends Entity {
    assignedProducts?: NullableOption<string[]>;
    deletedDate?: NullableOption<string>;
    isDeleted?: NullableOption<boolean>;
    lastActivityDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    sharedExternallyFileCount?: NullableOption<number>;
    sharedInternallyFileCount?: NullableOption<number>;
    syncedFileCount?: NullableOption<number>;
    userPrincipalName?: NullableOption<string>;
    viewedOrEditedFileCount?: NullableOption<number>;
}
export interface OneDriveUsageAccountCounts extends Entity {
    active?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    siteType?: NullableOption<string>;
    total?: NullableOption<number>;
}
export interface OneDriveUsageAccountDetail extends Entity {
    activeFileCount?: NullableOption<number>;
    fileCount?: NullableOption<number>;
    isDeleted?: NullableOption<boolean>;
    lastActivityDate?: NullableOption<string>;
    ownerDisplayName?: NullableOption<string>;
    ownerPrincipalName?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    siteUrl?: NullableOption<string>;
    storageAllocatedInBytes?: NullableOption<number>;
    storageUsedInBytes?: NullableOption<number>;
}
export interface OneDriveUsageFileCounts extends Entity {
    active?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    siteType?: NullableOption<string>;
    total?: NullableOption<number>;
}
export interface SharePointActivityPages extends Entity {
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    visitedPageCount?: NullableOption<number>;
}
export interface SharePointActivityUserCounts extends Entity {
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    sharedExternally?: NullableOption<number>;
    sharedInternally?: NullableOption<number>;
    synced?: NullableOption<number>;
    viewedOrEdited?: NullableOption<number>;
    visitedPage?: NullableOption<number>;
}
export interface SharePointActivityUserDetail extends Entity {
    assignedProducts?: NullableOption<string[]>;
    deletedDate?: NullableOption<string>;
    isDeleted?: NullableOption<boolean>;
    lastActivityDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    sharedExternallyFileCount?: NullableOption<number>;
    sharedInternallyFileCount?: NullableOption<number>;
    syncedFileCount?: NullableOption<number>;
    userPrincipalName?: NullableOption<string>;
    viewedOrEditedFileCount?: NullableOption<number>;
    visitedPageCount?: NullableOption<number>;
}
export interface SharePointSiteUsageDetail extends Entity {
    activeFileCount?: NullableOption<number>;
    anonymousLinkCount?: NullableOption<number>;
    companyLinkCount?: NullableOption<number>;
    externalSharing?: NullableOption<boolean>;
    fileCount?: NullableOption<number>;
    geolocation?: NullableOption<string>;
    isDeleted?: NullableOption<boolean>;
    lastActivityDate?: NullableOption<string>;
    ownerDisplayName?: NullableOption<string>;
    ownerPrincipalName?: NullableOption<string>;
    pageViewCount?: NullableOption<number>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    rootWebTemplate?: NullableOption<string>;
    secureLinkForGuestCount?: NullableOption<number>;
    secureLinkForMemberCount?: NullableOption<number>;
    siteId?: NullableOption<string>;
    siteSensitivityLabelId?: NullableOption<string>;
    siteUrl?: NullableOption<string>;
    storageAllocatedInBytes?: NullableOption<number>;
    storageUsedInBytes?: NullableOption<number>;
    unmanagedDevicePolicy?: NullableOption<string>;
    visitedPageCount?: NullableOption<number>;
}
export interface SharePointSiteUsageFileCounts extends Entity {
    active?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    siteType?: NullableOption<string>;
    total?: NullableOption<number>;
}
export interface SharePointSiteUsagePages extends Entity {
    pageViewCount?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    siteType?: NullableOption<string>;
}
export interface SharePointSiteUsageSiteCounts extends Entity {
    active?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    siteType?: NullableOption<string>;
    total?: NullableOption<number>;
}
export interface SiteActivitySummary extends Entity {
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    sharedExternally?: NullableOption<number>;
    sharedInternally?: NullableOption<number>;
    synced?: NullableOption<number>;
    viewedOrEdited?: NullableOption<number>;
}
export interface SiteUsageStorage extends Entity {
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    siteType?: NullableOption<string>;
    storageUsedInBytes?: NullableOption<number>;
}
export interface SkypeForBusinessActivityCounts extends Entity {
    organized?: NullableOption<number>;
    participated?: NullableOption<number>;
    peerToPeer?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
}
export interface SkypeForBusinessActivityUserCounts extends Entity {
    organized?: NullableOption<number>;
    participated?: NullableOption<number>;
    peerToPeer?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
}
export interface SkypeForBusinessActivityUserDetail extends Entity {
    assignedProducts?: NullableOption<string[]>;
    deletedDate?: NullableOption<string>;
    isDeleted?: NullableOption<boolean>;
    lastActivityDate?: NullableOption<string>;
    organizedConferenceAppSharingCount?: NullableOption<number>;
    organizedConferenceAudioVideoCount?: NullableOption<number>;
    organizedConferenceAudioVideoMinutes?: NullableOption<number>;
    organizedConferenceCloudDialInMicrosoftMinutes?: NullableOption<number>;
    organizedConferenceCloudDialInOutMicrosoftCount?: NullableOption<number>;
    organizedConferenceCloudDialOutMicrosoftMinutes?: NullableOption<number>;
    organizedConferenceDialInOut3rdPartyCount?: NullableOption<number>;
    organizedConferenceIMCount?: NullableOption<number>;
    organizedConferenceLastActivityDate?: NullableOption<string>;
    organizedConferenceWebCount?: NullableOption<number>;
    participatedConferenceAppSharingCount?: NullableOption<number>;
    participatedConferenceAudioVideoCount?: NullableOption<number>;
    participatedConferenceAudioVideoMinutes?: NullableOption<number>;
    participatedConferenceDialInOut3rdPartyCount?: NullableOption<number>;
    participatedConferenceIMCount?: NullableOption<number>;
    participatedConferenceLastActivityDate?: NullableOption<string>;
    participatedConferenceWebCount?: NullableOption<number>;
    peerToPeerAppSharingCount?: NullableOption<number>;
    peerToPeerAudioCount?: NullableOption<number>;
    peerToPeerAudioMinutes?: NullableOption<number>;
    peerToPeerFileTransferCount?: NullableOption<number>;
    peerToPeerIMCount?: NullableOption<number>;
    peerToPeerLastActivityDate?: NullableOption<string>;
    peerToPeerVideoCount?: NullableOption<number>;
    peerToPeerVideoMinutes?: NullableOption<number>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    totalOrganizedConferenceCount?: NullableOption<number>;
    totalParticipatedConferenceCount?: NullableOption<number>;
    totalPeerToPeerSessionCount?: NullableOption<number>;
    userPrincipalName?: NullableOption<string>;
}
export interface SkypeForBusinessDeviceUsageDistributionUserCounts extends Entity {
    androidPhone?: NullableOption<number>;
    iPad?: NullableOption<number>;
    iPhone?: NullableOption<number>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    windows?: NullableOption<number>;
    windowsPhone?: NullableOption<number>;
}
export interface SkypeForBusinessDeviceUsageUserCounts extends Entity {
    androidPhone?: NullableOption<number>;
    iPad?: NullableOption<number>;
    iPhone?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    windows?: NullableOption<number>;
    windowsPhone?: NullableOption<number>;
}
export interface SkypeForBusinessDeviceUsageUserDetail extends Entity {
    lastActivityDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    usedAndroidPhone?: NullableOption<boolean>;
    usediPad?: NullableOption<boolean>;
    usediPhone?: NullableOption<boolean>;
    usedWindows?: NullableOption<boolean>;
    usedWindowsPhone?: NullableOption<boolean>;
    userPrincipalName?: NullableOption<string>;
}
export interface SkypeForBusinessOrganizerActivityCounts extends Entity {
    appSharing?: NullableOption<number>;
    audioVideo?: NullableOption<number>;
    dialInOut3rdParty?: NullableOption<number>;
    dialInOutMicrosoft?: NullableOption<number>;
    im?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    web?: NullableOption<number>;
}
export interface SkypeForBusinessOrganizerActivityMinuteCounts extends Entity {
    audioVideo?: NullableOption<number>;
    dialInMicrosoft?: NullableOption<number>;
    dialOutMicrosoft?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
}
export interface SkypeForBusinessOrganizerActivityUserCounts extends Entity {
    appSharing?: NullableOption<number>;
    audioVideo?: NullableOption<number>;
    dialInOut3rdParty?: NullableOption<number>;
    dialInOutMicrosoft?: NullableOption<number>;
    im?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    web?: NullableOption<number>;
}
export interface SkypeForBusinessParticipantActivityCounts extends Entity {
    appSharing?: NullableOption<number>;
    audioVideo?: NullableOption<number>;
    dialInOut3rdParty?: NullableOption<number>;
    im?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    web?: NullableOption<number>;
}
export interface SkypeForBusinessParticipantActivityMinuteCounts extends Entity {
    audiovideo?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
}
export interface SkypeForBusinessParticipantActivityUserCounts extends Entity {
    appSharing?: NullableOption<number>;
    audioVideo?: NullableOption<number>;
    dialInOut3rdParty?: NullableOption<number>;
    im?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    web?: NullableOption<number>;
}
export interface SkypeForBusinessPeerToPeerActivityCounts extends Entity {
    appSharing?: NullableOption<number>;
    audio?: NullableOption<number>;
    fileTransfer?: NullableOption<number>;
    im?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    video?: NullableOption<number>;
}
export interface SkypeForBusinessPeerToPeerActivityMinuteCounts extends Entity {
    audio?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    video?: NullableOption<number>;
}
export interface SkypeForBusinessPeerToPeerActivityUserCounts extends Entity {
    appSharing?: NullableOption<number>;
    audio?: NullableOption<number>;
    fileTransfer?: NullableOption<number>;
    im?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    video?: NullableOption<number>;
}
export interface TeamsDeviceUsageDistributionUserCounts extends Entity {
    // The number of users who were active on the Teams mobile client for Android.
    androidPhone?: NullableOption<number>;
    // The number of users who were active in the Teams desktop client on a ChromeOS computer.
    chromeOS?: NullableOption<number>;
    // The number of users who were active on the Teams mobile client for iOS.
    ios?: NullableOption<number>;
    // The number of users who were active in the Teams desktop client on a Linux computer.
    linux?: NullableOption<number>;
    // The number of users who were active in the Teams desktop client on a macOS computer.
    mac?: NullableOption<number>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The number of users who were active in the Teams web client on devices.
    web?: NullableOption<number>;
    // The number of users who were active in the Teams desktop client on a Windows-based computer.
    windows?: NullableOption<number>;
    // The number of users who were active on the Teams mobile client for Windows phone.
    windowsPhone?: NullableOption<number>;
}
export interface TeamsDeviceUsageUserCounts extends Entity {
    // The number of users who were active on the Teams mobile client for Android.
    androidPhone?: NullableOption<number>;
    // The number of users who were active in the Teams desktop client on a ChromeOS computer.
    chromeOS?: NullableOption<number>;
    // The number of users who were active on the Teams mobile client for iOS.
    ios?: NullableOption<number>;
    // The number of users who were active in the Teams desktop client on a Linux computer.
    linux?: NullableOption<number>;
    // The number of users who were active in the Teams desktop client on a macOS computer.
    mac?: NullableOption<number>;
    // The date on which the users performed the activities.
    reportDate?: NullableOption<string>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The number of users who were active in the Teams web client on devices.
    web?: NullableOption<number>;
    // The number of users who were active in the Teams desktop client on a Windows-based computer.
    windows?: NullableOption<number>;
    // The number of users who were active on the Teams mobile client for Windows phone.
    windowsPhone?: NullableOption<number>;
}
export interface TeamsDeviceUsageUserDetail extends Entity {
    // The date when the delete operation happened. Default value is 'null' when the user has not been deleted.
    deletedDate?: NullableOption<string>;
    // Whether this user has been deleted or soft deleted.
    isDeleted?: NullableOption<boolean>;
    // Whether the user has been assigned a Teams license.
    isLicensed?: NullableOption<boolean>;
    // The last date that the user participated in a Microsoft Teams activity.
    lastActivityDate?: NullableOption<string>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // Whether the user was active on the Teams mobile client for Android.
    usedAndroidPhone?: NullableOption<boolean>;
    // Whether the user was active in the Teams desktop client on a ChromeOS computer.
    usedChromeOS?: NullableOption<boolean>;
    // Whether the user was active on the Teams mobile client for iOS.
    usediOS?: NullableOption<boolean>;
    // Whether the user was active in the Teams desktop client on a Linux computer.
    usedLinux?: NullableOption<boolean>;
    // Whether the user was active in the Teams desktop client on a macOS computer.
    usedMac?: NullableOption<boolean>;
    // Whether the user was active in the Teams web client on devices.
    usedWeb?: NullableOption<boolean>;
    // Whether the user was active in the Teams desktop client on a Windows-based computer.
    usedWindows?: NullableOption<boolean>;
    // Whether the user was active on the Teams mobile client for Windows phone.
    usedWindowsPhone?: NullableOption<boolean>;
    /**
     * 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.
     */
    userPrincipalName?: NullableOption<string>;
}
export interface TeamsUserActivityCounts extends Entity {
    // The number of unique 1:1 calls that users participated in.
    calls?: NullableOption<number>;
    // The number of unique online meetings that users participated in.
    meetings?: NullableOption<number>;
    // The number of unique messages that users posted in a private chat.
    privateChatMessages?: NullableOption<number>;
    // The date on which the users performed the activities.
    reportDate?: NullableOption<string>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The number of unique messages that users posted in a team chat.
    teamChatMessages?: NullableOption<number>;
}
export interface TeamsUserActivityDistributionUserCounts extends Entity {
    // The number of unique 1:1 calls that users participated in.
    calls?: NullableOption<number>;
    // The number of unique online meetings that users participated in.
    meetings?: NullableOption<number>;
    // The number of unique messages that users posted in a private chat.
    privateChatMessages?: NullableOption<number>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The number of unique messages that users posted in a team chat.
    teamChatMessages?: NullableOption<number>;
}
export interface TeamsUserActivityUserCounts extends Entity {
    // The number of users who participated in 1:1 calls.
    calls?: NullableOption<number>;
    // The number of users who participated in online meetings.
    meetings?: NullableOption<number>;
    /**
     * The number of users who were active but performed other activities than exposed action types offered in the report
     * (sending or replying to channel messages and chat messages, scheduling or participating in 1:1 calls and meetings).
     * Examples actions are when a user changes the Teams status or the Teams status message or opens a Channel Message post
     * but does not reply.
     */
    otherActions?: NullableOption<number>;
    // The number of users who posted message in a private chat.
    privateChatMessages?: NullableOption<number>;
    // The date on which the users performed the activities.
    reportDate?: NullableOption<string>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The number of users who posted message in a team chat.
    teamChatMessages?: NullableOption<number>;
}
export interface TeamsUserActivityUserDetail extends Entity {
    // The number of ad hoc meetings a user participated in.
    adHocMeetingsAttendedCount?: NullableOption<number>;
    // The number of ad hoc meetings a user organized.
    adHocMeetingsOrganizedCount?: NullableOption<number>;
    // Products the user assigned with.
    assignedProducts?: NullableOption<string[]>;
    // Audio duration the user participated in.
    audioDuration?: NullableOption<string>;
    // The number of 1:1 calls that the user participated in.
    callCount?: NullableOption<number>;
    // The date when the delete operation happened. Default value is 'null' when the user has not been deleted.
    deletedDate?: NullableOption<string>;
    /**
     * The User is active but has performed other activities than exposed action types offered in the report (sending or
     * replying to channel messages and chat messages, scheduling or participating in 1:1 calls and meetings). Examples
     * actions are when a user changes the Teams status or the Teams status message or opens a Channel Message post but does
     * not reply.
     */
    hasOtherAction?: NullableOption<boolean>;
    // Whether this user has been deleted or soft deleted.
    isDeleted?: NullableOption<boolean>;
    // Whether the user has been assigned a Teams license.
    isLicensed?: NullableOption<boolean>;
    // The last date that the user participated in a Microsoft Teams activity.
    lastActivityDate?: NullableOption<string>;
    // The number of online meetings that the user participated in.
    meetingCount?: NullableOption<number>;
    // The sum of the one-time scheduled, recurring, ad hoc and unclassified meetings a user participated in.
    meetingsAttendedCount?: NullableOption<number>;
    // The sum of one-time scheduled, Recurring, ad hoc and unclassified meetings a user organized.
    meetingsOrganizedCount?: NullableOption<number>;
    // The number of unique messages that the user posted in a private chat.
    privateChatMessageCount?: NullableOption<number>;
    // The number of days the report covers.
    reportPeriod?: NullableOption<string>;
    // The latest date of the content.
    reportRefreshDate?: NullableOption<string>;
    // The number of the one-time scheduled meetings a user participated in.
    scheduledOneTimeMeetingsAttendedCount?: NullableOption<number>;
    // The number of one-time scheduled meetings a user organized.
    scheduledOneTimeMeetingsOrganizedCount?: NullableOption<number>;
    // The number of the recurring meetings a user participated in.
    scheduledRecurringMeetingsAttendedCount?: NullableOption<number>;
    // The number of recurring meetings a user organized.
    scheduledRecurringMeetingsOrganizedCount?: NullableOption<number>;
    // Screen sharing duration the user participated in.
    screenShareDuration?: NullableOption<string>;
    // The number of unique messages that the user posted in a team chat.
    teamChatMessageCount?: NullableOption<number>;
    /**
     * 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.
     */
    userPrincipalName?: NullableOption<string>;
    // Video duration the user participated in.
    videoDuration?: NullableOption<string>;
}
export interface YammerActivitySummary extends Entity {
    liked?: NullableOption<number>;
    posted?: NullableOption<number>;
    read?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
}
export interface YammerActivityUserDetail extends Entity {
    assignedProducts?: NullableOption<string[]>;
    displayName?: NullableOption<string>;
    lastActivityDate?: NullableOption<string>;
    likedCount?: NullableOption<number>;
    postedCount?: NullableOption<number>;
    readCount?: NullableOption<number>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    stateChangeDate?: NullableOption<string>;
    userPrincipalName?: NullableOption<string>;
    userState?: NullableOption<string>;
}
export interface YammerDeviceUsageDistributionUserCounts extends Entity {
    androidPhone?: NullableOption<number>;
    iPad?: NullableOption<number>;
    iPhone?: NullableOption<number>;
    other?: NullableOption<number>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    web?: NullableOption<number>;
    windowsPhone?: NullableOption<number>;
}
export interface YammerDeviceUsageUserCounts extends Entity {
    androidPhone?: NullableOption<number>;
    iPad?: NullableOption<number>;
    iPhone?: NullableOption<number>;
    other?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    web?: NullableOption<number>;
    windowsPhone?: NullableOption<number>;
}
export interface YammerDeviceUsageUserDetail extends Entity {
    displayName?: NullableOption<string>;
    lastActivityDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    stateChangeDate?: NullableOption<string>;
    usedAndroidPhone?: NullableOption<boolean>;
    usediPad?: NullableOption<boolean>;
    usediPhone?: NullableOption<boolean>;
    usedOthers?: NullableOption<boolean>;
    usedWeb?: NullableOption<boolean>;
    usedWindowsPhone?: NullableOption<boolean>;
    userPrincipalName?: NullableOption<string>;
    userState?: NullableOption<string>;
}
export interface YammerGroupsActivityCounts extends Entity {
    liked?: NullableOption<number>;
    posted?: NullableOption<number>;
    read?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
}
export interface YammerGroupsActivityDetail extends Entity {
    groupDisplayName?: NullableOption<string>;
    groupType?: NullableOption<string>;
    isDeleted?: NullableOption<boolean>;
    lastActivityDate?: NullableOption<string>;
    likedCount?: NullableOption<number>;
    memberCount?: NullableOption<number>;
    networkDisplayName?: NullableOption<string>;
    office365Connected?: NullableOption<boolean>;
    ownerPrincipalName?: NullableOption<string>;
    postedCount?: NullableOption<number>;
    readCount?: NullableOption<number>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
}
export interface YammerGroupsActivityGroupCounts extends Entity {
    active?: NullableOption<number>;
    reportDate?: NullableOption<string>;
    reportPeriod?: NullableOption<string>;
    reportRefreshDate?: NullableOption<string>;
    total?: NullableOption<number>;
}
export interface Planner extends Entity {
    // Read-only. Nullable. Returns a collection of the specified buckets
    buckets?: NullableOption<PlannerBucket[]>;
    // Read-only. Nullable. Returns a collection of the specified plans
    plans?: NullableOption<PlannerPlan[]>;
    // Read-only. Nullable. Returns a collection of the specified rosters
    rosters?: NullableOption<PlannerRoster[]>;
    // Read-only. Nullable. Returns a collection of the specified tasks
    tasks?: NullableOption<PlannerTask[]>;
}
export interface PlannerBucket extends PlannerDelta {
    // Name of the bucket.
    name?: string;
    // Hint used to order items of this type in a list view. The format is defined as outlined here.
    orderHint?: NullableOption<string>;
    // Plan ID to which the bucket belongs.
    planId?: NullableOption<string>;
    // Read-only. Nullable. The collection of tasks in the bucket.
    tasks?: NullableOption<PlannerTask[]>;
}
export interface PlannerPlan extends PlannerDelta {
    // Identifies the container of the plan. After it is set, this property can’t be updated. Required.
    container?: NullableOption<PlannerPlanContainer>;
    // Read-only. Additional user experiences in which this plan is used, represented as plannerPlanContext entries.
    contexts?: NullableOption<PlannerPlanContextCollection>;
    // Read-only. The user who created the plan.
    createdBy?: NullableOption<IdentitySet>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    createdDateTime?: NullableOption<string>;
    /**
     * 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.
     */
    owner?: NullableOption<string>;
    // Required. Title of the plan.
    title?: string;
    // Collection of buckets in the plan. Read-only. Nullable.
    buckets?: NullableOption<PlannerBucket[]>;
    // Additional details about the plan. Read-only. Nullable.
    details?: NullableOption<PlannerPlanDetails>;
    // Collection of tasks in the plan. Read-only. Nullable.
    tasks?: NullableOption<PlannerTask[]>;
}
export interface PlannerRoster extends Entity {
    // Retrieves the members of the plannerRoster.
    members?: NullableOption<PlannerRosterMember[]>;
    // Retrieves the plans contained by the plannerRoster.
    plans?: NullableOption<PlannerPlan[]>;
}
export interface PlannerTask extends PlannerDelta {
    // Number of checklist items with value set to false, representing incomplete items.
    activeChecklistItemCount?: NullableOption<number>;
    // The categories to which the task has been applied. See applied Categories for possible values.
    appliedCategories?: NullableOption<PlannerAppliedCategories>;
    // Hint used to order items of this type in a list view. The format is defined as outlined here.
    assigneePriority?: NullableOption<string>;
    // The set of assignees the task is assigned to.
    assignments?: NullableOption<PlannerAssignments>;
    /**
     * 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.
     */
    bucketId?: NullableOption<string>;
    // Number of checklist items that are present on the task.
    checklistItemCount?: NullableOption<number>;
    // Identity of the user that completed the task.
    completedBy?: NullableOption<IdentitySet>;
    /**
     * 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 is
     * 2014-01-01T00:00:00Z
     */
    completedDateTime?: NullableOption<string>;
    // Thread ID of the conversation on the task. This is the ID of the conversation thread object created in the group.
    conversationThreadId?: NullableOption<string>;
    // Identity of the user that created the task.
    createdBy?: NullableOption<IdentitySet>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    createdDateTime?: NullableOption<string>;
    // Contains information about the origin of the task.
    creationSource?: NullableOption<PlannerTaskCreation>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    dueDateTime?: NullableOption<string>;
    // Read-only. Value is true if the details object of the task has a non-empty description and false otherwise.
    hasDescription?: NullableOption<boolean>;
    // Hint used to order items of this type in a list view. The format is defined as outlined here.
    orderHint?: NullableOption<string>;
    // Percentage of task completion. When set to 100, the task is considered completed.
    percentComplete?: NullableOption<number>;
    // Plan ID to which the task belongs.
    planId?: NullableOption<string>;
    /**
     * This sets the type of preview that shows up on the task. Possible values are: automatic, noPreview, checklist,
     * description, reference.
     */
    previewType?: NullableOption<PlannerPreviewType>;
    /**
     * Priority of the task. Valid range of values is between 0 and 10 (inclusive), with increasing value being lower priority
     * (0 has the highest priority and 10 has the lowest priority). Currently, Planner interprets values 0 and 1 as 'urgent',
     * 2 and 3 and 4 as 'important', 5, 6, and 7 as 'medium', and 8, 9, and 10 as 'low'. Currently, Planner sets the value 1
     * for 'urgent', 3 for 'important', 5 for 'medium', and 9 for 'low'.
     */
    priority?: NullableOption<number>;
    // Number of external references that exist on the task.
    referenceCount?: NullableOption<number>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    startDateTime?: NullableOption<string>;
    // Title of the task.
    title?: string;
    // Read-only. Nullable. Used to render the task correctly in the task board view when grouped by assignedTo.
    assignedToTaskBoardFormat?: NullableOption<PlannerAssignedToTaskBoardTaskFormat>;
    // Read-only. Nullable. Used to render the task correctly in the task board view when grouped by bucket.
    bucketTaskBoardFormat?: NullableOption<PlannerBucketTaskBoardTaskFormat>;
    // Read-only. Nullable. Additional details about the task.
    details?: NullableOption<PlannerTaskDetails>;
    // Read-only. Nullable. Used to render the task correctly in the task board view when grouped by progress.
    progressTaskBoardFormat?: NullableOption<PlannerProgressTaskBoardTaskFormat>;
}
export interface PlannerAssignedToTaskBoardTaskFormat extends PlannerDelta {
    /**
     * Dictionary of hints used to order tasks on the AssignedTo view of the Task Board. The key of each entry is one of the
     * users the task is assigned to and the value is the order hint. The format of each value is defined as outlined here.
     */
    orderHintsByAssignee?: NullableOption<PlannerOrderHintsByAssignee>;
    /**
     * 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.
     */
    unassignedOrderHint?: NullableOption<string>;
}
export interface PlannerBucketTaskBoardTaskFormat extends PlannerDelta {
    // Hint used to order tasks in the Bucket view of the Task Board. The format is defined as outlined here.
    orderHint?: NullableOption<string>;
}
export interface PlannerPlanDetails extends PlannerDelta {
    // An object that specifies the descriptions of the 25 categories that can be associated with tasks in the plan
    categoryDescriptions?: NullableOption<PlannerCategoryDescriptions>;
    /**
     * Read-only. A collection of additional information associated with plannerPlanContext entries that are defined for the
     * plannerPlan container.
     */
    contextDetails?: NullableOption<PlannerPlanContextDetailsCollection>;
    /**
     * The set of user IDs that this plan is shared with. If you are using Microsoft 365 groups, use the groups API to manage
     * group membership to share the group's plan. You can also add existing members of the group to this collection, although
     * it is not required in order for them to access the plan owned by the group.
     */
    sharedWith?: NullableOption<PlannerUserIds>;
}
export interface PlannerProgressTaskBoardTaskFormat extends PlannerDelta {
    // Hint value used to order the task on the Progress view of the Task Board. The format is defined as outlined here.
    orderHint?: NullableOption<string>;
}
export interface PlannerRosterMember extends Entity {
    /**
     * Additional roles associated with the PlannerRosterMember, which determines permissions of the member in the
     * plannerRoster. Currently there are no available roles to assign, and every member has full control over the contents of
     * the plannerRoster.
     */
    roles?: NullableOption<string[]>;
    /**
     * Identifier of the tenant the user belongs to. Currently only the users from the same tenant can be added to a
     * plannerRoster.
     */
    tenantId?: NullableOption<string>;
    // Identifier of the user.
    userId?: NullableOption<string>;
}
export interface PlannerTaskDetails extends PlannerDelta {
    // The collection of checklist items on the task.
    checklist?: NullableOption<PlannerChecklistItems>;
    // Description of the task
    description?: NullableOption<string>;
    /**
     * This sets the type of preview that shows up on the task. Possible values are: automatic, noPreview, checklist,
     * description, reference. When set to automatic the displayed preview is chosen by the app viewing the task.
     */
    previewType?: NullableOption<PlannerPreviewType>;
    // The collection of references on the task.
    references?: NullableOption<PlannerExternalReferences>;
}
export interface SharedInsight extends Entity {
    // Details about the shared item. Read only.
    lastShared?: NullableOption<SharingDetail>;
    // Reference properties of the shared document, such as the url and type of the document. Read-only
    resourceReference?: NullableOption<ResourceReference>;
    // Properties that you can use to visualize the document in your experience. Read-only
    resourceVisualization?: NullableOption<ResourceVisualization>;
    sharingHistory?: NullableOption<SharingDetail[]>;
    lastSharedMethod?: NullableOption<Entity>;
    /**
     * Used for navigating to the item that was shared. For file attachments, the type is fileAttachment. For linked
     * attachments, the type is driveItem.
     */
    resource?: NullableOption<Entity>;
}
export interface Trending extends Entity {
    lastModifiedDateTime?: NullableOption<string>;
    // Reference properties of the trending document, such as the url and type of the document.
    resourceReference?: NullableOption<ResourceReference>;
    // Properties that you can use to visualize the document in your experience.
    resourceVisualization?: NullableOption<ResourceVisualization>;
    /**
     * 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.
     */
    weight?: number;
    // Used for navigating to the trending document.
    resource?: NullableOption<Entity>;
}
export interface UsedInsight extends Entity {
    // Information about when the item was last viewed or modified by the user. Read only.
    lastUsed?: NullableOption<UsageDetails>;
    // Reference properties of the used document, such as the url and type of the document. Read-only
    resourceReference?: NullableOption<ResourceReference>;
    // Properties that you can use to visualize the document in your experience. Read-only
    resourceVisualization?: NullableOption<ResourceVisualization>;
    /**
     * Used for navigating to the item that was used. For file attachments, the type is fileAttachment. For linked
     * attachments, the type is driveItem.
     */
    resource?: NullableOption<Entity>;
}
export interface UserInsightsSettings extends Entity {
    /**
     * true if user's itemInsights and meeting hours insights are enabled; false if user's itemInsights and meeting hours
     * insights are disabled. Default is true. Optional.
     */
    isEnabled?: boolean;
}
export interface RegionalAndLanguageSettings extends Entity {
    // Prioritized list of languages the user reads and authors in.Returned by default. Not nullable.
    authoringLanguages?: NullableOption<LocaleInfo[]>;
    /**
     * The user's preferred user interface language (menus, buttons, ribbons, warning messages) for Microsoft web
     * applications.Returned by default. Not nullable.
     */
    defaultDisplayLanguage?: NullableOption<LocaleInfo>;
    // The locale that drives the default date, time, and calendar formatting.Returned by default.
    defaultRegionalFormat?: NullableOption<LocaleInfo>;
    // The language a user expected to use as input for text to speech scenarios.Returned by default.
    defaultSpeechInputLanguage?: NullableOption<LocaleInfo>;
    // The language a user expects to have documents, emails, and messages translated into.Returned by default.
    defaultTranslationLanguage?: NullableOption<LocaleInfo>;
    // Allows a user to override their defaultRegionalFormat with field specific formats.Returned by default.
    regionalFormatOverrides?: NullableOption<RegionalFormatOverrides>;
    /**
     * The user's preferred settings when consuming translated documents, emails, messages, and websites.Returned by default.
     * Not nullable.
     */
    translationPreferences?: NullableOption<TranslationPreferences>;
}
export interface ChangeTrackedEntity extends Entity {
    createdBy?: NullableOption<IdentitySet>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    createdDateTime?: NullableOption<string>;
    // Identity of the person who last modified the entity.
    lastModifiedBy?: NullableOption<IdentitySet>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    lastModifiedDateTime?: NullableOption<string>;
}
export interface ShiftPreferences extends ChangeTrackedEntity {
    // Availability of the user to be scheduled for work and its recurrence pattern.
    availability?: NullableOption<ShiftAvailability[]>;
}
export interface OnenoteEntityBaseModel extends Entity {
    // The endpoint where you can get details about the page. Read-only.
    self?: NullableOption<string>;
}
export interface OnenoteEntitySchemaObjectModel extends OnenoteEntityBaseModel {
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    createdDateTime?: NullableOption<string>;
}
export interface OnenoteEntityHierarchyModel extends OnenoteEntitySchemaObjectModel {
    // Identity of the user, device, and application which created the item. Read-only.
    createdBy?: NullableOption<IdentitySet>;
    // The name of the notebook.
    displayName?: NullableOption<string>;
    // Identity of the user, device, and application which created the item. Read-only.
    lastModifiedBy?: NullableOption<IdentitySet>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    lastModifiedDateTime?: NullableOption<string>;
}
export interface Notebook extends OnenoteEntityHierarchyModel {
    // Indicates whether this is the user's default notebook. Read-only.
    isDefault?: NullableOption<boolean>;
    /**
     * Indicates whether the notebook is shared. If true, the contents of the notebook can be seen by people other than the
     * owner. Read-only.
     */
    isShared?: NullableOption<boolean>;
    /**
     * Links for opening the notebook. The oneNoteClientURL link opens the notebook in the OneNote native client if it's
     * installed. The oneNoteWebURL link opens the notebook in OneNote on the web.
     */
    links?: NullableOption<NotebookLinks>;
    // The URL for the sectionGroups navigation property, which returns all the section groups in the notebook. Read-only.
    sectionGroupsUrl?: NullableOption<string>;
    // The URL for the sections navigation property, which returns all the sections in the notebook. Read-only.
    sectionsUrl?: NullableOption<string>;
    /**
     * Possible values are: Owner, Contributor, Reader, None. Owner represents owner-level access to the notebook. Contributor
     * represents read/write access to the notebook. Reader represents read-only access to the notebook. Read-only.
     */
    userRole?: NullableOption<OnenoteUserRole>;
    // The section groups in the notebook. Read-only. Nullable.
    sectionGroups?: NullableOption<SectionGroup[]>;
    // The sections in the notebook. Read-only. Nullable.
    sections?: NullableOption<OnenoteSection[]>;
}
export interface SectionGroup extends OnenoteEntityHierarchyModel {
    /**
     * The URL for the sectionGroups navigation property, which returns all the section groups in the section group.
     * Read-only.
     */
    sectionGroupsUrl?: NullableOption<string>;
    // The URL for the sections navigation property, which returns all the sections in the section group. Read-only.
    sectionsUrl?: NullableOption<string>;
    // The notebook that contains the section group. Read-only.
    parentNotebook?: NullableOption<Notebook>;
    // The section group that contains the section group. Read-only.
    parentSectionGroup?: NullableOption<SectionGroup>;
    // The section groups in the section. Read-only. Nullable.
    sectionGroups?: NullableOption<SectionGroup[]>;
    // The sections in the section group. Read-only. Nullable.
    sections?: NullableOption<OnenoteSection[]>;
}
export interface OnenoteSection extends OnenoteEntityHierarchyModel {
    // Indicates whether this is the user's default section. Read-only.
    isDefault?: NullableOption<boolean>;
    /**
     * Links for opening the section. The oneNoteClientURL link opens the section in the OneNote native client if it's
     * installed. The oneNoteWebURL link opens the section in OneNote on the web.
     */
    links?: NullableOption<SectionLinks>;
    // The pages endpoint where you can get details for all the pages in the section. Read-only.
    pagesUrl?: NullableOption<string>;
    // The collection of pages in the section. Read-only. Nullable.
    pages?: NullableOption<OnenotePage[]>;
    // The notebook that contains the section. Read-only.
    parentNotebook?: NullableOption<Notebook>;
    // The section group that contains the section. Read-only.
    parentSectionGroup?: NullableOption<SectionGroup>;
}
export interface Operation extends Entity {
    // The start time of the operation.
    createdDateTime?: NullableOption<string>;
    // The time of the last action of the operation.
    lastActionDateTime?: NullableOption<string>;
    // Possible values are: notStarted, running, completed, failed. Read-only.
    status?: NullableOption<OperationStatus>;
}
export interface OnenoteOperation extends Operation {
    // The error returned by the operation.
    error?: NullableOption<OnenoteOperationError>;
    // The operation percent complete if the operation is still in running status.
    percentComplete?: NullableOption<string>;
    // The resource id.
    resourceId?: NullableOption<string>;
    // The resource URI for the object. For example, the resource URI for a copied page or section.
    resourceLocation?: NullableOption<string>;
}
export interface OnenotePage extends OnenoteEntitySchemaObjectModel {
    // The page's HTML content.
    content?: NullableOption<any>;
    // The URL for the page's HTML content. Read-only.
    contentUrl?: NullableOption<string>;
    // The unique identifier of the application that created the page. Read-only.
    createdByAppId?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    lastModifiedDateTime?: NullableOption<string>;
    // The indentation level of the page. Read-only.
    level?: NullableOption<number>;
    /**
     * Links for opening the page. The oneNoteClientURL link opens the page in the OneNote native client if it 's installed.
     * The oneNoteWebUrl link opens the page in OneNote on the web. Read-only.
     */
    links?: NullableOption<PageLinks>;
    // The order of the page within its parent section. Read-only.
    order?: NullableOption<number>;
    // The title of the page.
    title?: NullableOption<string>;
    userTags?: NullableOption<string[]>;
    // The notebook that contains the page. Read-only.
    parentNotebook?: NullableOption<Notebook>;
    // The section that contains the page. Read-only.
    parentSection?: NullableOption<OnenoteSection>;
}
export interface OnenoteResource extends OnenoteEntityBaseModel {
    // The content stream
    content?: NullableOption<any>;
    // The URL for downloading the content
    contentUrl?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface ItemFacet extends Entity {
    /**
     * The audiences that are able to see the values contained within the associated entity. Possible values are: me, family,
     * contacts, groupMembers, organization, federatedOrganizations, everyone, unknownFutureValue.
     */
    allowedAudiences?: NullableOption<AllowedAudiences>;
    // Provides the identifier of the user and/or application that created the entity.
    createdBy?: IdentitySet;
    // Provides the dateTimeOffset for when the entity was created.
    createdDateTime?: string;
    // Contains inference detail if the entity is inferred by the creating or modifying application.
    inference?: NullableOption<InferenceData>;
    isSearchable?: NullableOption<boolean>;
    // Provides the identifier of the user and/or application that last modified the entity.
    lastModifiedBy?: IdentitySet;
    // Provides the dateTimeOffset for when the entity was created.
    lastModifiedDateTime?: string;
    // Where the values within an entity originated if synced from another service.
    source?: NullableOption<PersonDataSources>;
}
export interface EducationalActivity extends ItemFacet {
    // The month and year the user graduated or completed the activity.
    completionMonthYear?: NullableOption<string>;
    // The month and year the user completed the educational activity referenced.
    endMonthYear?: NullableOption<string>;
    // Contains details of the institution studied at.
    institution?: InstitutionData;
    // Contains extended information about the program or course.
    program?: EducationalActivityDetail;
    // The month and year the user commenced the activity referenced.
    startMonthYear?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface ItemAddress extends ItemFacet {
    // Details about the address itself.
    detail?: PhysicalAddress;
    // Friendly name the user has assigned to this address.
    displayName?: NullableOption<string>;
    // The geocoordinates of the address.
    geoCoordinates?: NullableOption<GeoCoordinates>;
}
// tslint:disable-next-line: interface-name
export interface ItemEmail extends ItemFacet {
    // The email address itself.
    address?: string;
    // The name or label a user has associated with a particular email address.
    displayName?: NullableOption<string>;
    // The type of email address. Possible values are: unknown, work, personal, main, other.
    type?: EmailType;
}
// tslint:disable-next-line: interface-name
export interface ItemInsightsSettings extends Entity {
    // The ID of an Azure AD group, of which the members' item insights are disabled. Default is empty. Optional.
    disabledForGroup?: NullableOption<string>;
    /**
     * true if organization item insights are enabled; false if organization item insights are disabled for all users without
     * exceptions. Default is true. Optional.
     */
    isEnabledInOrganization?: NullableOption<boolean>;
}
// tslint:disable-next-line: interface-name
export interface ItemPatent extends ItemFacet {
    // Descpription of the patent or filing.
    description?: NullableOption<string>;
    // Title of the patent or filing.
    displayName?: string;
    // Indicates the patent is pending.
    isPending?: NullableOption<boolean>;
    // The date that the patent was granted.
    issuedDate?: NullableOption<string>;
    // Authority which granted the patent.
    issuingAuthority?: NullableOption<string>;
    // The patent number.
    number?: NullableOption<string>;
    // URL referencing the patent or filing.
    webUrl?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface ItemPhone extends ItemFacet {
    // Friendly name the user has assigned this phone number.
    displayName?: NullableOption<string>;
    // Phone number provided by the user.
    number?: string;
    /**
     * The type of phone number within the object. Possible values are: home, business, mobile, other, assistant, homeFax,
     * businessFax, otherFax, pager, radio.
     */
    type?: PhoneType;
}
// tslint:disable-next-line: interface-name
export interface ItemPublication extends ItemFacet {
    // Description of the publication.
    description?: NullableOption<string>;
    // Title of the publication.
    displayName?: string;
    // The date that the publication was published.
    publishedDate?: NullableOption<string>;
    // Publication or publisher for the publication.
    publisher?: NullableOption<string>;
    // URL referencing a thumbnail of the publication.
    thumbnailUrl?: NullableOption<string>;
    // URL referencing the publication.
    webUrl?: NullableOption<string>;
}
export interface LanguageProficiency extends ItemFacet {
    // Contains the long-form name for the language.
    displayName?: string;
    proficiency?: NullableOption<LanguageProficiencyLevel>;
    /**
     * Represents the users reading comprehension for the language represented by the object. Possible values are: elementary,
     * conversational, limitedWorking, professionalWorking, fullProfessional, nativeOrBilingual, unknownFutureValue.
     */
    reading?: NullableOption<LanguageProficiencyLevel>;
    /**
     * Represents the users spoken proficiency for the language represented by the object. Possible values are: elementary,
     * conversational, limitedWorking, professionalWorking, fullProfessional, nativeOrBilingual, unknownFutureValue.
     */
    spoken?: NullableOption<LanguageProficiencyLevel>;
    // Contains the four-character BCP47 name for the language (en-US, no-NB, en-AU).
    tag?: NullableOption<string>;
    thumbnailUrl?: NullableOption<string>;
    /**
     * Represents the users written proficiency for the language represented by the object. Possible values are: elementary,
     * conversational, limitedWorking, professionalWorking, fullProfessional, nativeOrBilingual, unknownFutureValue.
     */
    written?: NullableOption<LanguageProficiencyLevel>;
}
export interface ProfileCardProperty extends Entity {
    /**
     * Allows an administrator to set a custom display label for the directory property and localize it for the users in their
     * tenant.
     */
    annotations?: NullableOption<ProfileCardAnnotation[]>;
    /**
     * Identifies a profileCardProperty resource in Get, Update, or Delete operations. Allows an administrator to surface
     * hidden Azure Active Directory (Azure AD) properties on the Microsoft 365 profile card within their tenant. When
     * present, the Azure AD field referenced in this field will be visible to all users in your tenant on the contact pane of
     * the profile card. Allowed values for this field are: UserPrincipalName, Fax, StreetAddress, PostalCode,
     * StateOrProvince, Alias, CustomAttribute1, CustomAttribute2, CustomAttribute3, CustomAttribute4, CustomAttribute5,
     * CustomAttribute6, CustomAttribute7, CustomAttribute8, CustomAttribute9, CustomAttribute10, CustomAttribute11,
     * CustomAttribute12, CustomAttribute13, CustomAttribute14, CustomAttribute15.
     */
    directoryPropertyName?: NullableOption<string>;
}
export interface PersonAnnotation extends ItemFacet {
    // Contains the detail of the note itself.
    detail?: NullableOption<ItemBody>;
    // Contains a friendly name for the note.
    displayName?: NullableOption<string>;
    thumbnailUrl?: NullableOption<string>;
}
export interface PersonAnnualEvent extends ItemFacet {
    date?: NullableOption<string>;
    displayName?: NullableOption<string>;
    type?: NullableOption<PersonAnnualEventType>;
}
export interface PersonAward extends ItemFacet {
    // Descpription of the award or honor.
    description?: NullableOption<string>;
    // Name of the award or honor.
    displayName?: string;
    // The date that the award or honor was granted.
    issuedDate?: NullableOption<string>;
    // Authority which granted the award or honor.
    issuingAuthority?: NullableOption<string>;
    // URL referencing a thumbnail of the award or honor.
    thumbnailUrl?: NullableOption<string>;
    // URL referencing the award or honor.
    webUrl?: NullableOption<string>;
}
export interface PersonCertification extends ItemFacet {
    // The referenceable identifier for the certification.
    certificationId?: NullableOption<string>;
    // Description of the certification.
    description?: NullableOption<string>;
    // Title of the certification.
    displayName?: string;
    // The date that the certification expires.
    endDate?: NullableOption<string>;
    // The date that the certification was issued.
    issuedDate?: NullableOption<string>;
    // Authority which granted the certification.
    issuingAuthority?: NullableOption<string>;
    // Company which granted the certification.
    issuingCompany?: NullableOption<string>;
    // The date that the certification became valid.
    startDate?: NullableOption<string>;
    // URL referencing a thumbnail of the certification.
    thumbnailUrl?: NullableOption<string>;
    // URL referencing the certification.
    webUrl?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface PersonExtension extends Extension {}
export interface PersonInterest extends ItemFacet {
    // Contains categories a user has associated with the interest (for example, personal, recipies).
    categories?: NullableOption<string[]>;
    /**
     * Contains experience scenario tags a user has associated with the interest. Allowed values in the collection are:
     * askMeAbout, ableToMentor, wantsToLearn, wantsToImprove.
     */
    collaborationTags?: NullableOption<string[]>;
    // Contains a description of the interest.
    description?: NullableOption<string>;
    // Contains a friendly name for the interest.
    displayName?: string;
    thumbnailUrl?: NullableOption<string>;
    // Contains a link to a web page or resource about the interest.
    webUrl?: NullableOption<string>;
}
export interface PersonName extends ItemFacet {
    // Provides an ordered rendering of firstName and lastName depending on the locale of the user or their device.
    displayName?: NullableOption<string>;
    // First name of the user.
    first?: NullableOption<string>;
    // Initials of the user.
    initials?: NullableOption<string>;
    // Contains the name for the language (en-US, no-NB, en-AU) following IETF BCP47 format.
    languageTag?: NullableOption<string>;
    // Last name of the user.
    last?: NullableOption<string>;
    // Maiden name of the user.
    maiden?: NullableOption<string>;
    // Middle name of the user.
    middle?: NullableOption<string>;
    // Nickname of the user.
    nickname?: NullableOption<string>;
    // Guidance on how to pronounce the users name.
    pronunciation?: NullableOption<PersonNamePronounciation>;
    // Designators used after the users name (eg: PhD.)
    suffix?: NullableOption<string>;
    // Honorifics used to prefix a users name (eg: Dr, Sir, Madam, Mrs.)
    title?: NullableOption<string>;
}
export interface PersonResponsibility extends ItemFacet {
    /**
     * Contains experience scenario tags a user has associated with the interest. Allowed values in the collection are:
     * askMeAbout, ableToMentor, wantsToLearn, wantsToImprove.
     */
    collaborationTags?: NullableOption<string[]>;
    // Description of the responsibility.
    description?: NullableOption<string>;
    // Contains a friendly name for the responsibility.
    displayName?: string;
    thumbnailUrl?: NullableOption<string>;
    // Contains a link to a web page or resource about the responsibility.
    webUrl?: NullableOption<string>;
}
export interface PersonWebsite extends ItemFacet {
    // Contains categories a user has associated with the website (for example, personal, recipes).
    categories?: NullableOption<string[]>;
    // Contains a description of the website.
    description?: NullableOption<string>;
    // Contains a friendly name for the website.
    displayName?: string;
    thumbnailUrl?: NullableOption<string>;
    // Contains a link to the website itself.
    webUrl?: string;
}
export interface UserAccountInformation extends ItemFacet {
    /**
     * Shows the age group of user. Allowed values null, minor, notAdult and adult are generated by the directory and cannot
     * be changed.
     */
    ageGroup?: string;
    // Contains the two-character country code associated with the users account.
    countryCode?: string;
    // Contains the language the user has associated as preferred for the account.
    preferredLanguageTag?: LocaleInfo;
    // The user principal name (UPN) of the user associated with the account.
    userPrincipalName?: string;
}
export interface WorkPosition extends ItemFacet {
    // Categories that the user has associated with this position.
    categories?: NullableOption<string[]>;
    // Colleagues that are associated with this position.
    colleagues?: NullableOption<RelatedPerson[]>;
    // Contains detailed information about the position.
    detail?: PositionDetail;
    // Denotes whether or not the position is current.
    isCurrent?: NullableOption<boolean>;
    // Contains detail of the user's manager in this position.
    manager?: NullableOption<RelatedPerson>;
}
export interface ProjectParticipation extends ItemFacet {
    // Contains categories a user has associated with the project (for example, digital transformation, oil rig).
    categories?: NullableOption<string[]>;
    // Contains detailed information about the client the project was for.
    client?: NullableOption<CompanyDetail>;
    /**
     * Contains experience scenario tags a user has associated with the interest. Allowed values in the collection are:
     * askMeAbout, ableToMentor, wantsToLearn, wantsToImprove.
     */
    collaborationTags?: NullableOption<string[]>;
    // Lists people that also worked on the project.
    colleagues?: NullableOption<RelatedPerson[]>;
    // Contains detail about the user's role on the project.
    detail?: NullableOption<PositionDetail>;
    // Contains a friendly name for the project.
    displayName?: string;
    // The Person or people who sponsored the project.
    sponsors?: NullableOption<RelatedPerson[]>;
    thumbnailUrl?: NullableOption<string>;
}
export interface SkillProficiency extends ItemFacet {
    // Contains categories a user has associated with the skill (for example, personal, professional, hobby).
    categories?: NullableOption<string[]>;
    /**
     * Contains experience scenario tags a user has associated with the interest. Allowed values in the collection are:
     * askMeAbout, ableToMentor, wantsToLearn, wantsToImprove.
     */
    collaborationTags?: NullableOption<string[]>;
    // Contains a friendly name for the skill.
    displayName?: string;
    /**
     * Detail of the users proficiency with this skill. Possible values are: elementary, limitedWorking, generalProfessional,
     * advancedProfessional, expert, unknownFutureValue.
     */
    proficiency?: NullableOption<SkillProficiencyLevel>;
    thumbnailUrl?: NullableOption<string>;
    // Contains a link to an information source about the skill.
    webUrl?: NullableOption<string>;
}
export interface WebAccount extends ItemFacet {
    // Contains the description the user has provided for the account on the service being referenced.
    description?: NullableOption<string>;
    // Contains basic detail about the service that is being associated.
    service?: ServiceInformation;
    // Contains a status message from the cloud service if provided or synchronized.
    statusMessage?: NullableOption<string>;
    thumbnailUrl?: NullableOption<string>;
    // The user name displayed for the webaccount.
    userId?: string;
    // Contains a link to the user's profile on the cloud service if one exists.
    webUrl?: NullableOption<string>;
}
export interface GovernanceResource extends Entity {
    // The display name of the resource.
    displayName?: NullableOption<string>;
    /**
     * The external id of the resource, representing its original id in the external system. For example, a subscription
     * resource's external id can be '/subscriptions/c14ae696-5e0c-4e5d-88cc-bef6637737ac'.
     */
    externalId?: NullableOption<string>;
    // Represents the date time when the resource is registered in PIM.
    registeredDateTime?: NullableOption<string>;
    /**
     * The externalId of the resource's root scope that is registered in PIM. The root scope can be the parent, grandparent,
     * or higher ancestor resources.
     */
    registeredRoot?: NullableOption<string>;
    /**
     * The status of a given resource. For example, it could represent whether the resource is locked or not (values:
     * Active/Locked). Note: This property may be extended in the future to support more scenarios.
     */
    status?: NullableOption<string>;
    /**
     * Required. Resource type. For example, for Azure resources, the type could be 'Subscription', 'ResourceGroup',
     * 'Microsoft.Sql/server', etc.
     */
    type?: NullableOption<string>;
    /**
     * Read-only. The parent resource. for pimforazurerbac scenario, it can represent the subscription the resource belongs
     * to.
     */
    parent?: NullableOption<GovernanceResource>;
    // The collection of role assignment requests for the resource.
    roleAssignmentRequests?: NullableOption<GovernanceRoleAssignmentRequest[]>;
    // The collection of role assignments for the resource.
    roleAssignments?: NullableOption<GovernanceRoleAssignment[]>;
    // The collection of role defintions for the resource.
    roleDefinitions?: NullableOption<GovernanceRoleDefinition[]>;
    // The collection of role settings for the resource.
    roleSettings?: NullableOption<GovernanceRoleSetting[]>;
}
export interface GovernanceRoleAssignmentRequest extends Entity {
    /**
     * Required. The state of the assignment. The possible values are: Eligible (for eligible assignment), Active (if it is
     * directly assigned), Active (by administrators, or activated on an eligible assignment by the users).
     */
    assignmentState?: string;
    /**
     * If this is a request for role activation, it represents the id of the eligible assignment being referred; Otherwise,
     * the value is null.
     */
    linkedEligibleRoleAssignmentId?: NullableOption<string>;
    // A message provided by users and administrators when create the request about why it is needed.
    reason?: NullableOption<string>;
    /**
     * Read-only. The request create 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 is 2014-01-01T00:00:00Z
     */
    requestedDateTime?: NullableOption<string>;
    // Required. The id of the resource which the role assignment request is associated with.
    resourceId?: NullableOption<string>;
    // Required. The id of the role definition which the role assignment request is associated with.
    roleDefinitionId?: NullableOption<string>;
    // The schedule object of the role assignment request.
    schedule?: NullableOption<GovernanceSchedule>;
    // The status of the role assignment request.
    status?: NullableOption<GovernanceRoleAssignmentRequestStatus>;
    // Required. The id of the subject which the role assignment request is associated with.
    subjectId?: NullableOption<string>;
    /**
     * Required. Representing the type of the operation on the role assignment. The possible values are: AdminAdd , UserAdd ,
     * AdminUpdate , AdminRemove , UserRemove , UserExtend , AdminExtend , UserRenew , AdminRenew.
     */
    type?: string;
    // Read-only. The resource that the request aims to.
    resource?: NullableOption<GovernanceResource>;
    // Read-only. The role definition that the request aims to.
    roleDefinition?: NullableOption<GovernanceRoleDefinition>;
    // Read-only. The user/group principal.
    subject?: NullableOption<GovernanceSubject>;
}
export interface GovernanceRoleAssignment extends Entity {
    /**
     * The state of the assignment. The value can be Eligible for eligible assignment or Active if it is directly assigned
     * Active by administrators, or activated on an eligible assignment by the users.
     */
    assignmentState?: string;
    /**
     * For a non-permanent role assignment, this is the time when the role assignment will be expired. 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 is 2014-01-01T00:00:00Z
     */
    endDateTime?: NullableOption<string>;
    // The external ID the resource that is used to identify the role assignment in the provider.
    externalId?: NullableOption<string>;
    /**
     * If this is an active assignment and created due to activation on an eligible assignment, it represents the ID of that
     * eligible assignment; Otherwise, the value is null.
     */
    linkedEligibleRoleAssignmentId?: NullableOption<string>;
    /**
     * The type of member. The value can be: Inherited (if the role assignment is inherited from a parent resource scope),
     * Group (if the role assignment is not inherited, but comes from the membership of a group assignment), or User (if the
     * role assignment is neither inherited nor from a group assignment).
     */
    memberType?: string;
    // Required. The ID of the resource which the role assignment is associated with.
    resourceId?: NullableOption<string>;
    // Required. The ID of the role definition which the role assignment is associated with.
    roleDefinitionId?: NullableOption<string>;
    /**
     * The start time of the role assignment. 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 is 2014-01-01T00:00:00Z
     */
    startDateTime?: NullableOption<string>;
    status?: string;
    // Required. The ID of the subject which the role assignment is associated with.
    subjectId?: NullableOption<string>;
    /**
     * Read-only. If this is an active assignment and created due to activation on an eligible assignment, it represents the
     * object of that eligible assignment; Otherwise, the value is null.
     */
    linkedEligibleRoleAssignment?: NullableOption<GovernanceRoleAssignment>;
    // Read-only. The resource associated with the role assignment.
    resource?: NullableOption<GovernanceResource>;
    // Read-only. The role definition associated with the role assignment.
    roleDefinition?: NullableOption<GovernanceRoleDefinition>;
    // Read-only. The subject associated with the role assignment.
    subject?: NullableOption<GovernanceSubject>;
}
export interface GovernanceRoleDefinition extends Entity {
    // The display name of the role definition.
    displayName?: NullableOption<string>;
    // The external id of the role definition.
    externalId?: NullableOption<string>;
    // Required. The id of the resource associated with the role definition.
    resourceId?: NullableOption<string>;
    templateId?: NullableOption<string>;
    // Read-only. The associated resource for the role definition.
    resource?: NullableOption<GovernanceResource>;
    // The associated role setting for the role definition.
    roleSetting?: NullableOption<GovernanceRoleSetting>;
}
export interface GovernanceRoleSetting extends Entity {
    // The rule settings that are evaluated when an administrator tries to add an eligible role assignment.
    adminEligibleSettings?: NullableOption<GovernanceRuleSetting[]>;
    // The rule settings that are evaluated when an administrator tries to add a direct member role assignment.
    adminMemberSettings?: NullableOption<GovernanceRuleSetting[]>;
    // Read-only. Indicate if the roleSetting is a default roleSetting
    isDefault?: NullableOption<boolean>;
    // Read-only. The display name of the administrator who last updated the roleSetting.
    lastUpdatedBy?: NullableOption<string>;
    /**
     * Read-only. The time when the role setting was last updated. 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 is 2014-01-01T00:00:00Z
     */
    lastUpdatedDateTime?: NullableOption<string>;
    // Required. The id of the resource that the role setting is associated with.
    resourceId?: NullableOption<string>;
    // Required. The id of the role definition that the role setting is associated with.
    roleDefinitionId?: NullableOption<string>;
    /**
     * The rule settings that are evaluated when a user tries to add an eligible role assignment. The setting is not supported
     * for now.
     */
    userEligibleSettings?: NullableOption<GovernanceRuleSetting[]>;
    // The rule settings that are evaluated when a user tries to activate his role assignment.
    userMemberSettings?: NullableOption<GovernanceRuleSetting[]>;
    // Read-only. The associated resource for this role setting.
    resource?: NullableOption<GovernanceResource>;
    // Read-only. The role definition that is enforced with this role setting.
    roleDefinition?: NullableOption<GovernanceRoleDefinition>;
}
export interface GovernanceSubject extends Entity {
    // The display name of the subject.
    displayName?: NullableOption<string>;
    // The email address of the user subject. If the subject is in other types, it is empty.
    email?: NullableOption<string>;
    // The principal name of the user subject. If the subject is in other types, it is empty.
    principalName?: NullableOption<string>;
    // The type of the subject. The value can be User, Group, and ServicePrincipal.
    type?: NullableOption<string>;
}
export interface PrivilegedAccess extends Entity {
    // The display name of the provider managed by PIM.
    displayName?: NullableOption<string>;
    // A collection of resources for the provider.
    resources?: NullableOption<GovernanceResource[]>;
    // A collection of role assignment requests for the provider.
    roleAssignmentRequests?: NullableOption<GovernanceRoleAssignmentRequest[]>;
    // A collection of role assignments for the provider.
    roleAssignments?: NullableOption<GovernanceRoleAssignment[]>;
    // A collection of role defintions for the provider.
    roleDefinitions?: NullableOption<GovernanceRoleDefinition[]>;
    // A collection of role settings for the provider.
    roleSettings?: NullableOption<GovernanceRoleSetting[]>;
}
export interface UnifiedRoleManagementPolicyRule extends Entity {
    // The target for the policy rule.
    target?: NullableOption<UnifiedRoleManagementPolicyRuleTarget>;
}
export interface UnifiedRoleManagementPolicyApprovalRule extends UnifiedRoleManagementPolicyRule {
    // The approval setting for the rule.
    setting?: NullableOption<ApprovalSettings>;
}
export interface UnifiedRoleManagementPolicyAuthenticationContextRule extends UnifiedRoleManagementPolicyRule {
    // Value of the authentication context claim.
    claimValue?: NullableOption<string>;
    // Indicates if the setting is enabled.
    isEnabled?: NullableOption<boolean>;
}
export interface UnifiedRoleManagementPolicyEnablementRule extends UnifiedRoleManagementPolicyRule {
    // The rules which are enabled. Allowed values are MultifactorAuthentication, Justification, Ticketing.
    enabledRules?: NullableOption<string[]>;
}
export interface UnifiedRoleManagementPolicyExpirationRule extends UnifiedRoleManagementPolicyRule {
    // Indicates if expiration is required for eligibility or assignment.
    isExpirationRequired?: NullableOption<boolean>;
    // The maximum duration allowed for eligiblity or assignment which is not permanent.
    maximumDuration?: NullableOption<string>;
}
export interface UnifiedRoleManagementPolicyNotificationRule extends UnifiedRoleManagementPolicyRule {
    // Whether default recipient is receiving the email or not.
    isDefaultRecipientsEnabled?: NullableOption<boolean>;
    // The level of notification. One of None, Critical, All.
    notificationLevel?: NullableOption<string>;
    // The list of notification recepients like email.
    notificationRecipients?: NullableOption<string[]>;
    // The type of notification. One of Email.
    notificationType?: NullableOption<string>;
    // The type of recipient. One of Requestor, Approver, Admin.
    recipientType?: NullableOption<string>;
}
export interface PrivilegedApproval extends Entity {
    approvalDuration?: NullableOption<string>;
    // Possible values are: pending, approved, denied, aborted, canceled.
    approvalState?: NullableOption<ApprovalState>;
    approvalType?: NullableOption<string>;
    approverReason?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    endDateTime?: NullableOption<string>;
    requestorReason?: NullableOption<string>;
    roleId?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    startDateTime?: NullableOption<string>;
    userId?: NullableOption<string>;
    // Read-only. The role assignment request for this approval object
    request?: NullableOption<PrivilegedRoleAssignmentRequest>;
    // Read-only. Nullable.
    roleInfo?: NullableOption<PrivilegedRole>;
}
export interface PrivilegedRoleAssignmentRequest extends Entity {
    /**
     * The state of the assignment. The value can be Eligible for eligible assignment Active - if it is directly assigned
     * Active by administrators, or activated on an eligible assignment by the users.
     */
    assignmentState?: NullableOption<string>;
    // The duration of a role assignment.
    duration?: NullableOption<string>;
    // The reason for the role assignment.
    reason?: NullableOption<string>;
    /**
     * Read-only. The request create 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 is 2014-01-01T00:00:00Z.
     */
    requestedDateTime?: NullableOption<string>;
    // The id of the role.
    roleId?: NullableOption<string>;
    // The schedule object of the role assignment request.
    schedule?: NullableOption<GovernanceSchedule>;
    /**
     * Read-only.The status of the role assignment request. The value can be
     * NotStarted,Completed,RequestedApproval,Scheduled,Approved,ApprovalDenied,ApprovalAborted,Cancelling,Cancelled,Revoked,RequestExpired.
     */
    status?: NullableOption<string>;
    // The ticketNumber for the role assignment.
    ticketNumber?: NullableOption<string>;
    // The ticketSystem for the role assignment.
    ticketSystem?: NullableOption<string>;
    /**
     * Representing the type of the operation on the role assignment. The value can be AdminAdd: Administrators add users to
     * roles;UserAdd: Users add role assignments.
     */
    type?: NullableOption<string>;
    // The id of the user.
    userId?: NullableOption<string>;
    // The roleInfo object of the role assignment request.
    roleInfo?: NullableOption<PrivilegedRole>;
}
export interface PrivilegedRole extends Entity {
    // Role name.
    name?: NullableOption<string>;
    // The assignments for this role. Read-only. Nullable.
    assignments?: NullableOption<PrivilegedRoleAssignment[]>;
    // The settings for this role. Read-only. Nullable.
    settings?: NullableOption<PrivilegedRoleSettings>;
    // The summary information for this role. Read-only. Nullable.
    summary?: NullableOption<PrivilegedRoleSummary>;
}
export interface PrivilegedOperationEvent extends Entity {
    // Detailed human readable information for the event.
    additionalInformation?: NullableOption<string>;
    // Indicates the time when the event is created.
    creationDateTime?: NullableOption<string>;
    // This is only used when the requestType is Activate, and it indicates the expiration time for the role activation.
    expirationDateTime?: NullableOption<string>;
    /**
     * Incident/Request ticket number during role activation. The value is presented only if the ticket number is provided
     * during role activation.
     */
    referenceKey?: NullableOption<string>;
    /**
     * Incident/Request ticketing system provided during tole activation. The value is presented only if the ticket system is
     * provided during role activation.
     */
    referenceSystem?: NullableOption<string>;
    // The user id of the requestor who initiates the operation.
    requestorId?: NullableOption<string>;
    // The user name of the requestor who initiates the operation.
    requestorName?: NullableOption<string>;
    /**
     * The request operation type. The requestType value can be: Assign (role assignment), Activate (role activation),
     * Unassign (remove role assignment), Deactivate (role deactivation), ScanAlertsNow (scan security alerts), DismissAlert
     * (dismiss security alert), FixAlertItem (fix a security alert issue), AccessReview_Review (review an Access Review),
     * AccessReview_Create (create an Access Review) , AccessReview_Update (update an Access Review), AccessReview_Delete
     * (delete an Access Review).
     */
    requestType?: NullableOption<string>;
    // The id of the role that is associated with the operation.
    roleId?: NullableOption<string>;
    // The name of the role.
    roleName?: NullableOption<string>;
    // The tenant (organization) id.
    tenantId?: NullableOption<string>;
    // The id of the user that is associated with the operation.
    userId?: NullableOption<string>;
    // The user's email.
    userMail?: NullableOption<string>;
    // The user's display name.
    userName?: NullableOption<string>;
}
export interface PrivilegedRoleAssignment extends Entity {
    /**
     * The UTC DateTime when the temporary privileged role assignment will be expired. For permanent role assignment, the
     * value is null.
     */
    expirationDateTime?: NullableOption<string>;
    // true if the role assignment is activated. false if the role assignment is deactivated.
    isElevated?: NullableOption<boolean>;
    // Result message set by the service.
    resultMessage?: NullableOption<string>;
    // Role identifier. In GUID string format.
    roleId?: string;
    // User identifier. In GUID string format.
    userId?: string;
    // Read-only. Nullable. The associated role information.
    roleInfo?: NullableOption<PrivilegedRole>;
}
export interface PrivilegedRoleSettings extends Entity {
    // true if the approval is required when activate the role. false if the approval is not required when activate the role.
    approvalOnElevation?: NullableOption<boolean>;
    // List of Approval ids, if approval is required for activation.
    approverIds?: NullableOption<string[]>;
    // The duration when the role is activated.
    elevationDuration?: NullableOption<string>;
    // true if mfaOnElevation is configurable. false if mfaOnElevation is not configurable.
    isMfaOnElevationConfigurable?: NullableOption<boolean>;
    // Internal used only.
    lastGlobalAdmin?: NullableOption<boolean>;
    // Maximal duration for the activated role.
    maxElavationDuration?: NullableOption<string>;
    // true if MFA is required to activate the role. false if MFA is not required to activate the role.
    mfaOnElevation?: NullableOption<boolean>;
    // Minimal duration for the activated role.
    minElevationDuration?: NullableOption<string>;
    /**
     * true if send notification to the end user when the role is activated. false if do not send notification when the role
     * is activated.
     */
    notificationToUserOnElevation?: NullableOption<boolean>;
    /**
     * true if the ticketing information is required when activate the role. false if the ticketing information is not
     * required when activate the role.
     */
    ticketingInfoOnElevation?: NullableOption<boolean>;
}
export interface PrivilegedRoleSummary extends Entity {
    // The number of users that have the role assigned and the role is activated.
    elevatedCount?: NullableOption<number>;
    // The number of users that have the role assigned but the role is deactivated.
    managedCount?: NullableOption<number>;
    // true if the role activation requires MFA. false if the role activation doesn't require MFA.
    mfaEnabled?: NullableOption<boolean>;
    /**
     * Possible values are: ok, bad. The value depends on the ratio of (managedCount / usersCount). If the ratio is less than
     * a predefined threshold, ok is returned. Otherwise, bad is returned.
     */
    status?: NullableOption<RoleSummaryStatus>;
    // The number of users that are assigned with the role.
    usersCount?: NullableOption<number>;
}
export interface PrivilegedSignupStatus extends Entity {
    isRegistered?: NullableOption<boolean>;
    status?: NullableOption<SetupStatus>;
}
export interface TenantSetupInfo extends Entity {
    firstTimeSetup?: NullableOption<boolean>;
    relevantRolesSettings?: NullableOption<string[]>;
    setupStatus?: NullableOption<SetupStatus>;
    skipSetup?: NullableOption<boolean>;
    userRolesActions?: NullableOption<string>;
    defaultRolesSettings?: NullableOption<PrivilegedRoleSettings>;
}
export interface DocumentComment extends Entity {
    content?: NullableOption<string>;
    replies?: NullableOption<DocumentCommentReply[]>;
}
export interface DocumentCommentReply extends Entity {
    content?: NullableOption<string>;
    location?: NullableOption<string>;
}
export interface Presentation extends Entity {
    comments?: NullableOption<DocumentComment[]>;
}
export interface Print {
    // Tenant-wide settings for the Universal Print service.
    settings?: NullableOption<PrintSettings>;
    // The list of available print connectors.
    connectors?: NullableOption<PrintConnector[]>;
    // The list of print long running operations.
    operations?: NullableOption<PrintOperation[]>;
    // The list of printers registered in the tenant.
    printers?: NullableOption<Printer[]>;
    printerShares?: NullableOption<PrinterShare[]>;
    reports?: NullableOption<ReportRoot>;
    // The list of available Universal Print service endpoints.
    services?: NullableOption<PrintService[]>;
    // The list of printer shares registered in the tenant.
    shares?: NullableOption<PrinterShare[]>;
    // List of abstract definition for a task that can be triggered when various events occur within Universal Print.
    taskDefinitions?: NullableOption<PrintTaskDefinition[]>;
}
export interface PrintConnector extends Entity {
    // The connector's version.
    appVersion?: NullableOption<string>;
    // The connector's device health.
    deviceHealth?: NullableOption<DeviceHealth>;
    // The name of the connector.
    displayName?: NullableOption<string>;
    // The connector machine's hostname.
    fullyQualifiedDomainName?: NullableOption<string>;
    // The physical and/or organizational location of the connector.
    location?: NullableOption<PrinterLocation>;
    name?: NullableOption<string>;
    // The connector machine's operating system version.
    operatingSystem?: NullableOption<string>;
    // The DateTimeOffset when the connector was registered.
    registeredDateTime?: string;
}
export interface PrintOperation extends Entity {
    // The DateTimeOffset when the operation was created. Read-only.
    createdDateTime?: string;
    // The status of the operation. Read-only.
    status?: PrintOperationStatus;
}
export interface PrinterBase extends Entity {
    // The capabilities of the printer/printerShare.
    capabilities?: NullableOption<PrinterCapabilities>;
    // The default print settings of printer/printerShare.
    defaults?: NullableOption<PrinterDefaults>;
    // The name of the printer/printerShare.
    displayName?: NullableOption<string>;
    // Whether the printer/printerShare is currently accepting new print jobs.
    isAcceptingJobs?: NullableOption<boolean>;
    // The physical and/or organizational location of the printer/printerShare.
    location?: NullableOption<PrinterLocation>;
    // The manufacturer of the printer/printerShare.
    manufacturer?: NullableOption<string>;
    // The model name of the printer/printerShare.
    model?: NullableOption<string>;
    name?: NullableOption<string>;
    // The processing status of the printer/printerShare, including any errors.
    status?: NullableOption<PrinterStatus>;
    // The list of jobs that are queued for printing by the printer/printerShare.
    jobs?: NullableOption<PrintJob[]>;
}
export interface Printer extends PrinterBase {
    acceptingJobs?: NullableOption<boolean>;
    // True if the printer has a physical device for printing. Read-only.
    hasPhysicalDevice?: boolean;
    // True if the printer is shared; false otherwise. Read-only.
    isShared?: boolean;
    // The most recent dateTimeOffset when a printer interacted with Universal Print. Read-only.
    lastSeenDateTime?: NullableOption<string>;
    // The DateTimeOffset when the printer was registered. Read-only.
    registeredDateTime?: string;
    // The connectors that are associated with the printer.
    connectors?: NullableOption<PrintConnector[]>;
    share?: NullableOption<PrinterShare>;
    /**
     * The list of printerShares that are associated with the printer. Currently, only one printerShare can be associated with
     * the printer. Read-only. Nullable.
     */
    shares?: NullableOption<PrinterShare[]>;
    // A list of task triggers that are associated with the printer.
    taskTriggers?: NullableOption<PrintTaskTrigger[]>;
}
export interface PrinterShare extends PrinterBase {
    /**
     * If true, all users and groups will be granted access to this printer share. This supersedes the allow lists defined by
     * the allowedUsers and allowedGroups navigation properties.
     */
    allowAllUsers?: boolean;
    // The DateTimeOffset when the printer share was created. Read-only.
    createdDateTime?: string;
    // The groups whose users have access to print using the printer.
    allowedGroups?: NullableOption<Group[]>;
    // The users who have access to print using the printer.
    allowedUsers?: NullableOption<User[]>;
    // The printer that this printer share is related to.
    printer?: NullableOption<Printer>;
}
export interface PrintService extends Entity {
    // Endpoints that can be used to access the service. Read-only. Nullable.
    endpoints?: NullableOption<PrintServiceEndpoint[]>;
}
export interface PrintTaskDefinition extends Entity {
    // The application that created the printTaskDefinition. Read-only.
    createdBy?: AppIdentity;
    // The name of the printTaskDefinition.
    displayName?: string;
    /**
     * A list of tasks that have been created based on this definition. The list includes currently running tasks and recently
     * completed tasks. Read-only.
     */
    tasks?: NullableOption<PrintTask[]>;
}
export interface PrintDocument extends Entity {
    configuration?: PrinterDocumentConfiguration;
    // The document's content (MIME) type. Read-only.
    contentType?: NullableOption<string>;
    // The document's name. Read-only.
    displayName?: NullableOption<string>;
    // The document's size in bytes. Read-only.
    size?: number;
}
export interface PrintTaskTrigger extends Entity {
    /**
     * The Universal Print event that will cause a new printTask to be triggered. Valid values are described in the following
     * table.
     */
    event?: PrintEvent;
    // An abstract definition that will be used to create a printTask when triggered by a print event. Read-only.
    definition?: PrintTaskDefinition;
}
export interface PrintJob extends Entity {
    // A group of settings that a printer should use to print a job.
    configuration?: NullableOption<PrintJobConfiguration>;
    // Read-only. Nullable.
    createdBy?: NullableOption<UserIdentity>;
    // The DateTimeOffset when the job was created. Read-only.
    createdDateTime?: string;
    // If true, document can be fetched by printer.
    isFetchable?: NullableOption<boolean>;
    // Contains the source job URL, if the job has been redirected from another printer.
    redirectedFrom?: NullableOption<string>;
    // Contains the destination job URL, if the job has been redirected to another printer.
    redirectedTo?: NullableOption<string>;
    // The status of the print job. Read-only.
    status?: NullableOption<PrintJobStatus>;
    // Read-only.
    documents?: NullableOption<PrintDocument[]>;
    // A list of printTasks that were triggered by this print job.
    tasks?: NullableOption<PrintTask[]>;
}
export interface PrinterCreateOperation extends PrintOperation {
    // The signed certificate created during the registration process. Read-only.
    certificate?: NullableOption<string>;
    // The created printer entity. Read-only.
    printer?: NullableOption<Printer>;
}
export interface PrintTask extends Entity {
    /**
     * The URL for the print entity that triggered this task. For example,
     * https://graph.microsoft.com/beta/print/printers/{printerId}/jobs/{jobId}. Read-only.
     */
    parentUrl?: string;
    /**
     * The current execution status of this printTask. The calling application is responsible for updating this status when
     * processing is finished, unless the related printJob has been redirected to another printer. Failure to report
     * completion will result in the related print job being blocked from printing and eventually deleted.
     */
    status?: PrintTaskStatus;
    // The printTaskDefinition that was used to create this task. Read-only.
    definition?: PrintTaskDefinition;
    // The printTaskTrigger that triggered this task's execution. Read-only.
    trigger?: PrintTaskTrigger;
}
export interface PrintServiceEndpoint extends Entity {
    // A human-readable display name for the endpoint.
    displayName?: NullableOption<string>;
    // The URI that can be used to access the service.
    uri?: NullableOption<string>;
}
export interface ActivityHistoryItem extends Entity {
    /**
     * Optional. The duration of active user engagement. if not supplied, this is calculated from the startedDateTime and
     * lastActiveDateTime.
     */
    activeDurationSeconds?: NullableOption<number>;
    // Set by the server. DateTime in UTC when the object was created on the server.
    createdDateTime?: NullableOption<string>;
    // Optional. UTC DateTime when the historyItem will undergo hard-delete. Can be set by the client.
    expirationDateTime?: NullableOption<string>;
    /**
     * Optional. UTC DateTime when the historyItem (activity session) was last understood as active or finished - if null,
     * historyItem status should be Ongoing.
     */
    lastActiveDateTime?: NullableOption<string>;
    // Set by the server. DateTime in UTC when the object was modified on the server.
    lastModifiedDateTime?: NullableOption<string>;
    // Required. UTC DateTime when the historyItem (activity session) was started. Required for timeline history.
    startedDateTime?: string;
    // Set by the server. A status code used to identify valid objects. Values: active, updated, deleted, ignored.
    status?: NullableOption<Status>;
    /**
     * 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.
     */
    userTimezone?: NullableOption<string>;
    // Optional. NavigationProperty/Containment; navigation property to the associated activity.
    activity?: UserActivity;
}
// tslint:disable-next-line: no-empty-interface
export interface PayloadResponse extends Entity {}
export interface DataPolicyOperation extends Entity {
    /**
     * 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 is 2014-01-01T00:00:00Z. Null until the operation completes.
     */
    completedDateTime?: NullableOption<string>;
    // Specifies the progress of an operation.
    progress?: number;
    // Possible values are: notStarted, running, complete, failed, unknownFutureValue.
    status?: NullableOption<DataPolicyOperationStatus>;
    // The URL location to where data is being exported for export requests.
    storageLocation?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    submittedDateTime?: string;
    // The id for the user on whom the operation is performed.
    userId?: string;
}
export interface SearchAnswer extends Entity {
    description?: NullableOption<string>;
    displayName?: string;
    lastModifiedBy?: NullableOption<IdentitySet>;
    lastModifiedDateTime?: NullableOption<string>;
    webUrl?: NullableOption<string>;
}
export interface Bookmark extends SearchAnswer {
    availabilityEndDateTime?: NullableOption<string>;
    availabilityStartDateTime?: NullableOption<string>;
    categories?: NullableOption<string[]>;
    groupIds?: NullableOption<string[]>;
    isSuggested?: NullableOption<boolean>;
    keywords?: NullableOption<AnswerKeyword>;
    languageTags?: NullableOption<string[]>;
    platforms?: DevicePlatformType[];
    powerAppIds?: NullableOption<string[]>;
    state?: AnswerState;
    targetedVariations?: NullableOption<AnswerVariant[]>;
}
export interface Qna extends SearchAnswer {
    availabilityEndDateTime?: NullableOption<string>;
    availabilityStartDateTime?: NullableOption<string>;
    groupIds?: NullableOption<string[]>;
    isSuggested?: NullableOption<boolean>;
    keywords?: NullableOption<AnswerKeyword>;
    languageTags?: NullableOption<string[]>;
    platforms?: DevicePlatformType[];
    state?: AnswerState;
    targetedVariations?: NullableOption<AnswerVariant[]>;
}
export interface Alert extends Entity {
    // Name or alias of the activity group (attacker) this alert is attributed to.
    activityGroupName?: NullableOption<string>;
    alertDetections?: NullableOption<AlertDetection[]>;
    // Name of the analyst the alert is assigned to for triage, investigation, or remediation (supports update).
    assignedTo?: NullableOption<string>;
    // Azure subscription ID, present if this alert is related to an Azure resource.
    azureSubscriptionId?: NullableOption<string>;
    // Azure Active Directory tenant ID. Required.
    azureTenantId?: string;
    // Category of the alert (for example, credentialTheft, ransomware, etc.).
    category?: NullableOption<string>;
    /**
     * Time at which the alert was closed. 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 is 2014-01-01T00:00:00Z (supports update).
     */
    closedDateTime?: NullableOption<string>;
    // Security-related stateful information generated by the provider about the cloud application/s related to this alert.
    cloudAppStates?: NullableOption<CloudAppSecurityState[]>;
    // Customer-provided comments on alert (for customer alert management) (supports update).
    comments?: NullableOption<string[]>;
    // Confidence of the detection logic (percentage between 1-100).
    confidence?: NullableOption<number>;
    /**
     * Time at which the alert was created by the alert provider. 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 is 2014-01-01T00:00:00Z.
     * Required.
     */
    createdDateTime?: NullableOption<string>;
    // Alert description.
    description?: NullableOption<string>;
    // Set of alerts related to this alert entity (each alert is pushed to the SIEM as a separate record).
    detectionIds?: NullableOption<string[]>;
    /**
     * Time at which the event(s) that served as the trigger(s) to generate the alert occurred. 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 is
     * 2014-01-01T00:00:00Z. Required.
     */
    eventDateTime?: NullableOption<string>;
    /**
     * Analyst feedback on the alert. Possible values are: unknown, truePositive, falsePositive, benignPositive. (supports
     * update)
     */
    feedback?: NullableOption<AlertFeedback>;
    // Security-related stateful information generated by the provider about the file(s) related to this alert.
    fileStates?: NullableOption<FileSecurityState[]>;
    // A collection of alertHistoryStates comprising an audit log of all updates made to an alert.
    historyStates?: NullableOption<AlertHistoryState[]>;
    // Security-related stateful information generated by the provider about the host(s) related to this alert.
    hostStates?: NullableOption<HostSecurityState[]>;
    // IDs of incidents related to current alert.
    incidentIds?: NullableOption<string[]>;
    investigationSecurityStates?: NullableOption<InvestigationSecurityState[]>;
    lastEventDateTime?: NullableOption<string>;
    /**
     * Time at which the alert entity was last modified. 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 is 2014-01-01T00:00:00Z.
     */
    lastModifiedDateTime?: NullableOption<string>;
    // Threat Intelligence pertaining to malware related to this alert.
    malwareStates?: NullableOption<MalwareState[]>;
    messageSecurityStates?: NullableOption<MessageSecurityState[]>;
    // Security-related stateful information generated by the provider about the network connection(s) related to this alert.
    networkConnections?: NullableOption<NetworkConnection[]>;
    // Security-related stateful information generated by the provider about the process or processes related to this alert.
    processes?: NullableOption<Process[]>;
    /**
     * Vendor/provider recommended action(s) to take as a result of the alert (for example, isolate machine, enforce2FA,
     * reimage host).
     */
    recommendedActions?: NullableOption<string[]>;
    // Security-related stateful information generated by the provider about the registry keys related to this alert.
    registryKeyStates?: NullableOption<RegistryKeyState[]>;
    // Resources related to current alert. For example, for some alerts this can have the Azure Resource value.
    securityResources?: NullableOption<SecurityResource[]>;
    // Alert severity - set by vendor/provider. Possible values are: unknown, informational, low, medium, high. Required.
    severity?: AlertSeverity;
    /**
     * Hyperlinks (URIs) to the source material related to the alert, for example, provider's user interface for alerts or log
     * search, etc.
     */
    sourceMaterials?: NullableOption<string[]>;
    /**
     * Alert lifecycle status (stage). Possible values are: unknown, newAlert, inProgress, resolved. (supports update).
     * Required.
     */
    status?: AlertStatus;
    /**
     * User-definable labels that can be applied to an alert and can serve as filter conditions (for example 'HVA', 'SAW',
     * etc.) (supports update).
     */
    tags?: NullableOption<string[]>;
    // Alert title. Required.
    title?: NullableOption<string>;
    /**
     * Security-related information about the specific properties that triggered the alert (properties appearing in the
     * alert). Alerts might contain information about multiple users, hosts, files, ip addresses. This field indicates which
     * properties triggered the alert generation.
     */
    triggers?: NullableOption<AlertTrigger[]>;
    uriClickSecurityStates?: NullableOption<UriClickSecurityState[]>;
    // Security-related stateful information generated by the provider about the user accounts related to this alert.
    userStates?: NullableOption<UserSecurityState[]>;
    /**
     * Complex type containing details about the security product/service vendor, provider, and subprovider (for example,
     * vendor=Microsoft; provider=Windows Defender ATP; subProvider=AppLocker). Required.
     */
    vendorInformation?: NullableOption<SecurityVendorInformation>;
    // Threat intelligence pertaining to one or more vulnerabilities related to this alert.
    vulnerabilityStates?: NullableOption<VulnerabilityState[]>;
}
export interface CloudAppSecurityProfile extends Entity {
    azureSubscriptionId?: NullableOption<string>;
    azureTenantId?: NullableOption<string>;
    createdDateTime?: NullableOption<string>;
    deploymentPackageUrl?: NullableOption<string>;
    destinationServiceName?: NullableOption<string>;
    isSigned?: NullableOption<boolean>;
    lastModifiedDateTime?: NullableOption<string>;
    manifest?: NullableOption<string>;
    name?: NullableOption<string>;
    permissionsRequired?: NullableOption<ApplicationPermissionsRequired>;
    platform?: NullableOption<string>;
    policyName?: NullableOption<string>;
    publisher?: NullableOption<string>;
    riskScore?: NullableOption<string>;
    tags?: NullableOption<string[]>;
    type?: NullableOption<string>;
    vendorInformation?: NullableOption<SecurityVendorInformation>;
}
export interface DomainSecurityProfile extends Entity {
    activityGroupNames?: NullableOption<string[]>;
    azureSubscriptionId?: NullableOption<string>;
    azureTenantId?: string;
    countHits?: NullableOption<number>;
    countInOrg?: NullableOption<number>;
    domainCategories?: NullableOption<ReputationCategory[]>;
    domainRegisteredDateTime?: NullableOption<string>;
    firstSeenDateTime?: NullableOption<string>;
    lastSeenDateTime?: NullableOption<string>;
    name?: NullableOption<string>;
    registrant?: NullableOption<DomainRegistrant>;
    riskScore?: NullableOption<string>;
    tags?: NullableOption<string[]>;
    vendorInformation?: NullableOption<SecurityVendorInformation>;
}
export interface FileSecurityProfile extends Entity {
    activityGroupNames?: NullableOption<string[]>;
    azureSubscriptionId?: NullableOption<string>;
    azureTenantId?: string;
    certificateThumbprint?: NullableOption<string>;
    extensions?: NullableOption<string[]>;
    fileType?: NullableOption<string>;
    firstSeenDateTime?: NullableOption<string>;
    hashes?: NullableOption<FileHash[]>;
    lastSeenDateTime?: NullableOption<string>;
    malwareStates?: NullableOption<MalwareState[]>;
    names?: NullableOption<string[]>;
    riskScore?: NullableOption<string>;
    size?: NullableOption<number>;
    tags?: NullableOption<string[]>;
    vendorInformation?: NullableOption<SecurityVendorInformation>;
    vulnerabilityStates?: NullableOption<VulnerabilityState[]>;
}
export interface HostSecurityProfile extends Entity {
    azureSubscriptionId?: NullableOption<string>;
    azureTenantId?: string;
    firstSeenDateTime?: NullableOption<string>;
    fqdn?: NullableOption<string>;
    isAzureAdJoined?: NullableOption<boolean>;
    isAzureAdRegistered?: NullableOption<boolean>;
    isHybridAzureDomainJoined?: NullableOption<boolean>;
    lastSeenDateTime?: NullableOption<string>;
    logonUsers?: NullableOption<LogonUser[]>;
    netBiosName?: NullableOption<string>;
    networkInterfaces?: NullableOption<NetworkInterface[]>;
    os?: NullableOption<string>;
    osVersion?: NullableOption<string>;
    parentHost?: NullableOption<string>;
    relatedHostIds?: NullableOption<string[]>;
    riskScore?: NullableOption<string>;
    tags?: NullableOption<string[]>;
    vendorInformation?: NullableOption<SecurityVendorInformation>;
}
// tslint:disable-next-line: interface-name
export interface IpSecurityProfile extends Entity {
    activityGroupNames?: NullableOption<string[]>;
    address?: NullableOption<string>;
    azureSubscriptionId?: NullableOption<string>;
    azureTenantId?: string;
    countHits?: NullableOption<number>;
    countHosts?: NullableOption<number>;
    firstSeenDateTime?: NullableOption<string>;
    ipCategories?: NullableOption<IpCategory[]>;
    ipReferenceData?: NullableOption<IpReferenceData[]>;
    lastSeenDateTime?: NullableOption<string>;
    riskScore?: NullableOption<string>;
    tags?: NullableOption<string[]>;
    vendorInformation?: NullableOption<SecurityVendorInformation>;
}
export interface ProviderTenantSetting extends Entity {
    azureTenantId?: string;
    enabled?: NullableOption<boolean>;
    lastModifiedDateTime?: NullableOption<string>;
    provider?: NullableOption<string>;
    vendor?: NullableOption<string>;
}
export interface SecureScore extends Entity {
    // Active user count of the given tenant.
    activeUserCount?: NullableOption<number>;
    /**
     * Average score by different scopes (for example, average by industry, average by seating) and control category
     * (Identity, Data, Device, Apps, Infrastructure) within the scope.
     */
    averageComparativeScores?: NullableOption<AverageComparativeScore[]>;
    // GUID string for tenant ID.
    azureTenantId?: string;
    // Contains tenant scores for a set of controls.
    controlScores?: NullableOption<ControlScore[]>;
    // The date when the entity is created.
    createdDateTime?: NullableOption<string>;
    // Tenant current attained score on specified date.
    currentScore?: NullableOption<number>;
    // Microsoft-provided services for the tenant (for example, Exchange online, Skype, Sharepoint).
    enabledServices?: NullableOption<string[]>;
    // Licensed user count of the given tenant.
    licensedUserCount?: NullableOption<number>;
    // Tenant maximum possible score on specified date.
    maxScore?: NullableOption<number>;
    /**
     * Complex type containing details about the security product/service vendor, provider, and subprovider (for example,
     * vendor=Microsoft; provider=SecureScore). Required.
     */
    vendorInformation?: NullableOption<SecurityVendorInformation>;
}
export interface SecureScoreControlProfile extends Entity {
    // Control action type (Config, Review, Behavior).
    actionType?: NullableOption<string>;
    // URL to where the control can be actioned.
    actionUrl?: NullableOption<string>;
    // GUID string for tenant ID.
    azureTenantId?: string;
    // The collection of compliance information associated with secure score control
    complianceInformation?: NullableOption<ComplianceInformation[]>;
    // Control action category (Account, Data, Device, Apps, Infrastructure).
    controlCategory?: NullableOption<string>;
    // Flag to indicate where the tenant has marked a control (ignore, thirdParty, reviewed) (supports update).
    controlStateUpdates?: NullableOption<SecureScoreControlStateUpdate[]>;
    // Flag to indicate if a control is depreciated.
    deprecated?: NullableOption<boolean>;
    // Resource cost of implemmentating control (low, moderate, high).
    implementationCost?: NullableOption<string>;
    // Time at which the control profile entity was last modified. The Timestamp type represents date and time
    lastModifiedDateTime?: NullableOption<string>;
    // Current obtained max score on specified date.
    maxScore?: NullableOption<number>;
    // Microsoft's stack ranking of control.
    rank?: NullableOption<number>;
    // Description of what the control will help remediate.
    remediation?: NullableOption<string>;
    // Description of the impact on users of the remediation.
    remediationImpact?: NullableOption<string>;
    // Service that owns the control (Exchange, Sharepoint, Azure AD).
    service?: NullableOption<string>;
    /**
     * List of threats the control mitigates
     * (accountBreach,dataDeletion,dataExfiltration,dataSpillage,elevationOfPrivilege,maliciousInsider,passwordCracking,phishingOrWhaling,spoofing).
     */
    threats?: NullableOption<string[]>;
    // Control tier (Core, Defense in Depth, Advanced.)
    tier?: NullableOption<string>;
    // Title of the control.
    title?: NullableOption<string>;
    // User impact of implementing control (low, moderate, high).
    userImpact?: NullableOption<string>;
    vendorInformation?: NullableOption<SecurityVendorInformation>;
}
export interface Security extends Entity {
    providerStatus?: NullableOption<SecurityProviderStatus[]>;
    // Read-only. Nullable.
    alerts?: NullableOption<Alert[]>;
    cloudAppSecurityProfiles?: NullableOption<CloudAppSecurityProfile[]>;
    domainSecurityProfiles?: NullableOption<DomainSecurityProfile[]>;
    fileSecurityProfiles?: NullableOption<FileSecurityProfile[]>;
    hostSecurityProfiles?: NullableOption<HostSecurityProfile[]>;
    ipSecurityProfiles?: NullableOption<IpSecurityProfile[]>;
    providerTenantSettings?: NullableOption<ProviderTenantSetting[]>;
    secureScoreControlProfiles?: NullableOption<SecureScoreControlProfile[]>;
    secureScores?: NullableOption<SecureScore[]>;
    securityActions?: NullableOption<SecurityAction[]>;
    tiIndicators?: NullableOption<TiIndicator[]>;
    userSecurityProfiles?: NullableOption<UserSecurityProfile[]>;
}
export interface SecurityAction extends Entity {
    // Reason for invoking this action.
    actionReason?: NullableOption<string>;
    /**
     * The Application ID of the calling application that submitted (POST) the action. The appId should be extracted from the
     * auth token and not entered manually by the calling application.
     */
    appId?: NullableOption<string>;
    /**
     * Azure tenant ID of the entity to determine which tenant the entity belongs to (multi-tenancy support). The
     * azureTenantId should be extracted from the auth token and not entered manually by the calling application.
     */
    azureTenantId?: NullableOption<string>;
    clientContext?: NullableOption<string>;
    /**
     * Timestamp when the action was completed. 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 is 2014-01-01T00:00:00Z
     */
    completedDateTime?: NullableOption<string>;
    /**
     * Timestamp when the action 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 is 2014-01-01T00:00:00Z
     */
    createdDateTime?: NullableOption<string>;
    // Error info when the action fails.
    errorInfo?: NullableOption<ResultInfo>;
    /**
     * Timestamp when this action was last updated. 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 is 2014-01-01T00:00:00Z
     */
    lastActionDateTime?: NullableOption<string>;
    // Action name.
    name?: NullableOption<string>;
    /**
     * Collection of parameters (key-value pairs) necessary to invoke the action, e.g. URL or fileHash to block, etc.).
     * Required
     */
    parameters?: NullableOption<KeyValuePair[]>;
    // Collection of securityActionState to keep the history of an action.
    states?: NullableOption<SecurityActionState[]>;
    // Status of the action. Possible values are: NotStarted, Running, Completed, Failed.
    status?: NullableOption<OperationStatus>;
    /**
     * The user principal name of the signed-in user that submitted (POST) the action. The user should be extracted from the
     * auth token and not entered manually by the calling application.
     */
    user?: NullableOption<string>;
    /**
     * Complex Type containing details about the Security product/service vendor, provider, and sub-provider (e.g.
     * vendor=Microsoft; provider=Windows Defender ATP; sub-provider=AppLocker).
     */
    vendorInformation?: NullableOption<SecurityVendorInformation>;
}
export interface TiIndicator extends Entity {
    /**
     * The action to apply if the indicator is matched from within the targetProduct security tool. Possible values are:
     * unknown, allow, block, alert. Required.
     */
    action?: NullableOption<TiAction>;
    /**
     * The cyber threat intelligence name(s) for the parties responsible for the malicious activity covered by the threat
     * indicator.
     */
    activityGroupNames?: NullableOption<string[]>;
    /**
     * A catchall area into which extra data from the indicator not covered by the other tiIndicator properties may be placed.
     * Data placed into additionalInformation will typically not be utilized by the targetProduct security tool.
     */
    additionalInformation?: NullableOption<string>;
    /**
     * Stamped by the system when the indicator is ingested. The Azure Active Directory tenant id of submitting client.
     * Required.
     */
    azureTenantId?: NullableOption<string>;
    /**
     * An integer representing the confidence the data within the indicator accurately identifies malicious behavior.
     * Acceptable values are 0 – 100 with 100 being the highest.
     */
    confidence?: NullableOption<number>;
    // Brief description (100 characters or less) of the threat represented by the indicator. Required.
    description?: NullableOption<string>;
    /**
     * The area of the Diamond Model in which this indicator exists. Possible values are: unknown, adversary, capability,
     * infrastructure, victim.
     */
    diamondModel?: NullableOption<DiamondModel>;
    domainName?: NullableOption<string>;
    emailEncoding?: NullableOption<string>;
    emailLanguage?: NullableOption<string>;
    emailRecipient?: NullableOption<string>;
    emailSenderAddress?: NullableOption<string>;
    emailSenderName?: NullableOption<string>;
    emailSourceDomain?: NullableOption<string>;
    emailSourceIpAddress?: NullableOption<string>;
    emailSubject?: NullableOption<string>;
    emailXMailer?: NullableOption<string>;
    /**
     * DateTime string indicating when the Indicator expires. All indicators must have an expiration date to avoid stale
     * indicators persisting in the system. 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 is 2014-01-01T00:00:00Z. Required.
     */
    expirationDateTime?: NullableOption<string>;
    // An identification number that ties the indicator back to the indicator provider’s system (e.g. a foreign key).
    externalId?: NullableOption<string>;
    fileCompileDateTime?: NullableOption<string>;
    fileCreatedDateTime?: NullableOption<string>;
    fileHashType?: NullableOption<FileHashType>;
    fileHashValue?: NullableOption<string>;
    fileMutexName?: NullableOption<string>;
    fileName?: NullableOption<string>;
    filePacker?: NullableOption<string>;
    filePath?: NullableOption<string>;
    fileSize?: NullableOption<number>;
    fileType?: NullableOption<string>;
    /**
     * Stamped by the system when the indicator is ingested. 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 is 2014-01-01T00:00:00Z
     */
    ingestedDateTime?: NullableOption<string>;
    /**
     * Used to deactivate indicators within system. By default, any indicator submitted is set as active. However, providers
     * may submit existing indicators with this set to ‘False’ to deactivate indicators in the system.
     */
    isActive?: NullableOption<boolean>;
    /**
     * A JSON array of strings that describes which point or points on the Kill Chain this indicator targets. See ‘killChain
     * values’ below for exact values.
     */
    killChain?: NullableOption<string[]>;
    // Scenarios in which the indicator may cause false positives. This should be human-readable text.
    knownFalsePositives?: NullableOption<string>;
    /**
     * The last time the indicator was seen. 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 is 2014-01-01T00:00:00Z
     */
    lastReportedDateTime?: NullableOption<string>;
    /**
     * The malware family name associated with an indicator if it exists. Microsoft prefers the Microsoft malware family name
     * if at all possible which can be found via the Windows Defender Security Intelligence threat encyclopedia.
     */
    malwareFamilyNames?: NullableOption<string[]>;
    networkCidrBlock?: NullableOption<string>;
    networkDestinationAsn?: NullableOption<number>;
    networkDestinationCidrBlock?: NullableOption<string>;
    networkDestinationIPv4?: NullableOption<string>;
    networkDestinationIPv6?: NullableOption<string>;
    networkDestinationPort?: NullableOption<number>;
    networkIPv4?: NullableOption<string>;
    networkIPv6?: NullableOption<string>;
    networkPort?: NullableOption<number>;
    networkProtocol?: NullableOption<number>;
    networkSourceAsn?: NullableOption<number>;
    networkSourceCidrBlock?: NullableOption<string>;
    networkSourceIPv4?: NullableOption<string>;
    networkSourceIPv6?: NullableOption<string>;
    networkSourcePort?: NullableOption<number>;
    /**
     * Determines if the indicator should trigger an event that is visible to an end-user. When set to ‘true,’ security tools
     * will not notify the end user that a ‘hit’ has occurred. This is most often treated as audit or silent mode by security
     * products where they will simply log that a match occurred but will not perform the action. Default value is false.
     */
    passiveOnly?: NullableOption<boolean>;
    /**
     * An integer representing the severity of the malicious behavior identified by the data within the indicator. Acceptable
     * values are 0 – 5 where 5 is the most severe and zero is not severe at all. Default value is 3.
     */
    severity?: NullableOption<number>;
    // A JSON array of strings that stores arbitrary tags/keywords.
    tags?: NullableOption<string[]>;
    /**
     * A string value representing a single security product to which the indicator should be applied. Acceptable values are:
     * Azure Sentinel, Microsoft Defender ATP. Required
     */
    targetProduct?: string;
    /**
     * Each indicator must have a valid Indicator Threat Type. Possible values are: Botnet, C2, CryptoMining, Darknet, DDoS,
     * MaliciousUrl, Malware, Phishing, Proxy, PUA, WatchList. Required.
     */
    threatType?: NullableOption<string>;
    // Traffic Light Protocol value for the indicator. Possible values are: unknown, white, green, amber, red. Required.
    tlpLevel?: NullableOption<TlpLevel>;
    url?: NullableOption<string>;
    userAgent?: NullableOption<string>;
}
export interface UserSecurityProfile extends Entity {
    accounts?: NullableOption<UserAccount[]>;
    azureSubscriptionId?: NullableOption<string>;
    azureTenantId?: string;
    createdDateTime?: NullableOption<string>;
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    riskScore?: NullableOption<string>;
    tags?: NullableOption<string[]>;
    userPrincipalName?: NullableOption<string>;
    vendorInformation?: NullableOption<SecurityVendorInformation>;
}
export interface AudioRoutingGroup extends Entity {
    // List of receiving participant ids.
    receivers?: NullableOption<string[]>;
    // Routing group mode. Possible values are: oneToOne, multicast.
    routingMode?: RoutingMode;
    // List of source participant ids.
    sources?: NullableOption<string[]>;
}
export interface CommsOperation extends Entity {
    // Unique Client Context string. Max limit is 256 chars.
    clientContext?: NullableOption<string>;
    // The result information. Read-only.
    resultInfo?: NullableOption<ResultInfo>;
    // Possible values are: notStarted, running, completed, failed. Read-only.
    status?: OperationStatus;
}
export interface Participant extends Entity {
    // Information about the participant.
    info?: ParticipantInfo;
    // true if the participant is in lobby.
    isInLobby?: boolean;
    // true if the participant is muted (client or server muted).
    isMuted?: boolean;
    // The list of media streams.
    mediaStreams?: NullableOption<MediaStream[]>;
    // A blob of data provided by the participant in the roster.
    metadata?: NullableOption<string>;
    // Information on whether the participant has recording capability.
    recordingInfo?: NullableOption<RecordingInfo>;
}
// tslint:disable-next-line: no-empty-interface
export interface CancelMediaProcessingOperation extends CommsOperation {}
export interface CommsApplication {
    calls?: NullableOption<Call[]>;
    onlineMeetings?: NullableOption<OnlineMeeting[]>;
}
// tslint:disable-next-line: interface-name
export interface InviteParticipantsOperation extends CommsOperation {
    // The participants to invite.
    participants?: InvitationParticipantInfo[];
}
export interface MeetingAttendanceReport extends Entity {
    // The list of attendance records.
    attendanceRecords?: NullableOption<AttendanceRecord[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface MuteParticipantOperation extends CommsOperation {}
export interface MuteParticipantsOperation extends CommsOperation {
    participants?: NullableOption<string[]>;
}
export interface ParticipantJoiningNotification extends Entity {
    call?: NullableOption<Call>;
}
export interface ParticipantLeftNotification extends Entity {
    // ID of the participant under the policy who has left the meeting.
    participantId?: string;
    call?: NullableOption<Call>;
}
export interface PlayPromptOperation extends CommsOperation {
    // Possible values are: unknown, completedSuccessfully, mediaOperationCanceled.
    completionReason?: NullableOption<PlayPromptCompletionReason>;
}
export interface RecordOperation extends CommsOperation {
    /**
     * Possible values are: operationCanceled, stopToneDetected, maxRecordDurationReached, initialSilenceTimeout,
     * maxSilenceTimeout, playPromptFailed, playBeepFailed, mediaReceiveTimeout, unspecifiedError, none.
     */
    completionReason?: NullableOption<RecordCompletionReason>;
    // The access token required to retrieve the recording.
    recordingAccessToken?: NullableOption<string>;
    // The location where the recording is located.
    recordingLocation?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface SubscribeToToneOperation extends CommsOperation {}
// tslint:disable-next-line: no-empty-interface
export interface UnmuteParticipantOperation extends CommsOperation {}
// tslint:disable-next-line: no-empty-interface
export interface UpdateRecordingStatusOperation extends CommsOperation {}
// tslint:disable-next-line: no-empty-interface
export interface AuthenticationMethod extends Entity {}
export interface EmailAuthenticationMethod extends AuthenticationMethod {
    // The email address registered to this user.
    emailAddress?: NullableOption<string>;
}
export interface Fido2AuthenticationMethod extends AuthenticationMethod {
    // Authenticator Attestation GUID, an identifier that indicates the type (e.g. make and model) of the authenticator.
    aaGuid?: NullableOption<string>;
    // The attestation certificate(s) attached to this security key.
    attestationCertificates?: NullableOption<string[]>;
    // The attestation level of this FIDO2 security key. Possible values are: attested, notAttested, unknownFutureValue.
    attestationLevel?: NullableOption<AttestationLevel>;
    // The timestamp when this key was registered to the user.
    createdDateTime?: NullableOption<string>;
    creationDateTime?: NullableOption<string>;
    // The display name of the key as given by the user.
    displayName?: NullableOption<string>;
    // The manufacturer-assigned model of the FIDO2 security key.
    model?: NullableOption<string>;
}
export interface MicrosoftAuthenticatorAuthenticationMethod extends AuthenticationMethod {
    /**
     * The date and time that this app was registered. This property is null if the device is not registered for passwordless
     * Phone Sign-In.
     */
    createdDateTime?: NullableOption<string>;
    // Tags containing app metadata.
    deviceTag?: NullableOption<string>;
    // The name of the device on which this app is registered.
    displayName?: NullableOption<string>;
    // Numerical version of this instance of the Authenticator app.
    phoneAppVersion?: NullableOption<string>;
    /**
     * The registered device on which Microsoft Authenticator resides. This property is null if the device is not registered
     * for passwordless Phone Sign-In.
     */
    device?: NullableOption<Device>;
}
export interface LongRunningOperation extends Entity {
    createdDateTime?: NullableOption<string>;
    lastActionDateTime?: NullableOption<string>;
    resourceLocation?: NullableOption<string>;
    status?: NullableOption<LongRunningOperationStatus>;
    statusDetail?: NullableOption<string>;
}
export interface PasswordlessMicrosoftAuthenticatorAuthenticationMethod extends AuthenticationMethod {
    createdDateTime?: NullableOption<string>;
    // The timestamp when this method was registered to the user.
    creationDateTime?: NullableOption<string>;
    // The display name of the mobile device as given by the user.
    displayName?: NullableOption<string>;
    device?: NullableOption<Device>;
}
export interface PasswordAuthenticationMethod extends AuthenticationMethod {
    createdDateTime?: NullableOption<string>;
    /**
     * The date and time when this password was last updated. This property is currently not populated. Read-only. 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 is 2014-01-01T00:00:00Z
     */
    creationDateTime?: NullableOption<string>;
    // For security, the password is always returned as null from a LIST or GET operation.
    password?: NullableOption<string>;
}
export interface PhoneAuthenticationMethod extends AuthenticationMethod {
    /**
     * The phone number to text or call for authentication. Phone numbers use the format '+&amp;lt;country code&amp;gt;
     * &amp;lt;number&amp;gt;x&amp;lt;extension&amp;gt;', with extension optional. For example, +1 5555551234 or +1
     * 5555551234x123 are valid. Numbers are rejected when creating/updating if they do not match the required format.
     */
    phoneNumber?: NullableOption<string>;
    // The type of this phone. Possible values are: mobile, alternateMobile, or office.
    phoneType?: NullableOption<AuthenticationPhoneType>;
    /**
     * Whether a phone is ready to be used for SMS sign-in or not. Possible values are: notSupported, notAllowedByPolicy,
     * notEnabled, phoneNumberNotUnique, ready, or notConfigured, unknownFutureValue.
     */
    smsSignInState?: NullableOption<AuthenticationMethodSignInState>;
}
export interface TemporaryAccessPassAuthenticationMethod extends AuthenticationMethod {
    // The date and time when the temporaryAccessPass was created.
    createdDateTime?: NullableOption<string>;
    // The state of the authentication method that indicates whether it's currently usable by the user.
    isUsable?: NullableOption<boolean>;
    /**
     * Determines whether the pass is limited to a one time use. If true, the pass can be used once; if false, the pass can be
     * used multiple times within the temporaryAccessPass lifetime.
     */
    isUsableOnce?: NullableOption<boolean>;
    /**
     * The lifetime of the temporaryAccessPass in minutes starting at startDateTime. Minimum 10, Maximum 43200 (equivalent to
     * 30 days).
     */
    lifetimeInMinutes?: NullableOption<number>;
    /**
     * Details about usability state (isUsable). Reasons can include: enabledByPolicy, disabledByPolicy, expired, notYetValid,
     * oneTimeUsed.
     */
    methodUsabilityReason?: NullableOption<string>;
    // The date and time when the temporaryAccessPass becomes available to use.
    startDateTime?: NullableOption<string>;
    /**
     * The temporaryAccessPass used to authenticate. Returned only on creation of a new temporaryAccessPass; returned as NULL
     * with GET.
     */
    temporaryAccessPass?: NullableOption<string>;
}
export interface WindowsHelloForBusinessAuthenticationMethod extends AuthenticationMethod {
    // The date and time that this Windows Hello for Business key was registered.
    createdDateTime?: NullableOption<string>;
    // The name of the device on which Windows Hello for Business is registered
    displayName?: NullableOption<string>;
    // Key strength of this Windows Hello for Business key. Possible values are: normal, weak, unknown.
    keyStrength?: NullableOption<AuthenticationMethodKeyStrength>;
    // The registered device on which this Windows Hello for Business key resides.
    device?: NullableOption<Device>;
}
export interface ConnectionOperation extends Entity {
    error?: NullableOption<PublicError>;
    status?: NullableOption<ConnectionOperationStatus>;
}
export interface External extends Entity {
    connections?: NullableOption<ExternalConnection[]>;
}
export interface ExternalConnection extends Entity {
    configuration?: NullableOption<Configuration>;
    description?: NullableOption<string>;
    name?: NullableOption<string>;
    state?: NullableOption<ConnectionState>;
    groups?: NullableOption<ExternalGroup[]>;
    items?: NullableOption<ExternalItem[]>;
    operations?: NullableOption<ConnectionOperation[]>;
    schema?: NullableOption<Schema>;
}
export interface ExternalGroup extends Entity {
    description?: NullableOption<string>;
    displayName?: NullableOption<string>;
    members?: NullableOption<ExternalGroupMember[]>;
}
export interface ExternalItem extends Entity {
    acl?: NullableOption<Acl[]>;
    content?: NullableOption<ExternalItemContent>;
    properties?: NullableOption<Properties>;
}
export interface Schema extends Entity {
    baseType?: string;
    properties?: NullableOption<Property[]>;
}
export interface ExternalGroupMember extends Entity {
    identitySource?: NullableOption<IdentitySourceType>;
    type?: ExternalGroupMemberType;
}
export interface AadUserConversationMember extends ConversationMember {
    // The email address of the user.
    email?: NullableOption<string>;
    // TenantId which the Azure AD user belongs to.
    tenantId?: NullableOption<string>;
    // The GUID of the user.
    userId?: NullableOption<string>;
    user?: NullableOption<User>;
}
export interface AppCatalogs {
    teamsApps?: NullableOption<TeamsApp[]>;
}
export interface TeamsApp extends Entity {
    // The name of the catalog app provided by the app developer in the Microsoft Teams zip app package.
    displayName?: NullableOption<string>;
    // The method of distribution for the app. Read-only.
    distributionMethod?: NullableOption<TeamsAppDistributionMethod>;
    // The ID of the catalog provided by the app developer in the Microsoft Teams zip app package.
    externalId?: NullableOption<string>;
    // The details for each version of the app.
    appDefinitions?: NullableOption<TeamsAppDefinition[]>;
}
export interface ChatMessage extends Entity {
    // Attached files. Attachments are currently read-only – sending attachments is not supported.
    attachments?: NullableOption<ChatMessageAttachment[]>;
    /**
     * Plaintext/HTML representation of the content of the chat message. Representation is specified by the contentType inside
     * the body. The content is always in HTML if the chat message contains a chatMessageMention.
     */
    body?: ItemBody;
    // If the message was sent in a channel, represents identity of the channel.
    channelIdentity?: NullableOption<ChannelIdentity>;
    // If the message was sent in a chat, represents the identity of the chat.
    chatId?: NullableOption<string>;
    // Timestamp of when the chat message was created.
    createdDateTime?: NullableOption<string>;
    // Read only. Timestamp at which the chat message was deleted, or null if not deleted.
    deletedDateTime?: NullableOption<string>;
    // Read-only. Version number of the chat message.
    etag?: NullableOption<string>;
    /**
     * Read-only. If present, represents details of an event that happened in a chat, a channel, or a team, for example,
     * members were added, and so on. For event messages, the messageType property will be set to systemEventMessage.
     */
    eventDetail?: NullableOption<EventMessageDetail>;
    // Read only. Details of the sender of the chat message.
    from?: NullableOption<ChatMessageFromIdentitySet>;
    // The importance of the chat message. The possible values are: normal, high, urgent.
    importance?: ChatMessageImportance;
    /**
     * Read only. Timestamp when edits to the chat message were made. Triggers an 'Edited' flag in the Teams UI. If no edits
     * are made the value is null.
     */
    lastEditedDateTime?: NullableOption<string>;
    /**
     * Read only. Timestamp when the chat message is created (initial setting) or modified, including when a reaction is added
     * or removed.
     */
    lastModifiedDateTime?: NullableOption<string>;
    // Locale of the chat message set by the client. Always set to en-us.
    locale?: string;
    // List of entities mentioned in the chat message. Currently supports user, bot, team, channel.
    mentions?: NullableOption<ChatMessageMention[]>;
    /**
     * The type of chat message. The possible values are: message, chatEvent, typing, unknownFutureValue, systemEventMessage.
     * Note that you must use the Prefer: include-unknown-enum-members request header to get the following value in this
     * evolvable enum: systemEventMessage.
     */
    messageType?: ChatMessageType;
    // Defines the properties of a policy violation set by a data loss prevention (DLP) application.
    policyViolation?: NullableOption<ChatMessagePolicyViolation>;
    // Reactions for this chat message (for example, Like).
    reactions?: NullableOption<ChatMessageReaction[]>;
    /**
     * Read-only. ID of the parent chat message or root chat message of the thread. (Only applies to chat messages in
     * channels, not chats.)
     */
    replyToId?: NullableOption<string>;
    // The subject of the chat message, in plaintext.
    subject?: NullableOption<string>;
    /**
     * 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.
     */
    summary?: NullableOption<string>;
    // Read-only. Link to the message in Microsoft Teams.
    webUrl?: NullableOption<string>;
    // Content in a message hosted by Microsoft Teams - for example, images or code snippets.
    hostedContents?: NullableOption<ChatMessageHostedContent[]>;
    // Replies for a specified message.
    replies?: NullableOption<ChatMessage[]>;
}
export interface TeamsTab extends Entity {
    // Container for custom settings applied to a tab. The tab is considered configured only once this property is set.
    configuration?: NullableOption<TeamsTabConfiguration>;
    // Name of the tab.
    displayName?: NullableOption<string>;
    messageId?: NullableOption<string>;
    // Index of the order used for sorting tabs.
    sortOrderIndex?: NullableOption<string>;
    teamsAppId?: NullableOption<string>;
    // Deep link URL of the tab instance. Read only.
    webUrl?: NullableOption<string>;
    // The application that is linked to the tab.
    teamsApp?: NullableOption<TeamsApp>;
}
export interface ChatMessageInfo extends Entity {
    /**
     * Body of the chatMessage. This will still contain markers for @mentions and attachments even though the object does not
     * return @mentions and attachments.
     */
    body?: NullableOption<ItemBody>;
    // Date time object representing the time at which message was created.
    createdDateTime?: NullableOption<string>;
    eventDetail?: NullableOption<EventMessageDetail>;
    // Information about the sender of the message.
    from?: NullableOption<ChatMessageFromIdentitySet>;
    // If set to true, the original message has been deleted.
    isDeleted?: NullableOption<boolean>;
    messageType?: ChatMessageType;
}
export interface TeamworkHostedContent extends Entity {
    // Write only. Bytes for the hosted content (such as images).
    contentBytes?: NullableOption<number>;
    // Write only. Content type, such as image/png, image/jpg.
    contentType?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface ChatMessageHostedContent extends TeamworkHostedContent {}
export interface TeamsAppDefinition extends Entity {
    /**
     * A collection of scopes where the Teams app can be installed. Possible values are:team — Indicates that the Teams app
     * can be installed within a team and is authorized to access that team's data. groupChat — Indicates that the Teams app
     * can be installed within a group chat and is authorized to access that group chat's data. personal — Indicates that the
     * Teams app can be installed in the personal scope of a user and is authorized to access that user's data.
     */
    allowedInstallationScopes?: NullableOption<TeamsAppInstallationScopes>;
    // The WebApplicationInfo.Id from the Teams app manifest.
    azureADAppId?: NullableOption<string>;
    createdBy?: NullableOption<IdentitySet>;
    // Verbose description of the application.
    description?: NullableOption<string>;
    // The name of the app provided by the app developer.
    displayName?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    /**
     * The published status of a specific version of a Teams app. Possible values are:submitted — The specific version of the
     * Teams app has been submitted and is under review. published — The request to publish the specific version of the Teams
     * app has been approved by the admin and the app is published. rejected — The request to publish the specific version of
     * the Teams app was rejected by the admin.
     */
    publishingState?: NullableOption<TeamsAppPublishingState>;
    shortdescription?: NullableOption<string>;
    // The ID from the Teams app manifest.
    teamsAppId?: NullableOption<string>;
    // The version number of the application.
    version?: NullableOption<string>;
    // The details of the bot specified in the Teams app manifest.
    bot?: NullableOption<TeamworkBot>;
    // The color version of the Teams app's icon.
    colorIcon?: NullableOption<TeamsAppIcon>;
    // The outline version of the Teams app's icon.
    outlineIcon?: NullableOption<TeamsAppIcon>;
}
// tslint:disable-next-line: no-empty-interface
export interface TeamworkBot extends Entity {}
export interface TeamsAppIcon extends Entity {
    // The web URL that can be used for downloading the image.
    webUrl?: NullableOption<string>;
    // The contents of the app icon if the icon is hosted within the Teams infrastructure.
    hostedContent?: NullableOption<TeamworkHostedContent>;
}
export interface Teamwork extends Entity {
    workforceIntegrations?: NullableOption<WorkforceIntegration[]>;
}
export interface WorkforceIntegration extends ChangeTrackedEntity {
    // API version for the call back URL. Start with 1.
    apiVersion?: NullableOption<number>;
    // Name of the workforce integration.
    displayName?: NullableOption<string>;
    eligibilityFilteringEnabledEntities?: NullableOption<EligibilityFilteringEnabledEntities>;
    // The workforce integration encryption resource.
    encryption?: NullableOption<WorkforceIntegrationEncryption>;
    // Indicates whether this workforce integration is currently active and available.
    isActive?: NullableOption<boolean>;
    /**
     * This property has replaced supports in v1.0. We recommend that you use this property instead of supports. The supports
     * property is still supported in beta for the time being. The possible values are: none, shift, swapRequest, openshift,
     * openShiftRequest, userShiftPreferences, offerShiftRequest, unknownFutureValue, timeCard, timeOffReason, timeOff,
     * timeOffRequest. Note that you must use the Prefer: include-unknown-enum-members request header to get the following
     * values in this evolvable enum: timeCard, timeOffReason, timeOff, timeOffRequest. If selecting more than one value, all
     * values must start with the first letter in uppercase.
     */
    supportedEntities?: NullableOption<WorkforceIntegrationSupportedEntities>;
    /**
     * The Shifts entities supported for synchronous change notifications. Shifts will make a call back to the url provided on
     * client changes on those entities added here. By default, no entities are supported for change notifications. The
     * possible values are: none, shift, swapRequest, openshift, openShiftRequest, userShiftPreferences, offerShiftRequest,
     * unknownFutureValue, timeCard, timeOffReason, timeOff, timeOffRequest. Note that you must use the Prefer:
     * include-unknown-enum-members request header to get the following values in this evolvable enum: timeCard,
     * timeOffReason, timeOff, timeOffRequest. If selecting more than one value, all values must start with the first letter
     * in uppercase.
     */
    supports?: NullableOption<WorkforceIntegrationSupportedEntities>;
    // Workforce Integration URL for callbacks from the Shifts service.
    url?: NullableOption<string>;
}
export interface TeamworkTagMember extends Entity {
    // The member's display name.
    displayName?: NullableOption<string>;
    tenantId?: NullableOption<string>;
    userId?: NullableOption<string>;
}
export interface UserScopeTeamsAppInstallation extends TeamsAppInstallation {
    // The chat between the user and Teams app.
    chat?: NullableOption<Chat>;
}
export interface ScheduleChangeRequest extends ChangeTrackedEntity {
    assignedTo?: NullableOption<ScheduleChangeRequestActor>;
    managerActionDateTime?: NullableOption<string>;
    managerActionMessage?: NullableOption<string>;
    managerUserId?: NullableOption<string>;
    senderDateTime?: NullableOption<string>;
    senderMessage?: NullableOption<string>;
    senderUserId?: NullableOption<string>;
    state?: NullableOption<ScheduleChangeState>;
}
export interface OfferShiftRequest extends ScheduleChangeRequest {
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    recipientActionDateTime?: NullableOption<string>;
    // Custom message sent by recipient of the offer shift request.
    recipientActionMessage?: NullableOption<string>;
    // User id of the recipient of the offer shift request.
    recipientUserId?: NullableOption<string>;
    // User id of the sender of the offer shift request.
    senderShiftId?: NullableOption<string>;
}
export interface OpenShift extends ChangeTrackedEntity {
    // An unpublished open shift.
    draftOpenShift?: NullableOption<OpenShiftItem>;
    isStagedForDeletion?: NullableOption<boolean>;
    // ID for the scheduling group that the open shift belongs to.
    schedulingGroupId?: NullableOption<string>;
    // A published open shift.
    sharedOpenShift?: NullableOption<OpenShiftItem>;
}
export interface OpenShiftChangeRequest extends ScheduleChangeRequest {
    // ID for the open shift.
    openShiftId?: NullableOption<string>;
}
export interface SchedulingGroup extends ChangeTrackedEntity {
    // The display name for the schedulingGroup. Required.
    displayName?: NullableOption<string>;
    // Indicates whether the schedulingGroup can be used when creating new entities or updating existing ones. Required.
    isActive?: NullableOption<boolean>;
    // The list of user IDs that are a member of the schedulingGroup. Required.
    userIds?: NullableOption<string[]>;
}
export interface Shift extends ChangeTrackedEntity {
    // The draft version of this shift that is viewable by managers. Required.
    draftShift?: NullableOption<ShiftItem>;
    isStagedForDeletion?: NullableOption<boolean>;
    // ID of the scheduling group the shift is part of. Required.
    schedulingGroupId?: NullableOption<string>;
    // The shared version of this shift that is viewable by both employees and managers. Required.
    sharedShift?: NullableOption<ShiftItem>;
    // ID of the user assigned to the shift. Required.
    userId?: NullableOption<string>;
}
export interface SwapShiftsChangeRequest extends OfferShiftRequest {
    // Shift ID for the recipient user with whom the request is to swap.
    recipientShiftId?: NullableOption<string>;
}
export interface TimeCard extends ChangeTrackedEntity {
    // The list of breaks associated with the timeCard.
    breaks?: NullableOption<TimeCardBreak[]>;
    // The clock-in event of the timeCard.
    clockInEvent?: NullableOption<TimeCardEvent>;
    // The clock-out event of the timeCard.
    clockOutEvent?: NullableOption<TimeCardEvent>;
    // Indicate if this timeCard entry is confirmed. Possible values are none, user, manager, unknownFutureValue.
    confirmedBy?: NullableOption<ConfirmedBy>;
    // Notes about the timeCard.
    notes?: NullableOption<ItemBody>;
    // The original timeCardEntry of the timeCard, before user edits.
    originalEntry?: NullableOption<TimeCardEntry>;
    /**
     * The current state of the timeCard during its life cycle.Possible values are: clockedIn, onBreak, clockedOut,
     * unknownFutureValue.
     */
    state?: NullableOption<TimeCardState>;
    // User ID to which the timeCard belongs.
    userId?: NullableOption<string>;
}
export interface TimeOffReason extends ChangeTrackedEntity {
    // The name of the timeOffReason. Required.
    displayName?: NullableOption<string>;
    /**
     * Supported icon types: none; car; calendar; running; plane; firstAid; doctor; notWorking; clock; juryDuty; globe; cup;
     * phone; weather; umbrella; piggyBank; dog; cake; trafficCone; pin; sunny. Required.
     */
    iconType?: NullableOption<TimeOffReasonIconType>;
    // Indicates whether the timeOffReason can be used when creating new entities or updating existing ones. Required.
    isActive?: NullableOption<boolean>;
}
export interface TimeOffRequest extends ScheduleChangeRequest {
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    endDateTime?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    startDateTime?: NullableOption<string>;
    // The reason for the time off.
    timeOffReasonId?: NullableOption<string>;
}
export interface TimeOff extends ChangeTrackedEntity {
    // The draft version of this timeOff that is viewable by managers. Required.
    draftTimeOff?: NullableOption<TimeOffItem>;
    isStagedForDeletion?: NullableOption<boolean>;
    // The shared version of this timeOff that is viewable by both employees and managers. Required.
    sharedTimeOff?: NullableOption<TimeOffItem>;
    // ID of the user assigned to the timeOff. Required.
    userId?: NullableOption<string>;
}
export interface EmailFileAssessmentRequest extends ThreatAssessmentRequest {
    // Base64 encoded .eml email file content. The file content cannot fetch back because it isn't stored.
    contentData?: string;
    /**
     * The reason for mail routed to its destination. Possible values are: none, mailFlowRule, safeSender, blockedSender,
     * advancedSpamFiltering, domainAllowList, domainBlockList, notInAddressBook, firstTimeSender, autoPurgeToInbox,
     * autoPurgeToJunk, autoPurgeToDeleted, outbound, notJunk, junk.
     */
    destinationRoutingReason?: NullableOption<MailDestinationRoutingReason>;
    // The mail recipient whose policies are used to assess the mail.
    recipientEmail?: string;
}
export interface FileAssessmentRequest extends ThreatAssessmentRequest {
    // Base64 encoded file content. The file content cannot fetch back because it isn't stored.
    contentData?: string;
    // The file name.
    fileName?: string;
}
export interface MailAssessmentRequest extends ThreatAssessmentRequest {
    /**
     * The reason for mail routed to its destination. Possible values are: none, mailFlowRule, safeSender, blockedSender,
     * advancedSpamFiltering, domainAllowList, domainBlockList, notInAddressBook, firstTimeSender, autoPurgeToInbox,
     * autoPurgeToJunk, autoPurgeToDeleted, outbound, notJunk, junk.
     */
    destinationRoutingReason?: NullableOption<MailDestinationRoutingReason>;
    // The resource URI of the mail message for assessment.
    messageUri?: string;
    // The mail recipient whose policies are used to assess the mail.
    recipientEmail?: string;
}
export interface ThreatAssessmentResult extends Entity {
    /**
     * 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 is 2014-01-01T00:00:00Z.
     */
    createdDateTime?: NullableOption<string>;
    // The result message for each threat assessment.
    message?: NullableOption<string>;
    // The threat assessment result type. Possible values are: checkPolicy (only for mail assessment), rescan.
    resultType?: NullableOption<ThreatAssessmentResultType>;
}
export interface UrlAssessmentRequest extends ThreatAssessmentRequest {
    // The URL string.
    url?: string;
}
export interface LinkedResource extends Entity {
    // Field indicating the app name of the source that is sending the linkedResource.
    applicationName?: NullableOption<string>;
    // Field indicating the title of the linkedResource.
    displayName?: NullableOption<string>;
    // Id of the object that is associated with this task on the third-party/partner system.
    externalId?: NullableOption<string>;
    // Deep link to the linkedResource.
    webUrl?: NullableOption<string>;
}
export interface TodoTaskList extends Entity {
    // The name of the task list.
    displayName?: NullableOption<string>;
    // True if the user is owner of the given task list.
    isOwner?: boolean;
    // True if the task list is shared with other users
    isShared?: boolean;
    /**
     * Property indicating the list name if the given list is a well-known list. Possible values are: none, defaultList,
     * flaggedEmails, unknownFutureValue.
     */
    wellknownListName?: WellknownListName;
    // The collection of open extensions defined for the task list. Nullable.
    extensions?: NullableOption<Extension[]>;
    // The tasks in this task list. Read-only. Nullable.
    tasks?: NullableOption<TodoTask[]>;
}
export interface TodoTask extends Entity {
    // The task body that typically contains information about the task.
    body?: NullableOption<ItemBody>;
    /**
     * The date and time when the task was last modified. By default, it is in UTC. You can provide a custom time zone in the
     * request header. The property value uses ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1,
     * 2020 would look like this: '2020-01-01T00:00:00Z'.
     */
    bodyLastModifiedDateTime?: string;
    // The date in the specified time zone that the task was finished.
    completedDateTime?: NullableOption<DateTimeTimeZone>;
    /**
     * The date and time when the task was created. By default, it is in UTC. You can provide a custom time zone in the
     * request header. The property value uses ISO 8601 format. For example, midnight UTC on Jan 1, 2020 would look like this:
     * '2020-01-01T00:00:00Z'.
     */
    createdDateTime?: string;
    // The date in the specified time zone that the task is to be finished.
    dueDateTime?: NullableOption<DateTimeTimeZone>;
    // The importance of the task. Possible values are: low, normal, high.
    importance?: Importance;
    // Set to true if an alert is set to remind the user of the task.
    isReminderOn?: boolean;
    /**
     * The date and time when the task was last modified. By default, it is in UTC. You can provide a custom time zone in the
     * request header. The property value uses ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1,
     * 2020 would look like this: '2020-01-01T00:00:00Z'.
     */
    lastModifiedDateTime?: string;
    // The recurrence pattern for the task.
    recurrence?: NullableOption<PatternedRecurrence>;
    // The date and time for a reminder alert of the task to occur.
    reminderDateTime?: NullableOption<DateTimeTimeZone>;
    /**
     * Indicates the state or progress of the task. Possible values are: notStarted, inProgress, completed, waitingOnOthers,
     * deferred.
     */
    status?: TaskStatus;
    // A brief description of the task.
    title?: NullableOption<string>;
    // The collection of open extensions defined for the task. Nullable.
    extensions?: NullableOption<Extension[]>;
    // A collection of resources linked to the task.
    linkedResources?: NullableOption<LinkedResource[]>;
}
export interface Document extends Entity {
    comments?: NullableOption<DocumentComment[]>;
}
export interface AppIdentity {
    // Refers to the Unique GUID representing Application Id in the Azure Active Directory.
    appId?: NullableOption<string>;
    // Refers to the Application Name displayed in the Azure Portal.
    displayName?: NullableOption<string>;
    // Refers to the Unique GUID indicating Service Principal Id in Azure Active Directory for the corresponding App.
    servicePrincipalId?: NullableOption<string>;
    // Refers to the Service Principal Name is the Application name in the tenant.
    servicePrincipalName?: NullableOption<string>;
}
export interface AppliedConditionalAccessPolicy {
    /**
     * Refers to the conditional access policy conditions that are not satisfied. Possible values are: none, application,
     * users, devicePlatform, location, clientType, signInRisk, userRisk, time, deviceState, client.
     */
    conditionsNotSatisfied?: NullableOption<ConditionalAccessConditions>;
    /**
     * Refers to the conditional access policy conditions that are satisfied. Possible values are: none, application, users,
     * devicePlatform, location, clientType, signInRisk, userRisk, time, deviceState, client.
     */
    conditionsSatisfied?: NullableOption<ConditionalAccessConditions>;
    // Refers to the Name of the conditional access policy (example: 'Require MFA for Salesforce').
    displayName?: NullableOption<string>;
    /**
     * Refers to the grant controls enforced by the conditional access policy (example: 'Require multi-factor
     * authentication').
     */
    enforcedGrantControls?: NullableOption<string[]>;
    // Refers to the session controls enforced by the conditional access policy (example: 'Require app enforced controls').
    enforcedSessionControls?: NullableOption<string[]>;
    excludeRulesSatisfied?: NullableOption<ConditionalAccessRuleSatisfied[]>;
    // Identifier of the conditional access policy.
    id?: NullableOption<string>;
    includeRulesSatisfied?: NullableOption<ConditionalAccessRuleSatisfied[]>;
    /**
     * Indicates the result of the CA policy that was triggered. Possible values are: success, failure, notApplied (Policy
     * isn't applied because policy conditions were not met),notEnabled (This is due to the policy in disabled state),
     * unknown, unknownFutureValue, reportOnlySuccess, reportOnlyFailure, reportOnlyNotApplied, reportOnlyInterrupted. Note
     * that you must use the Prefer: include-unknown-enum-members request header to get the following values in this evolvable
     * enum: reportOnlySuccess, reportOnlyFailure, reportOnlyNotApplied, reportOnlyInterrupted.
     */
    result?: NullableOption<AppliedConditionalAccessPolicyResult>;
}
export interface ConditionalAccessRuleSatisfied {
    conditionalAccessCondition?: NullableOption<ConditionalAccessConditions>;
    ruleSatisfied?: NullableOption<ConditionalAccessRule>;
}
export interface AuditActivityInitiator {
    /**
     * If the resource initiating the activity is an app, this property indicates all the app related information like appId,
     * Name, servicePrincipalId, Name.
     */
    app?: NullableOption<AppIdentity>;
    /**
     * If the resource initiating the activity is a user, this property Indicates all the user related information like
     * userId, Name, UserPrinicpalName.
     */
    user?: NullableOption<UserIdentity>;
}
// tslint:disable-next-line: interface-name
export interface Identity {
    /**
     * 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.
     */
    displayName?: NullableOption<string>;
    // Unique identifier for the identity.
    id?: NullableOption<string>;
}
export interface UserIdentity extends Identity {
    // Indicates the client IP address used by user performing the activity (audit log only).
    ipAddress?: NullableOption<string>;
    // The userPrincipalName attribute of the user.
    userPrincipalName?: NullableOption<string>;
}
export interface AuthenticationDetail {
    /**
     * The type of authentication method used to perform this step of authentication. Possible values: Password, SMS, Voice,
     * Authenticator App, Software OATH token, Satisfied by token, Previously satisfied.
     */
    authenticationMethod?: NullableOption<string>;
    /**
     * Details about the authentication method used to perform this authentication step. For example, phone number (for SMS
     * and voice), device name (for Authenticator app), and password source (e.g. cloud, AD FS, PTA, PHS).
     */
    authenticationMethodDetail?: NullableOption<string>;
    /**
     * Represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan
     * 1, 2014 is 2014-01-01T00:00:00Z.
     */
    authenticationStepDateTime?: NullableOption<string>;
    // The step of authentication that this satisfied. For example, primary authentication, or multi-factor authentication.
    authenticationStepRequirement?: NullableOption<string>;
    /**
     * Details about why the step succeeded or failed. For examples, user is blocked, fraud code entered, no phone input -
     * timed out, phone unreachable, or claim in token.
     */
    authenticationStepResultDetail?: NullableOption<string>;
    // Indicates the status of the authentication step. Possible values: succeeded, failed.
    succeeded?: NullableOption<boolean>;
}
export interface AuthenticationRequirementPolicy {
    detail?: NullableOption<string>;
    requirementProvider?: NullableOption<RequirementProvider>;
}
// tslint:disable-next-line: no-empty-interface
export interface DetailsInfo {}
export interface DeviceDetail {
    // Indicates the browser information of the used for signing-in.
    browser?: NullableOption<string>;
    browserId?: NullableOption<string>;
    // Refers to the UniqueID of the device used for signing-in.
    deviceId?: NullableOption<string>;
    // Refers to the name of the device used for signing-in.
    displayName?: NullableOption<string>;
    // Indicates whether the device is compliant or not.
    isCompliant?: NullableOption<boolean>;
    // Indicates if the device is managed or not.
    isManaged?: NullableOption<boolean>;
    // Indicates the OS name and version used for signing-in.
    operatingSystem?: NullableOption<string>;
    // Indicates information on whether the signed-in device is Workplace Joined, AzureAD Joined, Domain Joined.
    trustType?: NullableOption<string>;
}
export interface FeatureUsageDetail {
    featureName?: NullableOption<string>;
    lastConfiguredDateTime?: NullableOption<string>;
    lastUsedDateTime?: NullableOption<string>;
    licenseAssigned?: NullableOption<AzureADLicenseType>;
    licenseRequired?: NullableOption<AzureADLicenseType>;
}
export interface GeoCoordinates {
    // Optional. The altitude (height), in feet, above sea level for the item. Read-only.
    altitude?: NullableOption<number>;
    // Optional. The latitude, in decimal, for the item. Writable on OneDrive Personal.
    latitude?: NullableOption<number>;
    // Optional. The longitude, in decimal, for the item. Writable on OneDrive Personal.
    longitude?: NullableOption<number>;
}
// tslint:disable-next-line: interface-name
export interface Initiator extends Identity {
    // Type of initiator. Possible values are: user, application, system, unknownFutureValue.
    initiatorType?: NullableOption<InitiatorType>;
}
export interface KeyValue {
    /**
     * Contains the name of the field that a value is associated with. When a sign in or domain hint is included in the
     * sign-in request, corresponding fields are included as key-value pairs. Possible keys: Login hint present, Domain hint
     * present.
     */
    key?: NullableOption<string>;
    /**
     * Contains the corresponding value for the specified key. The value is true if a sign in hint was included in the sign-in
     * request; otherwise false. The value is true if a domain hint was included in the sign-in request; otherwise false.
     */
    value?: NullableOption<string>;
}
export interface KeyValuePair {
    // Name for this key-value pair
    name?: string;
    // Value for this key-value pair
    value?: NullableOption<string>;
}
export interface LicenseInfoDetail {
    licenseType?: NullableOption<AzureADLicenseType>;
    totalAssignedCount?: NullableOption<number>;
    totalLicenseCount?: NullableOption<number>;
    totalUsageCount?: NullableOption<number>;
}
export interface MfaDetail {
    // Indicates the MFA auth detail for the corresponding Sign-in activity when the MFA Required is 'Yes'.
    authDetail?: NullableOption<string>;
    /**
     * Indicates the MFA Auth methods (SMS, Phone, Authenticator App are some of the value) for the corresponding sign-in
     * activity when the MFA Required field is 'Yes'.
     */
    authMethod?: NullableOption<string>;
}
export interface ModifiedProperty {
    // Name of property that was modified.
    displayName?: NullableOption<string>;
    // New property value.
    newValue?: NullableOption<string>;
    // Old property value.
    oldValue?: NullableOption<string>;
}
export interface NetworkLocationDetail {
    // Provides the name of the network used when signing in.
    networkNames?: NullableOption<string[]>;
    /**
     * Provides the type of network used when signing in. Possible values are: intranet, extranet, namedNetwork, trusted,
     * unknownFutureValue.
     */
    networkType?: NullableOption<NetworkType>;
}
export interface PrivateLinkDetails {
    policyId?: NullableOption<string>;
    policyName?: NullableOption<string>;
    policyTenantId?: NullableOption<string>;
    resourceId?: NullableOption<string>;
}
export interface ProvisionedIdentity extends Identity {
    // Details of the identity.
    details?: NullableOption<DetailsInfo>;
    // Type of identity that has been provisioned, such as 'user' or 'group'.
    identityType?: NullableOption<string>;
}
export interface ProvisioningErrorInfo {
    // Additional details in case of error.
    additionalDetails?: NullableOption<string>;
    // Categorizes the error code. Possible values are failure, nonServiceFailure, success, unknownFutureValue
    errorCategory?: NullableOption<ProvisioningStatusErrorCategory>;
    // Unique error code if any occurred. Learn more
    errorCode?: NullableOption<string>;
    // Summarizes the status and describes why the status happened.
    reason?: NullableOption<string>;
    // Provides the resolution for the corresponding error.
    recommendedAction?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface ProvisioningServicePrincipal extends Identity {}
export interface ProvisioningStatusInfo {
    errorInformation?: NullableOption<ProvisioningErrorInfo>;
    // Possible values are: success, warning, failure, skipped, unknownFutureValue.
    status?: NullableOption<ProvisioningResult>;
}
export interface ProvisioningStep {
    // Summary of what occurred during the step.
    description?: NullableOption<string>;
    // Details of what occurred during the step.
    details?: NullableOption<DetailsInfo>;
    // Name of the step.
    name?: NullableOption<string>;
    /**
     * Type of step. Possible values are: import, scoping, matching, processing, referenceResolution, export,
     * unknownFutureValue.
     */
    provisioningStepType?: NullableOption<ProvisioningStepType>;
    // Status of the step. Possible values are: success, warning, failure, skipped, unknownFutureValue.
    status?: NullableOption<ProvisioningResult>;
}
export interface ProvisioningSystem extends Identity {
    // Details of the system.
    details?: NullableOption<DetailsInfo>;
}
export interface SessionLifetimePolicy {
    detail?: NullableOption<string>;
    expirationRequirement?: NullableOption<ExpirationRequirement>;
}
export interface SignInActivity {
    /**
     * The last interactive sign-in date for a specific user. You can use this field to calculate the last time a user signed
     * in to the directory with an interactive authentication method. This field can be used to build reports, such as
     * inactive users. 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 is: '2014-01-01T00:00:00Z'. For more information about using the value of this
     * property, see Manage inactive user accounts in Azure AD.
     */
    lastSignInDateTime?: NullableOption<string>;
    // Request ID of the last sign-in performed by this user.
    lastSignInRequestId?: NullableOption<string>;
}
export interface SignInLocation {
    /**
     * Provides the city where the sign-in originated. This is calculated using latitude/longitude information from the
     * sign-in activity.
     */
    city?: NullableOption<string>;
    /**
     * Provides the country code info (2 letter code) where the sign-in originated. This is calculated using
     * latitude/longitude information from the sign-in activity.
     */
    countryOrRegion?: NullableOption<string>;
    // Provides the latitude, longitude and altitude where the sign-in originated.
    geoCoordinates?: NullableOption<GeoCoordinates>;
    /**
     * Provides the State where the sign-in originated. This is calculated using latitude/longitude information from the
     * sign-in activity.
     */
    state?: NullableOption<string>;
}
export interface SignInStatus {
    // Provides additional details on the sign-in activity
    additionalDetails?: NullableOption<string>;
    /**
     * Provides the 5-6 digit error code that's generated during a sign-in failure. Check out the list of error codes and
     * messages.
     */
    errorCode?: NullableOption<number>;
    /**
     * Provides the error message or the reason for failure for the corresponding sign-in activity. Check out the list of
     * error codes and messages.
     */
    failureReason?: NullableOption<string>;
}
export interface StatusBase {
    // Possible values are: success, warning, failure, skipped, unknownFutureValue.
    status?: NullableOption<ProvisioningResult>;
}
export interface StatusDetails extends StatusBase {
    // Additional details in case of error.
    additionalDetails?: NullableOption<string>;
    // Categorizes the error code. Possible values are Failure, NonServiceFailure, Success.
    errorCategory?: NullableOption<ProvisioningStatusErrorCategory>;
    // Unique error code if any occurred. Learn more
    errorCode?: NullableOption<string>;
    // Summarizes the status and describes why the status happened.
    reason?: NullableOption<string>;
    // Provides the resolution for the corresponding error.
    recommendedAction?: NullableOption<string>;
}
export interface TargetResource {
    // Indicates the visible name defined for the resource. Typically specified when the resource is created.
    displayName?: NullableOption<string>;
    /**
     * When type is set to Group, this indicates the group type. Possible values are: unifiedGroups, azureAD, and
     * unknownFutureValue
     */
    groupType?: NullableOption<GroupType>;
    // Indicates the unique ID of the resource.
    id?: NullableOption<string>;
    // Indicates name, old value and new value of each attribute that changed. Property values depend on the operation type.
    modifiedProperties?: NullableOption<ModifiedProperty[]>;
    // Describes the resource type. Example values include Application, Group, ServicePrincipal, and User.
    type?: NullableOption<string>;
    // When type is set to User, this includes the user name that initiated the action; null for other types.
    userPrincipalName?: NullableOption<string>;
}
export interface UserRegistrationCount {
    // Provides the registration count for your tenant.
    registrationCount?: number;
    // Represents the status of user registration. Possible values are: registered, enabled, capable, and mfaRegistered.
    registrationStatus?: RegistrationStatusType;
}
export interface UserRegistrationFeatureCount {
    /**
     * Number of users registered or capable for Multi-Factor Authentication, Self-Service Password Reset and Passwordless
     * Authentication. Possible values are: ssprRegistered, ssprEnabled, ssprCapable, passwordlessCapable, mfaCapable.
     */
    feature?: AuthenticationMethodFeature;
    // Number of users.
    userCount?: number;
}
export interface UserRegistrationFeatureSummary {
    // Total number of users accounts, excluding those that are blocked
    totalUserCount?: number;
    /**
     * Number of users registered or capable for Multi-Factor Authentication, Self-Service Password Reset and Passwordless
     * Authentication.
     */
    userRegistrationFeatureCounts?: UserRegistrationFeatureCount[];
    // User role type. Possible values are: all, privilegedAdmin, admin, user.
    userRoles?: NullableOption<IncludedUserRoles>;
    // User type. Possible values are: all, member, guest.
    userTypes?: NullableOption<IncludedUserTypes>;
}
export interface UserRegistrationMethodCount {
    // Name of authentication method.
    authenticationMethod?: string;
    // Number of users registered.
    userCount?: number;
}
export interface UserRegistrationMethodSummary {
    // Total number of users in the tenant.
    totalUserCount?: number;
    // Number of users registered for each authentication method.
    userRegistrationMethodCounts?: UserRegistrationMethodCount[];
    // User role type. Possible values are: all, privilegedAdmin, admin, user.
    userRoles?: NullableOption<IncludedUserRoles>;
    // User type. Possible values are: all, member, guest.
    userTypes?: NullableOption<IncludedUserTypes>;
}
export interface AssignedLicense {
    // A collection of the unique identifiers for plans that have been disabled.
    disabledPlans?: string[];
    // The unique identifier for the SKU.
    skuId?: NullableOption<string>;
}
export interface AssignedPlan {
    /**
     * 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 is
     * 2014-01-01T00:00:00Z
     */
    assignedDateTime?: NullableOption<string>;
    // Condition of the capability assignment. The possible values are Enabled, Warning, Suspended, Deleted, LockedOut.
    capabilityStatus?: NullableOption<string>;
    // The name of the service; for example, 'Exchange'.
    service?: NullableOption<string>;
    // A GUID that identifies the service plan.
    servicePlanId?: NullableOption<string>;
}
export interface DeviceKey {
    deviceId?: NullableOption<string>;
    keyMaterial?: NullableOption<number>;
    keyType?: NullableOption<string>;
}
export interface EmployeeOrgData {
    // The cost center associated with the user. Returned only on $select. Supports $filter.
    costCenter?: NullableOption<string>;
    // The name of the division in which the user works. Returned only on $select. Supports $filter.
    division?: NullableOption<string>;
}
export interface ObjectIdentity {
    /**
     * 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.
     */
    issuer?: NullableOption<string>;
    /**
     * 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 a custom string that starts with
     * emailAddress like emailAddress1) issuerAssignedId must be a valid email addressuserName, issuerAssignedId must be a
     * valid local part of an email addressSupports $filter. 100 character limit.
     */
    issuerAssignedId?: NullableOption<string>;
    /**
     * 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.
     */
    signInType?: NullableOption<string>;
}
export interface LicenseAssignmentState {
    /**
     * The id of the group that assigns this license. If the assignment is a direct-assigned license, this field will be Null.
     * Read-Only.
     */
    assignedByGroup?: NullableOption<string>;
    // The service plans that are disabled in this assignment. Read-Only.
    disabledPlans?: NullableOption<string[]>;
    /**
     * License assignment failure error. If the license is assigned successfully, this field will be Null. Read-Only. Possible
     * values: CountViolation, MutuallyExclusiveViolation, DependencyViolation, ProhibitedInUsageLocationViolation,
     * UniquenessViolation, and Others. For more information on how to identify and resolve license assignment errors see
     * here.
     */
    error?: NullableOption<string>;
    // The unique identifier for the SKU. Read-Only.
    skuId?: NullableOption<string>;
    // Indicate the current state of this assignment. Read-Only. Possible values: Active, ActiveWithError, Disabled and Error.
    state?: NullableOption<string>;
}
export interface OnPremisesExtensionAttributes {
    // First customizable extension attribute.
    extensionAttribute1?: NullableOption<string>;
    // Tenth customizable extension attribute.
    extensionAttribute10?: NullableOption<string>;
    // Eleventh customizable extension attribute.
    extensionAttribute11?: NullableOption<string>;
    // Twelfth customizable extension attribute.
    extensionAttribute12?: NullableOption<string>;
    // Thirteenth customizable extension attribute.
    extensionAttribute13?: NullableOption<string>;
    // Fourteenth customizable extension attribute.
    extensionAttribute14?: NullableOption<string>;
    // Fifteenth customizable extension attribute.
    extensionAttribute15?: NullableOption<string>;
    // Second customizable extension attribute.
    extensionAttribute2?: NullableOption<string>;
    // Third customizable extension attribute.
    extensionAttribute3?: NullableOption<string>;
    // Fourth customizable extension attribute.
    extensionAttribute4?: NullableOption<string>;
    // Fifth customizable extension attribute.
    extensionAttribute5?: NullableOption<string>;
    // Sixth customizable extension attribute.
    extensionAttribute6?: NullableOption<string>;
    // Seventh customizable extension attribute.
    extensionAttribute7?: NullableOption<string>;
    // Eighth customizable extension attribute.
    extensionAttribute8?: NullableOption<string>;
    // Ninth customizable extension attribute.
    extensionAttribute9?: NullableOption<string>;
}
export interface OnPremisesProvisioningError {
    /**
     * 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.
     */
    category?: NullableOption<string>;
    // The date and time at which the error occurred.
    occurredDateTime?: NullableOption<string>;
    // Name of the directory property causing the error. Current possible values: UserPrincipalName or ProxyAddress
    propertyCausingError?: NullableOption<string>;
    // Value of the property causing the error.
    value?: NullableOption<string>;
}
export interface PasswordProfile {
    /**
     * true if the user must change her password on the next login; otherwise false. If not set, default is false. NOTE: For
     * Azure B2C tenants, set to false and instead use custom policies and user flows to force password reset at first sign
     * in. See Force password reset at first logon.
     */
    forceChangePasswordNextSignIn?: NullableOption<boolean>;
    /**
     * 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.
     */
    forceChangePasswordNextSignInWithMfa?: NullableOption<boolean>;
    /**
     * 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.
     */
    password?: NullableOption<string>;
}
export interface ProvisionedPlan {
    // For example, 'Enabled'.
    capabilityStatus?: NullableOption<string>;
    // For example, 'Success'.
    provisioningStatus?: NullableOption<string>;
    // The name of the service; for example, 'AccessControlS2S'
    service?: NullableOption<string>;
}
export interface MailboxSettings {
    // Folder ID of an archive folder for the user. Read only.
    archiveFolder?: NullableOption<string>;
    // Configuration settings to automatically notify the sender of an incoming email with a message from the signed-in user.
    automaticRepliesSetting?: NullableOption<AutomaticRepliesSetting>;
    // The date format for the user's mailbox.
    dateFormat?: NullableOption<string>;
    /**
     * If the user has a calendar delegate, this specifies whether the delegate, mailbox owner, or both receive meeting
     * messages and meeting responses. Possible values are: sendToDelegateAndInformationToPrincipal,
     * sendToDelegateAndPrincipal, sendToDelegateOnly. The default is sendToDelegateOnly.
     */
    delegateMeetingMessageDeliveryOptions?: NullableOption<DelegateMeetingMessageDeliveryOptions>;
    // The locale information for the user, including the preferred language and country/region.
    language?: NullableOption<LocaleInfo>;
    // The time format for the user's mailbox.
    timeFormat?: NullableOption<string>;
    // The default time zone for the user's mailbox.
    timeZone?: NullableOption<string>;
    /**
     * The purpose of the mailbox. Used to differentiate a mailbox for a single user from a shared mailbox and equipment
     * mailbox in Exchange Online. Read only.
     */
    userPurpose?: NullableOption<UserPurpose>;
    userPurposeV2?: NullableOption<MailboxRecipientType>;
    // The days of the week and hours in a specific time zone that the user works.
    workingHours?: NullableOption<WorkingHours>;
}
export interface EmailAddress {
    // The email address of an entity instance.
    address?: NullableOption<string>;
    // The display name of an entity instance.
    name?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface InvitedUserMessageInfo {
    // Additional recipients the invitation message should be sent to. Currently only 1 additional recipient is supported.
    ccRecipients?: NullableOption<Recipient[]>;
    // Customized message body you want to send if you don't want the default message.
    customizedMessageBody?: NullableOption<string>;
    /**
     * 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.
     */
    messageLanguage?: NullableOption<string>;
}
export interface Recipient {
    // The recipient's email address.
    emailAddress?: NullableOption<EmailAddress>;
}
export interface Settings {
    // Specifies if the user's primary mailbox is hosted in the cloud and is enabled for Microsoft Graph.
    hasGraphMailbox?: boolean;
    // Specifies if the user has a MyAnalytics license assigned.
    hasLicense?: boolean;
    // Specifies if the user opted out of MyAnalytics.
    hasOptedOut?: boolean;
}
export interface ApplicationServicePrincipal {
    application?: NullableOption<Application>;
    servicePrincipal?: NullableOption<ServicePrincipal>;
}
export interface Credential {
    /**
     * The name of the field for this credential. e.g, username or password or phoneNumber. This is defined by the
     * application. Must match what is in the html field on singleSignOnSettings/password object.
     */
    fieldId?: NullableOption<string>;
    // The type for this credential. Valid values: username, password, or other.
    type?: NullableOption<string>;
    /**
     * The value for this credential. e.g, mysuperhiddenpassword. Note the value for passwords is write-only, the value can
     * never be read back.
     */
    value?: NullableOption<string>;
}
export interface PasswordSingleSignOnCredentialSet {
    // A list of credential objects that define the complete sign in flow.
    credentials?: NullableOption<Credential[]>;
    // The ID of the user or group this credential set belongs to.
    id?: string;
}
export interface PasswordSingleSignOnField {
    // Title/label override for customization.
    customizedLabel?: NullableOption<string>;
    // Label that would be used if no customizedLabel is provided. Read only.
    defaultLabel?: NullableOption<string>;
    /**
     * Id used to identity the field type. This is an internal id and possible values are param_1, param_2, param_userName,
     * param_password.
     */
    fieldId?: NullableOption<string>;
    // Type of the credential. The values can be text, password.
    type?: NullableOption<string>;
}
export interface PasswordSingleSignOnSettings {
    fields?: NullableOption<PasswordSingleSignOnField[]>;
}
export interface ApiApplication {
    // When true, allows an application to use claims mapping without specifying a custom signing key.
    acceptMappedClaims?: NullableOption<boolean>;
    /**
     * Used for bundling consent if you have a solution that contains two parts: a client app and a custom web API app. If you
     * set the appID of the client app to this value, the user only consents once to the client app. Azure AD knows that
     * consenting to the client means implicitly consenting to the web API and automatically provisions service principals for
     * both APIs at the same time. Both the client and the web API app must be registered in the same tenant.
     */
    knownClientApplications?: NullableOption<string[]>;
    /**
     * The definition of the delegated permissions exposed by the web API represented by this application registration. These
     * delegated permissions may be requested by a client application, and may be granted by users or administrators during
     * consent. Delegated permissions are sometimes referred to as OAuth 2.0 scopes.
     */
    oauth2PermissionScopes?: PermissionScope[];
    /**
     * Lists the client applications that are pre-authorized with the specified delegated permissions to access this
     * application's APIs. Users are not required to consent to any pre-authorized application (for the permissions
     * specified). However, any additional permissions not listed in preAuthorizedApplications (requested through incremental
     * consent for example) will require user consent.
     */
    preAuthorizedApplications?: NullableOption<PreAuthorizedApplication[]>;
    /**
     * Specifies the access token version expected by this resource. This changes the version and format of the JWT produced
     * independent of the endpoint or client used to request the access token. The endpoint used, v1.0 or v2.0, is chosen by
     * the client and only impacts the version of id_tokens. Resources need to explicitly configure
     * requestedAccessTokenVersion to indicate the supported access token format. Possible values for
     * requestedAccessTokenVersion are 1, 2, or null. If the value is null, this defaults to 1, which corresponds to the v1.0
     * endpoint. If signInAudience on the application is configured as AzureADandPersonalMicrosoftAccount, the value for this
     * property must be 2
     */
    requestedAccessTokenVersion?: NullableOption<number>;
}
export interface AppRole {
    /**
     * Specifies whether this app role can be assigned to users and groups (by setting to ['User']), to other application's
     * (by setting to ['Application'], or both (by setting to ['User', 'Application']). App roles supporting assignment to
     * other applications' service principals are also known as application permissions. The 'Application' value is only
     * supported for app roles defined on application entities.
     */
    allowedMemberTypes?: string[];
    /**
     * The description for the app role. This is displayed when the app role is being assigned and, if the app role functions
     * as an application permission, during consent experiences.
     */
    description?: NullableOption<string>;
    // Display name for the permission that appears in the app role assignment and consent experiences.
    displayName?: NullableOption<string>;
    /**
     * Unique role identifier inside the appRoles collection. When creating a new app role, a new Guid identifier must be
     * provided.
     */
    id?: string;
    /**
     * When creating or updating an app role, this must be set to true (which is the default). To delete a role, this must
     * first be set to false. At that point, in a subsequent call, this role may be removed.
     */
    isEnabled?: boolean;
    /**
     * Specifies if the app role is defined on the application object or on the servicePrincipal entity. Must not be included
     * in any POST or PATCH requests. Read-only.
     */
    origin?: NullableOption<string>;
    /**
     * Specifies the value to include in the roles claim in ID tokens and access tokens authenticating an assigned user or
     * service principal. Must not exceed 120 characters in length. Allowed characters are : ! # $ % &amp; ' ( ) * + , - . / :
     * ; = ? @ [ ] ^ + _ { } ~, as well as characters in the ranges 0-9, A-Z and a-z. Any other character, including the space
     * character, are not allowed. May not begin with ..
     */
    value?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface InformationalUrl {
    // CDN URL to the application's logo, Read-only.
    logoUrl?: NullableOption<string>;
    // Link to the application's marketing page. For example, https://www.contoso.com/app/marketing
    marketingUrl?: NullableOption<string>;
    // Link to the application's privacy statement. For example, https://www.contoso.com/app/privacy
    privacyStatementUrl?: NullableOption<string>;
    // Link to the application's support page. For example, https://www.contoso.com/app/support
    supportUrl?: NullableOption<string>;
    // Link to the application's terms of service statement. For example, https://www.contoso.com/app/termsofservice
    termsOfServiceUrl?: NullableOption<string>;
}
export interface KeyCredential {
    // Custom key identifier
    customKeyIdentifier?: NullableOption<number>;
    // Friendly name for the key. Optional.
    displayName?: NullableOption<string>;
    /**
     * The date and time at which the credential expires.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 is 2014-01-01T00:00:00Z.
     */
    endDateTime?: NullableOption<string>;
    // Value for the key credential. Should be a base 64 encoded value.
    key?: NullableOption<number>;
    // The unique identifier for the key.
    keyId?: NullableOption<string>;
    /**
     * The date and time at which the credential becomes valid.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 is 2014-01-01T00:00:00Z.
     */
    startDateTime?: NullableOption<string>;
    // The type of key credential; for example, Symmetric.
    type?: NullableOption<string>;
    // A string that describes the purpose for which the key can be used; for example, Verify.
    usage?: NullableOption<string>;
}
export interface OptionalClaims {
    // The optional claims returned in the JWT access token.
    accessToken?: NullableOption<OptionalClaim[]>;
    // The optional claims returned in the JWT ID token.
    idToken?: NullableOption<OptionalClaim[]>;
    // The optional claims returned in the SAML token.
    saml2Token?: NullableOption<OptionalClaim[]>;
}
export interface ParentalControlSettings {
    /**
     * Specifies the two-letter ISO country codes. Access to the application will be blocked for minors from the countries
     * specified in this list.
     */
    countriesBlockedForMinors?: NullableOption<string[]>;
    /**
     * Specifies the legal age group rule that applies to users of the app. Can be set to one of the following values:
     * ValueDescriptionAllowDefault. Enforces the legal minimum. This means parental consent is required for minors in the
     * European Union and Korea.RequireConsentForPrivacyServicesEnforces the user to specify date of birth to comply with
     * COPPA rules. RequireConsentForMinorsRequires parental consent for ages below 18, regardless of country minor
     * rules.RequireConsentForKidsRequires parental consent for ages below 14, regardless of country minor
     * rules.BlockMinorsBlocks minors from using the app.
     */
    legalAgeGroupRule?: NullableOption<string>;
}
export interface PasswordCredential {
    // Do not use.
    customKeyIdentifier?: NullableOption<number>;
    // Friendly name for the password. Optional.
    displayName?: NullableOption<string>;
    /**
     * The date and time at which the password expires represented using ISO 8601 format and is always in UTC time. For
     * example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Optional.
     */
    endDateTime?: NullableOption<string>;
    // Contains the first three characters of the password. Read-only.
    hint?: NullableOption<string>;
    // The unique identifier for the password.
    keyId?: NullableOption<string>;
    /**
     * Read-only; Contains the strong passwords generated by Azure AD that are 16-64 characters in length. The generated
     * password value is only returned during the initial POST request to addPassword. There is no way to retrieve this
     * password in the future.
     */
    secretText?: NullableOption<string>;
    /**
     * The date and time at which the password becomes valid. 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 is 2014-01-01T00:00:00Z. Optional.
     */
    startDateTime?: NullableOption<string>;
}
export interface PublicClientApplication {
    /**
     * Specifies the URLs where user tokens are sent for sign-in, or the redirect URIs where OAuth 2.0 authorization codes and
     * access tokens are sent.
     */
    redirectUris?: string[];
}
export interface RequiredResourceAccess {
    // The list of OAuth2.0 permission scopes and app roles that the application requires from the specified resource.
    resourceAccess?: ResourceAccess[];
    /**
     * The unique identifier for the resource that the application requires access to. This should be equal to the appId
     * declared on the target resource application.
     */
    resourceAppId?: string;
}
export interface SpaApplication {
    /**
     * Specifies the URLs where user tokens are sent for sign-in, or the redirect URIs where OAuth 2.0 authorization codes and
     * access tokens are sent.
     */
    redirectUris?: string[];
}
export interface VerifiedPublisher {
    // The timestamp when the verified publisher was first added or most recently updated.
    addedDateTime?: NullableOption<string>;
    // The verified publisher name from the app publisher's Microsoft Partner Network (MPN) account.
    displayName?: NullableOption<string>;
    // The ID of the verified publisher from the app publisher's Partner Center account.
    verifiedPublisherId?: NullableOption<string>;
}
export interface WebApplication {
    // Home page or landing page of the application.
    homePageUrl?: NullableOption<string>;
    // Specifies whether this web application can request tokens using the OAuth 2.0 implicit flow.
    implicitGrantSettings?: NullableOption<ImplicitGrantSettings>;
    /**
     * Specifies the URL that will be used by Microsoft's authorization service to logout an user using front-channel,
     * back-channel or SAML logout protocols.
     */
    logoutUrl?: NullableOption<string>;
    oauth2AllowImplicitFlow?: NullableOption<boolean>;
    /**
     * Specifies the URLs where user tokens are sent for sign-in, or the redirect URIs where OAuth 2.0 authorization codes and
     * access tokens are sent.
     */
    redirectUris?: string[];
    redirectUriSettings?: RedirectUriSettings[];
}
export interface OnPremisesPublishing {
    /**
     * If you are configuring a traffic manager in front of multiple App Proxy applications, the alternateUrl is the
     * user-friendly URL that will point to the traffic manager.
     */
    alternateUrl?: NullableOption<string>;
    /**
     * The duration the connector will wait for a response from the backend application before closing the connection.
     * Possible values are default, long. When set to default, the backend application timeout has a length of 85 seconds.
     * When set to long, the backend timeout is increased to 180 seconds. Use long if your server takes more than 85 seconds
     * to respond to requests or if you are unable to access the application and the error status is 'Backend Timeout'.
     * Default value is default.
     */
    applicationServerTimeout?: NullableOption<string>;
    // Indicates if this application is an Application Proxy configured application. This is pre-set by the system. Read-only.
    applicationType?: NullableOption<string>;
    /**
     * Details the pre-authentication setting for the application. Pre-authentication enforces that users must authenticate
     * before accessing the app. Passthru does not require authentication. Possible values are: passthru,
     * aadPreAuthentication.
     */
    externalAuthenticationType?: NullableOption<ExternalAuthenticationType>;
    // The published external url for the application. For example, https://intranet-contoso.msappproxy.net/.
    externalUrl?: NullableOption<string>;
    // The internal url of the application. For example, https://intranet/.
    internalUrl?: NullableOption<string>;
    /**
     * Indicates whether backend SSL certificate validation is enabled for the application. For all new Application Proxy
     * apps, the property will be set to true by default. For all existing apps, the property will be set to false.
     */
    isBackendCertificateValidationEnabled?: NullableOption<boolean>;
    /**
     * Indicates if the HTTPOnly cookie flag should be set in the HTTP response headers. Set this value to true to have
     * Application Proxy cookies include the HTTPOnly flag in the HTTP response headers. If using Remote Desktop Services, set
     * this value to False. Default value is false.
     */
    isHttpOnlyCookieEnabled?: NullableOption<boolean>;
    /**
     * Indicates if the application is currently being published via Application Proxy or not. This is pre-set by the system.
     * Read-only.
     */
    isOnPremPublishingEnabled?: NullableOption<boolean>;
    /**
     * Indicates if the Persistent cookie flag should be set in the HTTP response headers. Keep this value set to false. Only
     * use this setting for applications that can't share cookies between processes. For more information about cookie
     * settings, see Cookie settings for accessing on-premises applications in Azure Active Directory. Default value is false.
     */
    isPersistentCookieEnabled?: NullableOption<boolean>;
    /**
     * Indicates if the Secure cookie flag should be set in the HTTP response headers. Set this value to true to transmit
     * cookies over a secure channel such as an encrypted HTTPS request. Default value is true.
     */
    isSecureCookieEnabled?: NullableOption<boolean>;
    /**
     * Indicates if the application should translate urls in the reponse headers. Keep this value as true unless your
     * application required the original host header in the authentication request. Default value is true.
     */
    isTranslateHostHeaderEnabled?: NullableOption<boolean>;
    /**
     * Indicates if the application should translate urls in the application body. Keep this value as false unless you have
     * hardcoded HTML links to other on-premises applications and don't use custom domains. For more information, see Link
     * translation with Application Proxy. Default value is false.
     */
    isTranslateLinksInBodyEnabled?: NullableOption<boolean>;
    // Represents the single sign-on configuration for the on-premises application.
    singleSignOnSettings?: NullableOption<OnPremisesPublishingSingleSignOn>;
    useAlternateUrlForTranslationAndRedirect?: NullableOption<boolean>;
    /**
     * Details of the certificate associated with the application when a custom domain is in use. null when using the default
     * domain. Read-only.
     */
    verifiedCustomDomainCertificatesMetadata?: NullableOption<VerifiedCustomDomainCertificatesMetadata>;
    // The associated key credential for the custom domain used.
    verifiedCustomDomainKeyCredential?: NullableOption<KeyCredential>;
    // The associated password credential for the custom domain used.
    verifiedCustomDomainPasswordCredential?: NullableOption<PasswordCredential>;
}
export interface AddIn {
    id?: NullableOption<string>;
    properties?: KeyValue[];
    type?: string;
}
export interface PermissionScope {
    /**
     * A description of the delegated permissions, intended to be read by an administrator granting the permission on behalf
     * of all users. This text appears in tenant-wide admin consent experiences.
     */
    adminConsentDescription?: NullableOption<string>;
    // The permission's title, intended to be read by an administrator granting the permission on behalf of all users.
    adminConsentDisplayName?: NullableOption<string>;
    /**
     * Unique delegated permission identifier inside the collection of delegated permissions defined for a resource
     * application.
     */
    id?: string;
    /**
     * When creating or updating a permission, this property must be set to true (which is the default). To delete a
     * permission, this property must first be set to false. At that point, in a subsequent call, the permission may be
     * removed.
     */
    isEnabled?: boolean;
    origin?: NullableOption<string>;
    /**
     * Specifies whether this delegated permission should be considered safe for non-admin users to consent to on behalf of
     * themselves, or whether an administrator should be required for consent to the permissions. This will be the default
     * behavior, but each customer can choose to customize the behavior in their organization (by allowing, restricting or
     * limiting user consent to this delegated permission.)
     */
    type?: NullableOption<string>;
    /**
     * A description of the delegated permissions, intended to be read by a user granting the permission on their own behalf.
     * This text appears in consent experiences where the user is consenting only on behalf of themselves.
     */
    userConsentDescription?: NullableOption<string>;
    /**
     * A title for the permission, intended to be read by a user granting the permission on their own behalf. This text
     * appears in consent experiences where the user is consenting only on behalf of themselves.
     */
    userConsentDisplayName?: NullableOption<string>;
    /**
     * Specifies the value to include in the scp (scope) claim in access tokens. Must not exceed 120 characters in length.
     * Allowed characters are : ! # $ % &amp; ' ( ) * + , - . / : ; = ? @ [ ] ^ + _ { } ~, as well as characters in the ranges
     * 0-9, A-Z and a-z. Any other character, including the space character, are not allowed. May not begin with ..
     */
    value?: NullableOption<string>;
}
export interface SamlSingleSignOnSettings {
    // The relative URI the service provider would redirect to after completion of the single sign-on flow.
    relayState?: NullableOption<string>;
}
export interface AuthenticationMethodsRegistrationCampaign {
    // Users and groups of users that are excluded from being prompted to set up the authentication method.
    excludeTargets?: ExcludeTarget[];
    // Users and groups of users that are prompted to set up the authentication method.
    includeTargets?: AuthenticationMethodsRegistrationCampaignIncludeTarget[];
    /**
     * Specifies the number of days that the user sees a prompt again if they select 'Not now' and snoozes the prompt. Minimum
     * 0 days. Maximum: 14 days. If the value is '0' – The user is prompted during every MFA attempt.
     */
    snoozeDurationInDays?: number;
    /**
     * Enable or disable the feature. Possible values are: default, enabled, disabled, unknownFutureValue. The default value
     * is used when the configuration hasn't been explicitly set and uses the default behavior of Azure AD for the setting.
     * The default value is disabled.
     */
    state?: AdvancedConfigState;
}
export interface ExcludeTarget {
    // The object identifier of an Azure AD user or group.
    id?: string;
    // The type of the authentication method target. Possible values are: user, group, unknownFutureValue.
    targetType?: AuthenticationMethodTargetType;
}
export interface AuthenticationMethodsRegistrationCampaignIncludeTarget {
    // The object identifier of an Azure AD user or group.
    id?: string;
    // The authentication method that the user is prompted to register. The value must be microsoftAuthenticator.
    targetedAuthenticationMethod?: NullableOption<string>;
    // The type of the authentication method target. Possible values are: user, group, unknownFutureValue.
    targetType?: AuthenticationMethodTargetType;
}
export interface Fido2KeyRestrictions {
    // A collection of Authenticator Attestation GUIDs. AADGUIDs define key types and manufacturers.
    aaGuids?: NullableOption<string[]>;
    // Enforcement type. Possible values are: allow, block.
    enforcementType?: NullableOption<Fido2RestrictionEnforcementType>;
    // Determines if the configured key enforcement is enabled.
    isEnforced?: NullableOption<boolean>;
}
export interface RegistrationEnforcement {
    // Run campaigns to remind users to setup targeted authentication methods.
    authenticationMethodsRegistrationCampaign?: NullableOption<AuthenticationMethodsRegistrationCampaign>;
}
export interface BookingReminder {
    // The message in the reminder.
    message?: string;
    /**
     * The amount of time before the start of an appointment that the reminder should be sent. It's denoted in ISO 8601
     * format.
     */
    offset?: string;
    // The persons who shouold receive the reminder. Possible values are: allAttendees, staff, customer.
    recipients?: BookingReminderRecipients;
}
export interface BookingSchedulingPolicy {
    // True if to allow customers to choose a specific person for the booking.
    allowStaffSelection?: boolean;
    // Maximum number of days in advance that a booking can be made. It follows the ISO 8601 format.
    maximumAdvance?: string;
    // The minimum amount of time before which bookings and cancellations must be made. It follows the ISO 8601 format.
    minimumLeadTime?: string;
    /**
     * True to notify the business via email when a booking is created or changed. Use the email address specified in the
     * email property of the bookingBusiness entity for the business.
     */
    sendConfirmationsToOwner?: boolean;
    // Duration of each time slot, denoted in ISO 8601 format.
    timeSlotInterval?: string;
}
export interface BookingWorkHours {
    /**
     * The day of the week represented by this instance. Possible values are: sunday, monday, tuesday, wednesday, thursday,
     * friday, saturday.
     */
    day?: DayOfWeek;
    // A list of start/end times during a day.
    timeSlots?: NullableOption<BookingWorkTimeSlot[]>;
}
export interface BookingWorkTimeSlot {
    // The time of the day that work starts. For example, 08:00:00.0000000.
    end?: string;
    // The time of the day that work stops. For example, 17:00:00.0000000.
    start?: string;
}
export interface DateTimeTimeZone {
    // A single point of time in a combined date and time representation ({date}T{time}). For example, '2019-04-16T09:00:00'.
    dateTime?: string;
    // Represents a time zone, for example, 'Pacific Standard Time'. See below for possible values.
    timeZone?: NullableOption<string>;
}
export interface Location {
    // The street address of the location.
    address?: NullableOption<PhysicalAddress>;
    // The geographic coordinates and elevation of the location.
    coordinates?: NullableOption<OutlookGeoCoordinates>;
    // The name associated with the location.
    displayName?: NullableOption<string>;
    // Optional email address of the location.
    locationEmailAddress?: NullableOption<string>;
    /**
     * The type of location. Possible values are: default, conferenceRoom, homeAddress, businessAddress,geoCoordinates,
     * streetAddress, hotel, restaurant, localBusiness, postalAddress. Read-only.
     */
    locationType?: NullableOption<LocationType>;
    // Optional URI representing the location.
    locationUri?: NullableOption<string>;
    // For internal use only.
    uniqueId?: NullableOption<string>;
    // For internal use only.
    uniqueIdType?: NullableOption<LocationUniqueIdType>;
}
export interface PhysicalAddress {
    // The city.
    city?: NullableOption<string>;
    // The country or region. It's a free-format string value, for example, 'United States'.
    countryOrRegion?: NullableOption<string>;
    // The postal code.
    postalCode?: NullableOption<string>;
    // The post office box number.
    postOfficeBox?: NullableOption<string>;
    // The state.
    state?: NullableOption<string>;
    // The street.
    street?: NullableOption<string>;
    // The type of address. Possible values are: unknown, home, business, other.
    type?: NullableOption<PhysicalAddressType>;
}
export interface OutlookGeoCoordinates {
    /**
     * 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.
     */
    accuracy?: NullableOption<number>;
    // The altitude of the location.
    altitude?: NullableOption<number>;
    // The accuracy of the altitude.
    altitudeAccuracy?: NullableOption<number>;
    // The latitude of the location.
    latitude?: NullableOption<number>;
    // The longitude of the location.
    longitude?: NullableOption<number>;
}
export interface TimeSlot {
    // The date, time, and time zone that a period begins.
    end?: DateTimeTimeZone;
    // The date, time, and time zone that a period ends.
    start?: DateTimeTimeZone;
}
export interface CloudPcAuditActor {
    // Name of the application.
    applicationDisplayName?: NullableOption<string>;
    // Azure AD application ID.
    applicationId?: NullableOption<string>;
    // IP address.
    ipAddress?: NullableOption<string>;
    // The delegated partner tenant ID.
    remoteTenantId?: NullableOption<string>;
    // The delegated partner user ID.
    remoteUserId?: NullableOption<string>;
    // Service Principal Name (SPN).
    servicePrincipalName?: NullableOption<string>;
    // The actor type. Possible values include ItPro, Application, Partner and Unknown.
    type?: CloudPcAuditActorType;
    // Azure AD user ID.
    userId?: NullableOption<string>;
    // List of user permissions and application permissions when the audit event was performed.
    userPermissions?: string[];
    // User Principal Name (UPN).
    userPrincipalName?: NullableOption<string>;
    // List of role scope tags.
    userRoleScopeTags?: NullableOption<CloudPcUserRoleScopeTagInfo[]>;
}
export interface CloudPcUserRoleScopeTagInfo {
    // Scope tag display name.
    displayName?: string;
    // Scope tag ID.
    roleScopeTagId?: string;
}
export interface CloudPcAuditProperty {
    // Display name.
    displayName?: string;
    // New value.
    newValue?: string;
    // Old value.
    oldValue?: NullableOption<string>;
}
export interface CloudPcAuditResource {
    // The resource entity display name.
    displayName?: NullableOption<string>;
    // A list of modified properties.
    modifiedProperties?: CloudPcAuditProperty[];
    // The ID of the audit resource.
    resourceId?: string;
    // The type of the audit resource.
    type?: string;
}
// tslint:disable-next-line: no-empty-interface
export interface CloudPcManagementAssignmentTarget {}
export interface CloudPcManagementGroupAssignmentTarget extends CloudPcManagementAssignmentTarget {
    // The id of the assignment's target group
    groupId?: NullableOption<string>;
}
export interface CloudPcOnPremisesConnectionHealthCheck {
    // Additional details about the health check or the recommended action.
    additionalDetails?: NullableOption<string>;
    // The display name for this health check item.
    displayName?: NullableOption<string>;
    // The end time of the health check item. Read-only.
    endDateTime?: string;
    // The type of error that occurred during this health check.
    errorType?: NullableOption<CloudPcOnPremisesConnectionHealthCheckErrorType>;
    // The recommended action to fix the corresponding error.
    recommendedAction?: NullableOption<string>;
    // The start time of the health check item. Read-only.
    startDateTime?: string;
    /**
     * The status of the health check item. Possible values are: pending, running, passed, failed, unknownFutureValue.
     * Read-only.
     */
    status?: CloudPcOnPremisesConnectionStatus;
}
export interface CloudPcOnPremisesConnectionStatusDetails {
    /**
     * The end time of the connection health check. 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 is 2014-01-01T00:00:00Z.
     */
    endDateTime?: string;
    // All checks that are done on the connection.
    healthChecks?: NullableOption<CloudPcOnPremisesConnectionHealthCheck[]>;
    /**
     * The start time of the connection health check. 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 is 2014-01-01T00:00:00Z.
     */
    startDateTime?: string;
}
export interface CloudPcRemoteActionResult {
    actionName?: NullableOption<string>;
    actionState?: NullableOption<ActionState>;
    cloudPcId?: NullableOption<string>;
    lastUpdatedDateTime?: NullableOption<string>;
    managedDeviceId?: NullableOption<string>;
    startDateTime?: NullableOption<string>;
    statusDetails?: NullableOption<CloudPcStatusDetails>;
}
export interface CloudPcStatusDetails {
    // Any additional information about the cloud PC status.
    additionalInformation?: NullableOption<KeyValuePair[]>;
    // The code associated with the cloud PC status.
    code?: NullableOption<string>;
    // The status message.
    message?: NullableOption<string>;
}
export interface CloudPcSourceDeviceImage {
    // The display name for the source image.
    displayName?: NullableOption<string>;
    // The ID of the source image.
    id?: NullableOption<string>;
}
export interface UnifiedRolePermission {
    // Set of tasks that can be performed on a resource.
    allowedResourceActions?: string[];
    // Optional constraints that must be met for the permission to be effective.
    condition?: NullableOption<string>;
    excludedResourceActions?: NullableOption<string[]>;
}
export interface DeviceManagementSettings {
    // The property to determine if Android device administrator enrollment is enabled for this account.
    androidDeviceAdministratorEnrollmentEnabled?: boolean;
    /**
     * The Derived Credential Provider to use for this account. Possible values are: notConfigured, entrustDataCard, purebred,
     * xTec, intercede.
     */
    derivedCredentialProvider?: DerivedCredentialProviderType;
    // The Derived Credential Provider self-service URI.
    derivedCredentialUrl?: NullableOption<string>;
    // The number of days a device is allowed to go without checking in to remain compliant.
    deviceComplianceCheckinThresholdDays?: number;
    /**
     * When the device does not check in for specified number of days, the company data might be removed and the device will
     * not be under management. Valid values 30 to 270
     */
    deviceInactivityBeforeRetirementInDay?: number;
    // Determines whether the log collection feature should be available for use.
    enableLogCollection?: boolean;
    // Is feature enabled or not for enhanced jailbreak detection.
    enhancedJailBreak?: boolean;
    // The property to determine whether to ignore unsupported compliance settings on certian models of devices.
    ignoreDevicesForUnsupportedSettingsEnabled?: boolean;
    // Is feature enabled or not for scheduled action for rule.
    isScheduledActionEnabled?: boolean;
    // Device should be noncompliant when there is no compliance policy targeted when this is true
    secureByDefault?: boolean;
}
// tslint:disable-next-line: interface-name
export interface IntuneBrand {
    // Collection of blocked actions on the company portal as per platform and device ownership types.
    companyPortalBlockedActions?: NullableOption<CompanyPortalBlockedAction[]>;
    // Email address of the person/organization responsible for IT support.
    contactITEmailAddress?: NullableOption<string>;
    // Name of the person/organization responsible for IT support.
    contactITName?: NullableOption<string>;
    // Text comments regarding the person/organization responsible for IT support.
    contactITNotes?: NullableOption<string>;
    // Phone number of the person/organization responsible for IT support.
    contactITPhoneNumber?: NullableOption<string>;
    // The custom privacy message used to explain what the organization can see and do on managed devices.
    customCanSeePrivacyMessage?: NullableOption<string>;
    // The custom privacy message used to explain what the organization can’t see or do on managed devices.
    customCantSeePrivacyMessage?: NullableOption<string>;
    // The custom privacy message used to explain what the organization can’t see or do on managed devices.
    customPrivacyMessage?: NullableOption<string>;
    // Logo image displayed in Company Portal apps which have a dark background behind the logo.
    darkBackgroundLogo?: NullableOption<MimeContent>;
    /**
     * Applies to telemetry sent from all clients to the Intune service. When disabled, all proactive troubleshooting and
     * issue warnings within the client are turned off, and telemetry settings appear inactive or hidden to the device user.
     */
    disableClientTelemetry?: boolean;
    // Company/organization name that is displayed to end users.
    displayName?: NullableOption<string>;
    /**
     * Customized device enrollment flow displayed to the end user . Possible values are: availableWithPrompts,
     * availableWithoutPrompts, unavailable.
     */
    enrollmentAvailability?: EnrollmentAvailabilityOptions;
    // Boolean that represents whether the adminsistrator has disabled the 'Factory Reset' action on corporate owned devices.
    isFactoryResetDisabled?: boolean;
    // Boolean that represents whether the adminsistrator has disabled the 'Remove Device' action on corporate owned devices.
    isRemoveDeviceDisabled?: boolean;
    // Customized image displayed in Company Portal app landing page
    landingPageCustomizedImage?: NullableOption<MimeContent>;
    // Logo image displayed in Company Portal apps which have a light background behind the logo.
    lightBackgroundLogo?: NullableOption<MimeContent>;
    // Display name of the company/organization’s IT helpdesk site.
    onlineSupportSiteName?: NullableOption<string>;
    // URL to the company/organization’s IT helpdesk site.
    onlineSupportSiteUrl?: NullableOption<string>;
    // URL to the company/organization’s privacy policy.
    privacyUrl?: NullableOption<string>;
    // List of scope tags assigned to the default branding profile
    roleScopeTagIds?: NullableOption<string[]>;
    /**
     * Boolean that indicates if a push notification is sent to users when their device ownership type changes from personal
     * to corporate
     */
    sendDeviceOwnershipChangePushNotification?: boolean;
    // Boolean that indicates if AzureAD Enterprise Apps will be shown in Company Portal
    showAzureADEnterpriseApps?: boolean;
    // Boolean that represents whether the administrator-supplied display name will be shown next to the logo image.
    showDisplayNameNextToLogo?: boolean;
    // Boolean that represents whether the administrator-supplied logo images are shown or not shown.
    showLogo?: boolean;
    // Boolean that represents whether the administrator-supplied display name will be shown next to the logo image.
    showNameNextToLogo?: boolean;
    // Boolean that indicates if Office WebApps will be shown in Company Portal
    showOfficeWebApps?: boolean;
    // Primary theme color used in the Company Portal applications and web portal.
    themeColor?: NullableOption<RgbColor>;
}
export interface AdminConsent {
    /**
     * The admin consent state of sharing user and device data to Apple. Possible values are: notConfigured, granted,
     * notGranted.
     */
    shareAPNSData?: AdminConsentState;
    /**
     * Gets or sets the admin consent for sharing User experience analytics data. Possible values are: notConfigured, granted,
     * notGranted.
     */
    shareUserExperienceAnalyticsData?: AdminConsentState;
}
export interface DeviceProtectionOverview {
    // Clean device count.
    cleanDeviceCount?: number;
    // Critical failures device count.
    criticalFailuresDeviceCount?: number;
    // Device with inactive threat agent count
    inactiveThreatAgentDeviceCount?: number;
    // Pending full scan device count.
    pendingFullScanDeviceCount?: number;
    // Pending manual steps device count.
    pendingManualStepsDeviceCount?: number;
    // Pending offline scan device count.
    pendingOfflineScanDeviceCount?: number;
    // Pending quick scan device count. Valid values -2147483648 to 2147483647
    pendingQuickScanDeviceCount?: number;
    // Pending restart device count.
    pendingRestartDeviceCount?: number;
    // Device with old signature count.
    pendingSignatureUpdateDeviceCount?: number;
    // Total device count.
    totalReportedDeviceCount?: number;
    // Device with threat agent state as unknown count.
    unknownStateThreatAgentDeviceCount?: number;
}
export interface ManagedDeviceCleanupSettings {
    // Number of days when the device has not contacted Intune.
    deviceInactivityBeforeRetirementInDays?: NullableOption<string>;
}
export interface UserExperienceAnalyticsSettings {
    // True if Tenant attach is configured. If configured then SCCM tenant attached devices will show up in UXA reporting.
    configurationManagerDataConnectorConfigured?: boolean;
}
export interface WindowsMalwareOverview {
    // Count of devices per malware category
    malwareCategorySummary?: NullableOption<WindowsMalwareCategoryCount[]>;
    // Count of devices with malware detected in the last 30 days
    malwareDetectedDeviceCount?: number;
    // Count of devices per malware execution state
    malwareExecutionStateSummary?: NullableOption<WindowsMalwareExecutionStateCount[]>;
    // Count of devices per malware
    malwareNameSummary?: NullableOption<WindowsMalwareNameCount[]>;
    // Count of active malware per malware severity
    malwareSeveritySummary?: NullableOption<WindowsMalwareSeverityCount[]>;
    // Count of devices per malware state
    malwareStateSummary?: NullableOption<WindowsMalwareStateCount[]>;
    // Count of devices with malware per windows OS version
    osVersionsSummary?: NullableOption<OsVersionCount[]>;
    // Count of all distinct malwares detected across all devices. Valid values -2147483648 to 2147483647
    totalDistinctMalwareCount?: number;
    // Count of all malware detections across all devices. Valid values -2147483648 to 2147483647
    totalMalwareCount?: number;
}
export interface ChromeOSDeviceProperty {
    // Name of the property
    name?: NullableOption<string>;
    // Whether this property is updatable
    updatable?: boolean;
    // Value of the property
    value?: NullableOption<string>;
    // Type of the value
    valueType?: NullableOption<string>;
}
export interface ConfigurationManagerClientEnabledFeatures {
    // Whether compliance policy is managed by Intune
    compliancePolicy?: boolean;
    // Whether device configuration is managed by Intune
    deviceConfiguration?: boolean;
    // Whether Endpoint Protection is managed by Intune
    endpointProtection?: boolean;
    // Whether inventory is managed by Intune
    inventory?: boolean;
    // Whether modern application is managed by Intune
    modernApps?: boolean;
    // Whether Office application is managed by Intune
    officeApps?: boolean;
    // Whether resource access is managed by Intune
    resourceAccess?: boolean;
    // Whether Windows Update for Business is managed by Intune
    windowsUpdateForBusiness?: boolean;
}
export interface ConfigurationManagerClientHealthState {
    // Error code for failed state.
    errorCode?: number;
    // Datetime for last sync with configuration manager management point.
    lastSyncDateTime?: string;
    /**
     * Current configuration manager client state. Possible values are: unknown, installed, healthy, installFailed,
     * updateFailed, communicationError.
     */
    state?: ConfigurationManagerClientState;
}
export interface ConfigurationManagerClientInformation {
    // Configuration Manager Client Id from SCCM
    clientIdentifier?: NullableOption<string>;
    // Configuration Manager Client blocked status from SCCM
    isBlocked?: boolean;
}
export interface DeviceActionResult {
    // Action name
    actionName?: NullableOption<string>;
    // State of the action. Possible values are: none, pending, canceled, active, done, failed, notSupported.
    actionState?: ActionState;
    // Time the action state was last updated
    lastUpdatedDateTime?: string;
    // Time the action was initiated
    startDateTime?: string;
}
export interface DeviceHealthAttestationState {
    /**
     * TWhen an Attestation Identity Key (AIK) is present on a device, it indicates that the device has an endorsement key
     * (EK) certificate.
     */
    attestationIdentityKey?: NullableOption<string>;
    // On or Off of BitLocker Drive Encryption
    bitLockerStatus?: NullableOption<string>;
    // The security version number of the Boot Application
    bootAppSecurityVersion?: NullableOption<string>;
    // When bootDebugging is enabled, the device is used in development and testing
    bootDebugging?: NullableOption<string>;
    // The security version number of the Boot Application
    bootManagerSecurityVersion?: NullableOption<string>;
    // The version of the Boot Manager
    bootManagerVersion?: NullableOption<string>;
    // The Boot Revision List that was loaded during initial boot on the attested device
    bootRevisionListInfo?: NullableOption<string>;
    // When code integrity is enabled, code execution is restricted to integrity verified code
    codeIntegrity?: NullableOption<string>;
    // The version of the Boot Manager
    codeIntegrityCheckVersion?: NullableOption<string>;
    // The Code Integrity policy that is controlling the security of the boot environment
    codeIntegrityPolicy?: NullableOption<string>;
    // The DHA report version. (Namespace version)
    contentNamespaceUrl?: NullableOption<string>;
    // The HealthAttestation state schema version
    contentVersion?: NullableOption<string>;
    // DEP Policy defines a set of hardware and software technologies that perform additional checks on memory
    dataExcutionPolicy?: NullableOption<string>;
    // The DHA report version. (Namespace version)
    deviceHealthAttestationStatus?: NullableOption<string>;
    // ELAM provides protection for the computers in your network when they start up
    earlyLaunchAntiMalwareDriverProtection?: NullableOption<string>;
    // This attribute indicates if DHA is supported for the device
    healthAttestationSupportedStatus?: NullableOption<string>;
    // This attribute appears if DHA-Service detects an integrity issue
    healthStatusMismatchInfo?: NullableOption<string>;
    // The DateTime when device was evaluated or issued to MDM
    issuedDateTime?: string;
    // The Timestamp of the last update.
    lastUpdateDateTime?: NullableOption<string>;
    // When operatingSystemKernelDebugging is enabled, the device is used in development and testing
    operatingSystemKernelDebugging?: NullableOption<string>;
    // The Operating System Revision List that was loaded during initial boot on the attested device
    operatingSystemRevListInfo?: NullableOption<string>;
    // The measurement that is captured in PCR[0]
    pcr0?: NullableOption<string>;
    // Informational attribute that identifies the HASH algorithm that was used by TPM
    pcrHashAlgorithm?: NullableOption<string>;
    // The number of times a PC device has hibernated or resumed
    resetCount?: number;
    // The number of times a PC device has rebooted
    restartCount?: number;
    // Safe mode is a troubleshooting option for Windows that starts your computer in a limited state
    safeMode?: NullableOption<string>;
    // When Secure Boot is enabled, the core components must have the correct cryptographic signatures
    secureBoot?: NullableOption<string>;
    // Fingerprint of the Custom Secure Boot Configuration Policy
    secureBootConfigurationPolicyFingerPrint?: NullableOption<string>;
    // When test signing is allowed, the device does not enforce signature validation during boot
    testSigning?: NullableOption<string>;
    // The security version number of the Boot Application
    tpmVersion?: NullableOption<string>;
    // VSM is a container that protects high value assets from a compromised kernel
    virtualSecureMode?: NullableOption<string>;
    // Operating system running with limited services that is used to prepare a computer for Windows
    windowsPE?: NullableOption<string>;
}
export interface HardwareInformation {
    // The number of charge cycles the device’s current battery has gone through. Valid values 0 to 2147483647
    batteryChargeCycles?: number;
    // The device’s current battery’s health percentage. Valid values 0 to 100
    batteryHealthPercentage?: number;
    // The serial number of the device’s current battery
    batterySerialNumber?: NullableOption<string>;
    // Cellular technology of the device
    cellularTechnology?: NullableOption<string>;
    /**
     * Returns the fully qualified domain name of the device (if any). If the device is not domain-joined, it returns an empty
     * string.
     */
    deviceFullQualifiedDomainName?: NullableOption<string>;
    /**
     * Local System Authority (LSA) credential guard status. . Possible values are: running, rebootRequired, notLicensed,
     * notConfigured, virtualizationBasedSecurityNotRunning.
     */
    deviceGuardLocalSystemAuthorityCredentialGuardState?: DeviceGuardLocalSystemAuthorityCredentialGuardState;
    /**
     * Virtualization-based security hardware requirement status. Possible values are: meetHardwareRequirements,
     * secureBootRequired, dmaProtectionRequired, hyperVNotSupportedForGuestVM, hyperVNotAvailable.
     */
    deviceGuardVirtualizationBasedSecurityHardwareRequirementState?: DeviceGuardVirtualizationBasedSecurityHardwareRequirementState;
    /**
     * Virtualization-based security status. . Possible values are: running, rebootRequired, require64BitArchitecture,
     * notLicensed, notConfigured, doesNotMeetHardwareRequirements, other.
     */
    deviceGuardVirtualizationBasedSecurityState?: DeviceGuardVirtualizationBasedSecurityState;
    // eSIM identifier
    esimIdentifier?: NullableOption<string>;
    // Free storage space of the device.
    freeStorageSpace?: number;
    // IMEI
    imei?: NullableOption<string>;
    // IPAddressV4
    ipAddressV4?: NullableOption<string>;
    // Encryption status of the device
    isEncrypted?: boolean;
    // Shared iPad
    isSharedDevice?: boolean;
    // Supervised mode of the device
    isSupervised?: boolean;
    // Manufacturer of the device
    manufacturer?: NullableOption<string>;
    // MEID
    meid?: NullableOption<string>;
    // Model of the device
    model?: NullableOption<string>;
    // String that specifies the OS edition.
    operatingSystemEdition?: NullableOption<string>;
    // Operating system language of the device
    operatingSystemLanguage?: NullableOption<string>;
    /**
     * Int that specifies the Windows Operating System ProductType. More details here
     * https://go.microsoft.com/fwlink/?linkid=2126950. Valid values 0 to 2147483647
     */
    operatingSystemProductType?: number;
    // Operating System Build Number on Android device
    osBuildNumber?: NullableOption<string>;
    // Phone number of the device
    phoneNumber?: NullableOption<string>;
    // Serial number.
    serialNumber?: NullableOption<string>;
    // All users on the shared Apple device
    sharedDeviceCachedUsers?: NullableOption<SharedAppleDeviceUser[]>;
    // SubnetAddress
    subnetAddress?: NullableOption<string>;
    // Subscriber carrier of the device
    subscriberCarrier?: NullableOption<string>;
    // Total storage space of the device.
    totalStorageSpace?: number;
    // String that specifies the specification version.
    tpmSpecificationVersion?: NullableOption<string>;
    // WiFi MAC address of the device
    wifiMac?: NullableOption<string>;
}
export interface LoggedOnUser {
    // Date time when user logs on
    lastLogOnDateTime?: string;
    // User id
    userId?: NullableOption<string>;
}
export interface AlternativeSecurityId {
    // For internal use only
    identityProvider?: NullableOption<string>;
    // For internal use only
    key?: NullableOption<number>;
    // For internal use only
    type?: NullableOption<number>;
}
// tslint:disable-next-line: interface-name
export interface IdentitySet {
    // Optional. The application associated with this action.
    application?: NullableOption<Identity>;
    // Optional. The device associated with this action.
    device?: NullableOption<Identity>;
    // Optional. The user associated with this action.
    user?: NullableOption<Identity>;
}
// tslint:disable-next-line: interface-name
export interface ItemBody {
    // The content of the item.
    content?: NullableOption<string>;
    // The type of the content. Possible values are text and html.
    contentType?: NullableOption<BodyType>;
}
export interface PublicError {
    // Represents the error code.
    code?: NullableOption<string>;
    // Details of the error.
    details?: NullableOption<PublicErrorDetail[]>;
    // Details of the inner error.
    innerError?: NullableOption<PublicInnerError>;
    // A non-localized message for the developer.
    message?: NullableOption<string>;
    // The target of the error.
    target?: NullableOption<string>;
}
export interface PublicErrorDetail {
    // The error code.
    code?: NullableOption<string>;
    // The error message.
    message?: NullableOption<string>;
    // The target of the error.
    target?: NullableOption<string>;
}
export interface PublicInnerError {
    // The error code.
    code?: NullableOption<string>;
    // A collection of error details.
    details?: NullableOption<PublicErrorDetail[]>;
    // The error message.
    message?: NullableOption<string>;
    // The target of the error.
    target?: NullableOption<string>;
}
export interface TeamDiscoverySettings {
    // If set to true, the team is visible via search and suggestions from the Teams client.
    showInTeamsSearchAndSuggestions?: NullableOption<boolean>;
}
export interface TeamFunSettings {
    // If set to true, enables users to include custom memes.
    allowCustomMemes?: NullableOption<boolean>;
    // If set to true, enables Giphy use.
    allowGiphy?: NullableOption<boolean>;
    // If set to true, enables users to include stickers and memes.
    allowStickersAndMemes?: NullableOption<boolean>;
    // Giphy content rating. Possible values are: moderate, strict.
    giphyContentRating?: NullableOption<GiphyRatingType>;
}
export interface TeamGuestSettings {
    // If set to true, guests can add and update channels.
    allowCreateUpdateChannels?: NullableOption<boolean>;
    // If set to true, guests can delete channels.
    allowDeleteChannels?: NullableOption<boolean>;
}
export interface TeamMemberSettings {
    // If set to true, members can add and remove apps.
    allowAddRemoveApps?: NullableOption<boolean>;
    // If set to true, members can add and update private channels.
    allowCreatePrivateChannels?: NullableOption<boolean>;
    // If set to true, members can add and update any channels.
    allowCreateUpdateChannels?: NullableOption<boolean>;
    // If set to true, members can add, update, and remove connectors.
    allowCreateUpdateRemoveConnectors?: NullableOption<boolean>;
    // If set to true, members can add, update, and remove tabs.
    allowCreateUpdateRemoveTabs?: NullableOption<boolean>;
    // If set to true, members can delete channels.
    allowDeleteChannels?: NullableOption<boolean>;
}
export interface TeamMessagingSettings {
    // If set to true, @channel mentions are allowed.
    allowChannelMentions?: NullableOption<boolean>;
    // If set to true, owners can delete any message.
    allowOwnerDeleteMessages?: NullableOption<boolean>;
    // If set to true, @team mentions are allowed.
    allowTeamMentions?: NullableOption<boolean>;
    // If set to true, users can delete their messages.
    allowUserDeleteMessages?: NullableOption<boolean>;
    // If set to true, users can edit their messages.
    allowUserEditMessages?: NullableOption<boolean>;
}
export interface ResultInfo {
    // The result code.
    code?: number;
    // The message.
    message?: NullableOption<string>;
    // The result sub-code.
    subcode?: number;
}
export interface AssignedLabel {
    // The display name of the label. Read-only.
    displayName?: NullableOption<string>;
    // The unique identifier of the label.
    labelId?: NullableOption<string>;
}
export interface LicenseProcessingState {
    state?: NullableOption<string>;
}
export interface MembershipRuleProcessingStatus {
    // Detailed error message if dynamic group processing ran into an error. Optional. Read-only.
    errorMessage?: NullableOption<string>;
    // Most recent date and time when membership of a dynamic group was updated. Optional. Read-only.
    lastMembershipUpdated?: NullableOption<string>;
    /**
     * Current status of a dynamic group processing. Possible values are: NotStarted, Running, Succeeded, Failed, and
     * UnknownFutureValue. Required. Read-only.
     */
    status?: NullableOption<MembershipRuleProcessingStatusDetails>;
}
export interface Deleted {
    // Represents the state of the deleted item.
    state?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface Root {}
export interface SharepointIds {
    // The unique identifier (guid) for the item's list in SharePoint.
    listId?: NullableOption<string>;
    // An integer identifier for the item within the containing list.
    listItemId?: NullableOption<string>;
    // The unique identifier (guid) for the item within OneDrive for Business or a SharePoint site.
    listItemUniqueId?: NullableOption<string>;
    // The unique identifier (guid) for the item's site collection (SPSite).
    siteId?: NullableOption<string>;
    // The SharePoint URL for the site that contains the item.
    siteUrl?: NullableOption<string>;
    // The unique identifier (guid) for the tenancy.
    tenantId?: NullableOption<string>;
    // The unique identifier (guid) for the item's site (SPWeb).
    webId?: NullableOption<string>;
}
export interface SiteCollection {
    // The geographic region code for where this site collection resides. Read-only.
    dataLocationCode?: NullableOption<string>;
    // The hostname for the site collection. Read-only.
    hostname?: NullableOption<string>;
    // If present, indicates that this is a root site collection in SharePoint. Read-only.
    root?: NullableOption<Root>;
}
// tslint:disable-next-line: no-empty-interface
export interface ApiAuthenticationConfigurationBase {}
export interface AssignmentOrder {
    /**
     * A list of identityUserFlowAttribute IDs provided to determine the order in which attributes should be collected within
     * a user flow.
     */
    order?: NullableOption<string[]>;
}
export interface BasicAuthentication extends ApiAuthenticationConfigurationBase {
    // The password. It is not returned in the responses.
    password?: NullableOption<string>;
    // The username.
    username?: NullableOption<string>;
}
export interface ClaimsMapping {
    // The claim that provides the display name or full name for the user. It is a required propoerty.
    displayName?: NullableOption<string>;
    // The claim that provides the email address of the user.
    email?: NullableOption<string>;
    // The claim that provides the first name of the user.
    givenName?: NullableOption<string>;
    // The claim that provides the last name of the user.
    surname?: NullableOption<string>;
    // The claim that provides the unique identifier for the signed-in user. It is a required propoerty.
    userId?: NullableOption<string>;
}
export interface ClientCertificateAuthentication extends ApiAuthenticationConfigurationBase {
    // The list of certificates uploaded for this API connector.
    certificateList?: NullableOption<Pkcs12CertificateInformation[]>;
}
export interface Pkcs12CertificateInformation {
    /**
     * Represents whether the certificate is the active certificate to be used for calling the API connector. The active
     * certificate is the most recently uploaded certificate which is not yet expired but whose notBefore time is in the past.
     */
    isActive?: boolean;
    /**
     * The certificate's expiry. This value is a NumericDate as defined in RFC 7519 (A JSON numeric value representing the
     * number of seconds from 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds.)
     */
    notAfter?: number;
    /**
     * The certificate's issue time (not before). This value is a NumericDate as defined in RFC 7519 (A JSON numeric value
     * representing the number of seconds from 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap
     * seconds.)
     */
    notBefore?: number;
    // The certificate thumbprint.
    thumbprint?: NullableOption<string>;
}
export interface Pkcs12Certificate extends ApiAuthenticationConfigurationBase {
    // This is the password for the pfx file. Required. If no password is used, must still provide a value of ''.
    password?: NullableOption<string>;
    /**
     * This is the field for sending pfx content. The value should be a base-64 encoded version of the actual certificate
     * content. Required.
     */
    pkcs12Value?: NullableOption<string>;
}
export interface SelfServiceSignUpAuthenticationFlowConfiguration {
    /**
     * Indicates whether self-service sign-up flow is enabled or disabled. The default value is false. This property is not a
     * key. Required.
     */
    isEnabled?: boolean;
}
export interface TrustFrameworkKey {
    // RSA Key - private exponent. Field cannot be read back.
    d?: NullableOption<string>;
    // RSA Key - first exponent. Field cannot be read back.
    dp?: NullableOption<string>;
    // RSA Key - second exponent. Field cannot be read back.
    dq?: NullableOption<string>;
    // RSA Key - public exponent
    e?: NullableOption<string>;
    /**
     * This value is a NumericDate as defined in RFC 7519 (A JSON numeric value representing the number of seconds from
     * 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds.)
     */
    exp?: NullableOption<number>;
    // Symmetric Key for oct key type. Field cannot be read back.
    k?: NullableOption<string>;
    // The unique identifier for the key.
    kid?: NullableOption<string>;
    /**
     * The kty (key type) parameter identifies the cryptographic algorithm family used with the key, The valid values are rsa,
     * oct.
     */
    kty?: NullableOption<string>;
    // RSA Key - modulus
    n?: NullableOption<string>;
    /**
     * This value is a NumericDate as defined in RFC 7519 (A JSON numeric value representing the number of seconds from
     * 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds.)
     */
    nbf?: NullableOption<number>;
    // RSA Key - first prime. Field cannot be read back.
    p?: NullableOption<string>;
    // RSA Key - second prime. Field cannot be read back.
    q?: NullableOption<string>;
    // RSA Key - Coefficient. Field cannot be read back.
    qi?: NullableOption<string>;
    /**
     * The use (public key use) parameter identifies the intended use of the public key. The use parameter is employed to
     * indicate whether a public key is used for encrypting data or verifying the signature on data. Possible values are: sig
     * (signature), enc (encryption)
     */
    use?: NullableOption<string>;
    // The x5c (X.509 certificate chain) parameter contains a chain of one or more PKIX certificates RFC 5280.
    x5c?: NullableOption<string[]>;
    /**
     * The x5t (X.509 certificate SHA-1 thumbprint) parameter is a base64url-encoded SHA-1 thumbprint (a.k.a. digest) of the
     * DER encoding of an X.509 certificate RFC 5280.
     */
    x5t?: NullableOption<string>;
}
export interface UserAttributeValuesItem {
    // Used to set the value as the default.
    isDefault?: boolean;
    // The display name of the property displayed to the end user in the user flow.
    name?: NullableOption<string>;
    // The value that is set when this item is selected.
    value?: NullableOption<string>;
}
export interface UserFlowApiConnectorConfiguration {
    postAttributeCollection?: NullableOption<IdentityApiConnector>;
    postFederationSignup?: NullableOption<IdentityApiConnector>;
    preTokenIssuance?: NullableOption<IdentityApiConnector>;
}
export interface LabelActionBase {
    name?: NullableOption<string>;
}
export interface MarkContent extends LabelActionBase {
    fontColor?: NullableOption<string>;
    fontSize?: NullableOption<number>;
    text?: NullableOption<string>;
}
export interface AddFooter extends MarkContent {
    alignment?: NullableOption<Alignment>;
    margin?: NullableOption<number>;
}
export interface AddHeader extends MarkContent {
    alignment?: NullableOption<Alignment>;
    margin?: NullableOption<number>;
}
export interface AddWatermark extends MarkContent {
    orientation?: NullableOption<PageOrientation>;
}
export interface AutoLabeling {
    message?: NullableOption<string>;
    sensitiveTypeIds?: NullableOption<string[]>;
}
export interface DlpActionInfo {
    action?: NullableOption<DlpAction>;
}
// tslint:disable-next-line: no-empty-interface
export interface BlockAccessAction extends DlpActionInfo {}
export interface ClassifcationErrorBase {
    code?: NullableOption<string>;
    innerError?: NullableOption<ClassificationInnerError>;
    message?: NullableOption<string>;
    target?: NullableOption<string>;
}
export interface ClassificationInnerError {
    activityId?: NullableOption<string>;
    clientRequestId?: NullableOption<string>;
    code?: NullableOption<string>;
    errorDateTime?: NullableOption<string>;
}
export interface ClassificationAttribute {
    confidence?: NullableOption<number>;
    count?: NullableOption<number>;
}
export interface ClassificationError extends ClassifcationErrorBase {
    details?: NullableOption<ClassifcationErrorBase[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface ContentMetadata {}
export interface ContentProperties {
    extensions?: NullableOption<string[]>;
    lastModifiedBy?: NullableOption<string>;
    lastModifiedDateTime?: NullableOption<string>;
    metadata?: NullableOption<ContentMetadata>;
}
export interface CurrentLabel {
    applicationMode?: NullableOption<ApplicationMode>;
    id?: NullableOption<string>;
}
export interface DetectedSensitiveContentBase {
    confidence?: NullableOption<number>;
    displayName?: NullableOption<string>;
    id?: NullableOption<string>;
    recommendedConfidence?: NullableOption<number>;
    uniqueCount?: NullableOption<number>;
}
export interface DetectedSensitiveContent extends DetectedSensitiveContentBase {
    classificationAttributes?: NullableOption<ClassificationAttribute[]>;
    classificationMethod?: NullableOption<ClassificationMethod>;
    matches?: NullableOption<SensitiveContentLocation[]>;
    scope?: NullableOption<SensitiveTypeScope>;
    sensitiveTypeSource?: NullableOption<SensitiveTypeSource>;
}
export interface SensitiveContentLocation {
    confidence?: NullableOption<number>;
    evidences?: NullableOption<SensitiveContentEvidence[]>;
    idMatch?: NullableOption<string>;
    length?: NullableOption<number>;
    offset?: NullableOption<number>;
}
export interface DetectedSensitiveContentWrapper {
    classification?: NullableOption<DetectedSensitiveContent[]>;
}
export interface DeviceRestrictionAction extends DlpActionInfo {
    message?: NullableOption<string>;
    restrictionAction?: NullableOption<RestrictionAction>;
    triggers?: NullableOption<RestrictionTrigger[]>;
}
export interface DiscoveredSensitiveType {
    classificationAttributes?: NullableOption<ClassificationAttribute[]>;
    confidence?: NullableOption<number>;
    count?: NullableOption<number>;
    id?: string;
}
export interface DlpEvaluatePoliciesRequest {
    evaluationInput?: NullableOption<DlpEvaluationInput>;
    notificationInfo?: NullableOption<DlpNotification>;
    target?: NullableOption<string>;
}
export interface DlpEvaluationInput {
    accessScope?: NullableOption<AccessScope>;
    currentLabel?: NullableOption<CurrentLabel>;
    discoveredSensitiveTypes?: NullableOption<DiscoveredSensitiveType[]>;
}
export interface DlpNotification {
    author?: NullableOption<string>;
}
export interface DlpEvaluationWindowsDevicesInput extends DlpEvaluationInput {
    contentProperties?: NullableOption<ContentProperties>;
    sharedBy?: NullableOption<string>;
}
export interface DlpPoliciesJobResult {
    matchingRules?: NullableOption<MatchingDlpRule[]>;
}
export interface MatchingDlpRule {
    actions?: NullableOption<DlpActionInfo[]>;
    isMostRestrictive?: NullableOption<boolean>;
    policyId?: NullableOption<string>;
    policyName?: NullableOption<string>;
    priority?: NullableOption<number>;
    ruleId?: NullableOption<string>;
    ruleMode?: NullableOption<RuleMode>;
    ruleName?: NullableOption<string>;
}
export interface DlpWindowsDevicesNotification extends DlpNotification {
    contentName?: NullableOption<string>;
    lastModfiedBy?: NullableOption<string>;
}
export interface EncryptContent extends LabelActionBase {
    encryptWith?: NullableOption<EncryptWith>;
}
export interface EncryptWithTemplate extends EncryptContent {
    availableForEncryption?: NullableOption<boolean>;
    templateId?: NullableOption<string>;
}
export interface EncryptWithUserDefinedRights extends EncryptContent {
    allowAdHocPermissions?: NullableOption<boolean>;
    allowMailForwarding?: NullableOption<boolean>;
    decryptionRightsManagementTemplateId?: NullableOption<string>;
}
export interface EvaluateLabelJobResult {
    responsiblePolicy?: NullableOption<ResponsiblePolicy>;
    responsibleSensitiveTypes?: NullableOption<ResponsibleSensitiveType[]>;
    sensitivityLabel?: NullableOption<MatchingLabel>;
}
export interface ResponsiblePolicy {
    id?: NullableOption<string>;
    name?: NullableOption<string>;
}
export interface ResponsibleSensitiveType {
    description?: NullableOption<string>;
    id?: NullableOption<string>;
    name?: NullableOption<string>;
    publisherName?: NullableOption<string>;
    rulePackageId?: NullableOption<string>;
    rulePackageType?: NullableOption<string>;
}
export interface MatchingLabel {
    applicationMode?: NullableOption<ApplicationMode>;
    description?: NullableOption<string>;
    displayName?: NullableOption<string>;
    id?: NullableOption<string>;
    isEndpointProtectionEnabled?: NullableOption<boolean>;
    labelActions?: NullableOption<LabelActionBase[]>;
    name?: NullableOption<string>;
    policyTip?: NullableOption<string>;
    priority?: NullableOption<number>;
    toolTip?: NullableOption<string>;
}
export interface EvaluateLabelJobResultGroup {
    automatic?: NullableOption<EvaluateLabelJobResult>;
    recommended?: NullableOption<EvaluateLabelJobResult>;
}
export interface EvaluateSensitivityLabelsRequest {
    currentLabel?: NullableOption<CurrentLabel>;
    discoveredSensitiveTypes?: NullableOption<DiscoveredSensitiveType[]>;
}
export interface LabelPolicy {
    id?: string;
    name?: NullableOption<string>;
}
export interface LobbyBypassSettings {
    // Specifies whether or not to always let dial-in callers bypass the lobby. Optional.
    isDialInBypassEnabled?: NullableOption<boolean>;
    /**
     * Specifies the type of participants that are automatically admitted into a meeting, bypassing the lobby. Possible values
     * are listed in the following table. Optional.
     */
    scope?: NullableOption<LobbyBypassScope>;
}
export interface MachineLearningDetectedSensitiveContent extends DetectedSensitiveContent {
    matchTolerance?: NullableOption<MlClassificationMatchTolerance>;
    modelVersion?: NullableOption<string>;
}
export interface NotifyUserAction extends DlpActionInfo {
    actionLastModifiedDateTime?: NullableOption<string>;
    emailText?: NullableOption<string>;
    overrideOption?: NullableOption<OverrideOption>;
    policyTip?: NullableOption<string>;
    recipients?: NullableOption<string[]>;
}
export interface ProtectGroup extends LabelActionBase {
    allowEmailFromGuestUsers?: NullableOption<boolean>;
    allowGuestUsers?: NullableOption<boolean>;
    privacy?: NullableOption<GroupPrivacy>;
}
export interface ProtectOnlineMeetingAction extends LabelActionBase {
    allowedForwarders?: NullableOption<OnlineMeetingForwarders>;
    allowedPresenters?: NullableOption<OnlineMeetingPresenters>;
    isCopyToClipboardEnabled?: NullableOption<boolean>;
    isLobbyEnabled?: NullableOption<boolean>;
    lobbyBypassSettings?: NullableOption<LobbyBypassSettings>;
}
export interface ProtectSite extends LabelActionBase {
    accessType?: NullableOption<SiteAccessType>;
    conditionalAccessProtectionLevelId?: NullableOption<string>;
}
export interface SensitiveContentEvidence {
    length?: NullableOption<number>;
    match?: NullableOption<string>;
    offset?: NullableOption<number>;
}
export interface PreAuthorizedApplication {
    // The unique identifier for the application.
    appId?: string;
    // The unique identifier for the oauth2PermissionScopes the application requires.
    permissionIds?: NullableOption<string[]>;
}
export interface ApiServicePrincipal {
    resourceSpecificApplicationPermissions?: ResourceSpecificPermission[];
}
export interface ResourceSpecificPermission {
    description?: NullableOption<string>;
    displayName?: NullableOption<string>;
    id?: string;
    isEnabled?: boolean;
    value?: NullableOption<string>;
}
export interface AppManagementConfiguration {
    // Collection of password restrictions settings to be applied to an application or service principal
    passwordCredentials?: NullableOption<PasswordCredentialConfiguration[]>;
}
export interface PasswordCredentialConfiguration {
    maxLifetime?: NullableOption<string>;
    /**
     * Enforces the policy for an app created on or after the enforcement date. For existing applications, the enforcement
     * date would be back dated. To apply to all applications, enforcement datetime would be null.
     */
    restrictForAppsCreatedAfterDateTime?: NullableOption<string>;
    /**
     * The type of restriction being applied. Possible values are passwordAddition or passwordLifetime. Each value of
     * restrictionType can be used only once per policy.
     */
    restrictionType?: NullableOption<AppCredentialRestrictionType>;
}
export interface AppMetadata {
    data?: NullableOption<AppMetadataEntry[]>;
    version?: number;
}
export interface AppMetadataEntry {
    key?: NullableOption<string>;
    value?: NullableOption<number>;
}
export interface CertificateAuthority {
    // Required. The base64 encoded string representing the public certificate.
    certificate?: number;
    // The URL of the certificate revocation list.
    certificateRevocationListUrl?: NullableOption<string>;
    /**
     * The URL contains the list of all revoked certificates since the last time a full certificate revocaton list was
     * created.
     */
    deltaCertificateRevocationListUrl?: NullableOption<string>;
    /**
     * Required. true if the trusted certificate is a root authority, false if the trusted certificate is an intermediate
     * authority.
     */
    isRootAuthority?: boolean;
    // The issuer of the certificate, calculated from the certificate value. Read-only.
    issuer?: string;
    // The subject key identifier of the certificate, calculated from the certificate value. Read-only.
    issuerSki?: string;
}
// tslint:disable-next-line: no-empty-interface
export interface ComplexExtensionValue {}
export interface DefaultUserRolePermissions {
    // Indicates whether the default user role can create applications.
    allowedToCreateApps?: boolean;
    // Indicates whether the default user role can create security groups.
    allowedToCreateSecurityGroups?: boolean;
    // Indicates whether the default user role can read other users.
    allowedToReadOtherUsers?: boolean;
}
export interface DirectorySizeQuota {
    // Total amount of the directory quota.
    total?: NullableOption<number>;
    // Used amount of the directory quota.
    used?: NullableOption<number>;
}
export interface DomainState {
    /**
     * Timestamp for when the last activity occurred. The value is updated when an operation is scheduled, the asynchronous
     * task starts, and when the operation completes.
     */
    lastActionDateTime?: NullableOption<string>;
    // Type of asynchronous operation. The values can be ForceDelete or Verification
    operation?: NullableOption<string>;
    /**
     * Current status of the operation. Scheduled - Operation has been scheduled but has not started. InProgress - Task has
     * started and is in progress. Failed - Operation has failed.
     */
    status?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface ImplicitGrantSettings {
    // Specifies whether this web application can request an access token using the OAuth 2.0 implicit flow.
    enableAccessTokenIssuance?: NullableOption<boolean>;
    // Specifies whether this web application can request an ID token using the OAuth 2.0 implicit flow.
    enableIdTokenIssuance?: NullableOption<boolean>;
}
// tslint:disable-next-line: interface-name
export interface InstanceResourceAccess {
    permissions?: ResourcePermission[];
    resourceAppId?: string;
}
export interface ResourcePermission {
    type?: string;
    value?: string;
}
export interface LicenseUnitsDetail {
    // The number of units that are enabled for the active subscription of the service SKU.
    enabled?: NullableOption<number>;
    /**
     * The number of units that are suspended because the subscription of the service SKU has been cancelled. The units cannot
     * be assigned but can still be reactivated before they are deleted.
     */
    suspended?: NullableOption<number>;
    /**
     * The number of units that are in warning status. When the subscription of the service SKU has expired, the customer has
     * a grace period to renew their subscription before it is cancelled (moved to a suspended state).
     */
    warning?: NullableOption<number>;
}
export interface LoginPageTextVisibilitySettings {
    hideCannotAccessYourAccount?: NullableOption<boolean>;
    hideForgotMyPassword?: NullableOption<boolean>;
    hidePrivacyAndCookies?: NullableOption<boolean>;
    hideResetItNow?: NullableOption<boolean>;
    hideTermsOfUse?: NullableOption<boolean>;
}
export interface OptionalClaim {
    /**
     * Additional properties of the claim. If a property exists in this collection, it modifies the behavior of the optional
     * claim specified in the name property.
     */
    additionalProperties?: NullableOption<string[]>;
    /**
     * If the value is true, the claim specified by the client is necessary to ensure a smooth authorization experience for
     * the specific task requested by the end user. The default value is false.
     */
    essential?: boolean;
    // The name of the optional claim.
    name?: string;
    /**
     * The source (directory object) of the claim. There are predefined claims and user-defined claims from extension
     * properties. If the source value is null, the claim is a predefined optional claim. If the source value is user, the
     * value in the name property is the extension property from the user object.
     */
    source?: NullableOption<string>;
}
export interface Phone {
    // The phone number.
    number?: NullableOption<string>;
    /**
     * The type of phone number. Possible values are: home, business, mobile, other, assistant, homeFax, businessFax,
     * otherFax, pager, radio.
     */
    type?: NullableOption<PhoneType>;
}
export interface PhysicalOfficeAddress {
    // The city.
    city?: NullableOption<string>;
    // The country or region. It's a free-format string value, for example, 'United States'.
    countryOrRegion?: NullableOption<string>;
    // Office location such as building and office number for an organizational contact.
    officeLocation?: NullableOption<string>;
    // The postal code.
    postalCode?: NullableOption<string>;
    // The state.
    state?: NullableOption<string>;
    // The street.
    street?: NullableOption<string>;
}
export interface PrivacyProfile {
    // A valid smtp email address for the privacy statement contact. Not required.
    contactEmail?: NullableOption<string>;
    /**
     * A valid URL format that begins with http:// or https://. Maximum length is 255 characters. The URL that directs to the
     * company's privacy statement. Not required.
     */
    statementUrl?: NullableOption<string>;
}
export interface RedirectUriSettings {
    index?: NullableOption<number>;
    uri?: NullableOption<string>;
}
export interface ResourceAccess {
    // The unique identifier for one of the oauth2PermissionScopes or appRole instances that the resource application exposes.
    id?: string;
    /**
     * Specifies whether the id property references an oauth2PermissionScopes or an appRole. Possible values are Scope or
     * Role.
     */
    type?: NullableOption<string>;
}
export interface SelfSignedCertificate {
    customKeyIdentifier?: NullableOption<number>;
    displayName?: NullableOption<string>;
    endDateTime?: NullableOption<string>;
    key?: NullableOption<number>;
    keyId?: NullableOption<string>;
    startDateTime?: NullableOption<string>;
    thumbprint?: NullableOption<string>;
    type?: NullableOption<string>;
    usage?: NullableOption<string>;
}
export interface ServicePlanInfo {
    /**
     * 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.
     */
    appliesTo?: NullableOption<string>;
    /**
     * 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.
     */
    provisioningStatus?: NullableOption<string>;
    // The unique identifier of the service plan.
    servicePlanId?: NullableOption<string>;
    // The name of the service plan.
    servicePlanName?: NullableOption<string>;
}
export interface SettingTemplateValue {
    // Default value for the setting. Read-only.
    defaultValue?: NullableOption<string>;
    // Description of the setting. Read-only.
    description?: NullableOption<string>;
    // Name of the setting. Read-only.
    name?: NullableOption<string>;
    // Type of the setting. Read-only.
    type?: NullableOption<string>;
}
export interface SettingValue {
    // Name of the setting (as defined by the directorySettingTemplate).
    name?: NullableOption<string>;
    // Value of the setting.
    value?: NullableOption<string>;
}
export interface VerifiedDomain {
    // For example, 'Email', 'OfficeCommunicationsOnline'.
    capabilities?: NullableOption<string>;
    // true if this is the default domain associated with the tenant; otherwise, false.
    isDefault?: NullableOption<boolean>;
    // true if this is the initial domain associated with the tenant; otherwise, false
    isInitial?: NullableOption<boolean>;
    // The domain name; for example, 'contoso.onmicrosoft.com'
    name?: NullableOption<string>;
    // For example, 'Managed'.
    type?: NullableOption<string>;
}
export interface CertificateConnectorSetting {
    // Certificate expire time
    certExpiryTime?: string;
    // Version of certificate connector
    connectorVersion?: NullableOption<string>;
    // Certificate connector enrollment error
    enrollmentError?: NullableOption<string>;
    // Last time certificate connector connected
    lastConnectorConnectionTime?: string;
    // Version of last uploaded certificate connector
    lastUploadVersion?: number;
    // Certificate connector status
    status?: number;
}
// tslint:disable-next-line: no-empty-interface
export interface EducationAssignmentRecipient {}
// tslint:disable-next-line: no-empty-interface
export interface EducationAssignmentClassRecipient extends EducationAssignmentRecipient {}
export interface EducationAssignmentGrade {
    // User who did the grading.
    gradedBy?: NullableOption<IdentitySet>;
    /**
     * Moment in time when the grade was applied to this submission object. 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 is
     * 2014-01-01T00:00:00Z
     */
    gradedDateTime?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface EducationAssignmentGradeType {}
// tslint:disable-next-line: no-empty-interface
export interface EducationAssignmentGroupRecipient extends EducationAssignmentRecipient {}
export interface EducationAssignmentIndividualRecipient extends EducationAssignmentRecipient {
    // A collection of ids of the recipients.
    recipients?: NullableOption<string[]>;
}
export interface EducationAssignmentPointsGrade extends EducationAssignmentGrade {
    // Number of points a teacher is giving this submission object.
    points?: NullableOption<number>;
}
export interface EducationAssignmentPointsGradeType extends EducationAssignmentGradeType {
    // Max points possible for this assignment.
    maxPoints?: NullableOption<number>;
}
export interface EducationResource {
    // Who created the resource.
    createdBy?: NullableOption<IdentitySet>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    createdDateTime?: NullableOption<string>;
    // Display name of resource.
    displayName?: NullableOption<string>;
    // Who was the last user to modify the resource.
    lastModifiedBy?: NullableOption<IdentitySet>;
    /**
     * Moment in time when the resource was last modified. 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 is 2014-01-01T00:00:00Z
     */
    lastModifiedDateTime?: NullableOption<string>;
}
export interface EducationExcelResource extends EducationResource {
    // Pointer to the Excel file object.
    fileUrl?: NullableOption<string>;
}
export interface EducationFeedback {
    // User who created the feedback.
    feedbackBy?: NullableOption<IdentitySet>;
    /**
     * Moment in time when the feedback was given. 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 is 2014-01-01T00:00:00Z
     */
    feedbackDateTime?: NullableOption<string>;
    // Feedback.
    text?: NullableOption<EducationItemBody>;
}
export interface EducationItemBody {
    content?: NullableOption<string>;
    contentType?: NullableOption<BodyType>;
}
export interface EducationFileResource extends EducationResource {
    // Location on disk of the file resource.
    fileUrl?: NullableOption<string>;
}
export interface EducationLinkResource extends EducationResource {
    // URL to the resource.
    link?: NullableOption<string>;
}
export interface EducationPowerPointResource extends EducationResource {
    // Location of the file on disk.
    fileUrl?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface EducationSubmissionRecipient {}
export interface EducationSubmissionIndividualRecipient extends EducationSubmissionRecipient {
    // User ID of the user to whom the submission is assigned.
    userId?: NullableOption<string>;
}
export interface EducationWordResource extends EducationResource {
    // Location of the file on disk.
    fileUrl?: NullableOption<string>;
}
export interface RubricCriterion {
    // The description of this criterion.
    description?: NullableOption<EducationItemBody>;
}
export interface RubricLevel {
    // The description of this rubric level.
    description?: NullableOption<EducationItemBody>;
    // The name of this rubric level.
    displayName?: NullableOption<string>;
    // Null if this is a no-points rubric; educationAssignmentPointsGradeType if it is a points rubric.
    grading?: NullableOption<EducationAssignmentGradeType>;
    // The ID of this resource.
    levelId?: NullableOption<string>;
}
export interface RubricQuality {
    // The collection of criteria for this rubric quality.
    criteria?: NullableOption<RubricCriterion[]>;
    // The description of this rubric quality.
    description?: NullableOption<EducationItemBody>;
    // The name of this rubric quality.
    displayName?: NullableOption<string>;
    // The ID of this resource.
    qualityId?: NullableOption<string>;
    // If present, a numerical weight for this quality. Weights must add up to 100.
    weight?: NullableOption<number>;
}
export interface RubricQualityFeedbackModel {
    // Specific feedback for one quality of this rubric.
    feedback?: NullableOption<EducationItemBody>;
    // The ID of the rubricQuality that this feedback is related to.
    qualityId?: NullableOption<string>;
}
export interface RubricQualitySelectedColumnModel {
    // ID of the selected level for this quality.
    columnId?: NullableOption<string>;
    // ID of the associated quality.
    qualityId?: NullableOption<string>;
}
export interface EducationCourse {
    // Unique identifier for the course.
    courseNumber?: NullableOption<string>;
    // Description of the course.
    description?: NullableOption<string>;
    // Name of the course.
    displayName?: NullableOption<string>;
    // ID of the course from the syncing system.
    externalId?: NullableOption<string>;
    // Subject of the course.
    subject?: NullableOption<string>;
}
export interface EducationTerm {
    // Display name of the term.
    displayName?: NullableOption<string>;
    // End of the term.
    endDate?: NullableOption<string>;
    // ID of term in the syncing system.
    externalId?: NullableOption<string>;
    // Start of the term.
    startDate?: NullableOption<string>;
}
export interface RelatedContact {
    // Indicates whether the user has been consented to access student data.
    accessConsent?: NullableOption<boolean>;
    // Name of the contact. Required.
    displayName?: string;
    // Email address of the contact.
    emailAddress?: NullableOption<string>;
    // Identity of the contact within Azure Active Directory.
    id?: NullableOption<string>;
    // Mobile phone number of the contact.
    mobilePhone?: NullableOption<string>;
    /**
     * Relationship to the user. Possible values are: parent, relative, aide, doctor, guardian, child, other,
     * unknownFutureValue.
     */
    relationship?: ContactRelationship;
}
export interface EducationOnPremisesInfo {
    // Unique identifier for the user object in Active Directory.
    immutableId?: NullableOption<string>;
}
export interface EducationStudent {
    // Birth date of the student.
    birthDate?: NullableOption<string>;
    // ID of the student in the source system.
    externalId?: NullableOption<string>;
    // Possible values are: female, male, other.
    gender?: NullableOption<EducationGender>;
    // Current grade level of the student.
    grade?: NullableOption<string>;
    // Year the student is graduating from the school.
    graduationYear?: NullableOption<string>;
    // Student Number.
    studentNumber?: NullableOption<string>;
}
export interface EducationTeacher {
    // Id of the Teacher in external source system.
    externalId?: NullableOption<string>;
    // Teacher number.
    teacherNumber?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface EducationSynchronizationDataProvider {}
export interface EducationCsvDataProvider extends EducationSynchronizationDataProvider {
    // Optional customizations to be applied to the synchronization profile.
    customizations?: NullableOption<EducationSynchronizationCustomizations>;
}
// tslint:disable-next-line: no-empty-interface
export interface EducationSynchronizationCustomizationsBase {}
export interface EducationSynchronizationCustomizations extends EducationSynchronizationCustomizationsBase {
    // Customizations for School entities.
    school?: NullableOption<EducationSynchronizationCustomization>;
    // Customizations for Section entities.
    section?: NullableOption<EducationSynchronizationCustomization>;
    // Customizations for Student entities.
    student?: NullableOption<EducationSynchronizationCustomization>;
    // Customizations for Student Enrollments.
    studentEnrollment?: NullableOption<EducationSynchronizationCustomization>;
    // Customizations for Teacher entities.
    teacher?: NullableOption<EducationSynchronizationCustomization>;
    // Customizations for Teacher Rosters.
    teacherRoster?: NullableOption<EducationSynchronizationCustomization>;
}
export interface EducationFileSynchronizationVerificationMessage {
    // Detailed information about the message type.
    description?: NullableOption<string>;
    fileName?: NullableOption<string>;
    // Type of the message. Possible values are: error, warning, information.
    type?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface EducationIdentitySynchronizationConfiguration {}
export interface EducationIdentityCreationConfiguration extends EducationIdentitySynchronizationConfiguration {
    userDomains?: EducationIdentityDomain[];
}
export interface EducationIdentityDomain {
    // The user role type to assign to the license. Possible values are: student, teacher, faculty.
    appliesTo?: EducationUserRole;
    // Represents the domain for the user account.
    name?: string;
}
export interface EducationIdentityMatchingConfiguration extends EducationIdentitySynchronizationConfiguration {
    // Mapping between the user account and the options to use to uniquely identify the user to update.
    matchingOptions?: EducationIdentityMatchingOptions[];
}
export interface EducationIdentityMatchingOptions {
    // The user role type to assign to the license. Possible values are: student, teacher, faculty.
    appliesTo?: EducationUserRole;
    // The name of the source property, which should be a field name in the source data. This property is case-sensitive.
    sourcePropertyName?: string;
    /**
     * The domain to suffix with the source property to match on the target. If provided as null, the source property will be
     * used to match with the target property.
     */
    targetDomain?: NullableOption<string>;
    // The name of the target property, which should be a valid property in Azure AD. This property is case-sensitive.
    targetPropertyName?: string;
}
export interface EducationOneRosterApiDataProvider extends EducationSynchronizationDataProvider {
    connectionSettings?: EducationSynchronizationConnectionSettings;
    connectionUrl?: string;
    customizations?: NullableOption<EducationSynchronizationCustomizations>;
    providerName?: NullableOption<string>;
    schoolsIds?: NullableOption<string[]>;
    termIds?: NullableOption<string[]>;
}
export interface EducationSynchronizationConnectionSettings {
    clientId?: string;
    clientSecret?: NullableOption<string>;
}
export interface EducationPowerSchoolDataProvider extends EducationSynchronizationDataProvider {
    // Indicates whether the source has multiple identifiers for a single student or teacher.
    allowTeachersInMultipleSchools?: NullableOption<boolean>;
    // The client ID used to connect to PowerSchool.
    clientId?: string;
    // The client secret to authenticate the connection to the PowerSchool instance.
    clientSecret?: NullableOption<string>;
    // The connection URL to the PowerSchool instance.
    connectionUrl?: string;
    // Optional customization to be applied to the synchronization profile.
    customizations?: NullableOption<EducationSynchronizationCustomizations>;
    // The list of schools to sync.
    schoolsIds?: NullableOption<string[]>;
    // The school year to sync.
    schoolYear?: NullableOption<string>;
}
export interface EducationSynchronizationCustomization {
    // Indicates whether the display name of the resource can be overwritten by the sync.
    allowDisplayNameUpdate?: NullableOption<boolean>;
    // Indicates whether synchronization of the parent entity is deferred to a later date.
    isSyncDeferred?: NullableOption<boolean>;
    /**
     * The collection of property names to sync. If set to null, all properties will be synchronized. Does not apply to
     * Student Enrollments or Teacher Rosters
     */
    optionalPropertiesToSync?: NullableOption<string[]>;
    /**
     * The date that the synchronization should start. This value should be set to a future date. If set to null, the resource
     * will be synchronized when the profile setup completes. Only applies to Student Enrollments
     */
    synchronizationStartDate?: NullableOption<string>;
}
export interface EducationSynchronizationLicenseAssignment {
    // The user role type to assign to license. Possible values are: student, teacher, faculty.
    appliesTo?: NullableOption<EducationUserRole>;
    // Represents the SKU identifiers of the licenses to assign.
    skuIds?: NullableOption<string[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface EducationSynchronizationOAuth1ConnectionSettings extends EducationSynchronizationConnectionSettings {}
export interface EducationSynchronizationOAuth2ClientCredentialsConnectionSettings extends EducationSynchronizationConnectionSettings {
    // The scope of the access request (see RFC6749).
    scope?: NullableOption<string>;
    // The URL to get access tokens for the data provider.
    tokenUrl?: string;
}
export interface ContentClassification {
    confidence?: NullableOption<number>;
    matches?: NullableOption<MatchLocation[]>;
    sensitiveTypeId?: NullableOption<string>;
    uniqueCount?: NullableOption<number>;
}
export interface MatchLocation {
    length?: NullableOption<number>;
    offset?: NullableOption<number>;
}
export interface DataStoreField {
    name?: NullableOption<string>;
    searchable?: NullableOption<boolean>;
    unique?: NullableOption<boolean>;
}
export interface ExactDataMatchStoreColumn {
    ignoredDelimiters?: NullableOption<string[]>;
    isCaseInsensitive?: NullableOption<boolean>;
    isSearchable?: NullableOption<boolean>;
    name?: NullableOption<string>;
}
export interface ExactMatchClassificationRequest {
    contentClassifications?: NullableOption<ContentClassification[]>;
    sensitiveTypeIds?: NullableOption<string[]>;
    text?: NullableOption<string>;
    timeoutInMs?: NullableOption<number>;
}
export interface ExactMatchClassificationResult {
    classification?: NullableOption<ExactMatchDetectedSensitiveContent[]>;
    errors?: NullableOption<ClassificationError[]>;
}
export interface ExactMatchDetectedSensitiveContent extends DetectedSensitiveContentBase {
    matches?: NullableOption<SensitiveContentLocation[]>;
}
export interface WorkbookFilterCriteria {
    color?: NullableOption<string>;
    criterion1?: NullableOption<string>;
    criterion2?: NullableOption<string>;
    dynamicCriteria?: string;
    filterOn?: string;
    icon?: NullableOption<WorkbookIcon>;
    operator?: string;
    values?: NullableOption<any>;
}
export interface WorkbookIcon {
    // Represents the index of the icon in the given set.
    index?: number;
    /**
     * Represents the set that the icon is part of. Possible values are: Invalid, ThreeArrows, ThreeArrowsGray, ThreeFlags,
     * ThreeTrafficLights1, ThreeTrafficLights2, ThreeSigns, ThreeSymbols, ThreeSymbols2, FourArrows, FourArrowsGray,
     * FourRedToBlack, FourRating, FourTrafficLights, FiveArrows, FiveArrowsGray, FiveRating, FiveQuarters, ThreeStars,
     * ThreeTriangles, FiveBoxes.
     */
    set?: string;
}
export interface WorkbookFilterDatetime {
    date?: NullableOption<string>;
    specificity?: string;
}
export interface WorkbookOperationError {
    // The error code.
    code?: NullableOption<string>;
    innerError?: NullableOption<WorkbookOperationError>;
    // The error message.
    message?: NullableOption<string>;
}
export interface WorkbookRangeReference {
    address?: NullableOption<string>;
}
export interface WorkbookSessionInfo {
    // Id of the workbook session.
    id?: NullableOption<string>;
    // true for persistent session. false for non-persistent session (view mode)
    persistChanges?: NullableOption<boolean>;
}
export interface WorkbookSortField {
    // Represents whether the sorting is done in an ascending fashion.
    ascending?: boolean;
    // Represents the color that is the target of the condition if the sorting is on font or cell color.
    color?: NullableOption<string>;
    // Represents additional sorting options for this field. Possible values are: Normal, TextAsNumber.
    dataOption?: string;
    // Represents the icon that is the target of the condition if the sorting is on the cell's icon.
    icon?: NullableOption<WorkbookIcon>;
    /**
     * 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).
     */
    key?: number;
    // Represents the type of sorting of this condition. Possible values are: Value, CellColor, FontColor, Icon.
    sortOn?: string;
}
export interface WorkbookWorksheetProtectionOptions {
    // Represents the worksheet protection option of allowing using auto filter feature.
    allowAutoFilter?: boolean;
    // Represents the worksheet protection option of allowing deleting columns.
    allowDeleteColumns?: boolean;
    // Represents the worksheet protection option of allowing deleting rows.
    allowDeleteRows?: boolean;
    // Represents the worksheet protection option of allowing formatting cells.
    allowFormatCells?: boolean;
    // Represents the worksheet protection option of allowing formatting columns.
    allowFormatColumns?: boolean;
    // Represents the worksheet protection option of allowing formatting rows.
    allowFormatRows?: boolean;
    // Represents the worksheet protection option of allowing inserting columns.
    allowInsertColumns?: boolean;
    // Represents the worksheet protection option of allowing inserting hyperlinks.
    allowInsertHyperlinks?: boolean;
    // Represents the worksheet protection option of allowing inserting rows.
    allowInsertRows?: boolean;
    // Represents the worksheet protection option of allowing using pivot table feature.
    allowPivotTables?: boolean;
    // Represents the worksheet protection option of allowing using sort feature.
    allowSort?: boolean;
}
export interface Quota {
    // Total space consumed by files in the recycle bin, in bytes. Read-only.
    deleted?: NullableOption<number>;
    // Total space remaining before reaching the quota limit, in bytes. Read-only.
    remaining?: NullableOption<number>;
    // Enumeration value that indicates the state of the storage space. Read-only.
    state?: NullableOption<string>;
    // Information about the drive's storage quota plans. Only in Personal OneDrive.
    storagePlanInformation?: NullableOption<StoragePlanInformation>;
    // Total allowed storage space, in bytes. Read-only.
    total?: NullableOption<number>;
    // Total space used, in bytes. Read-only.
    used?: NullableOption<number>;
}
// tslint:disable-next-line: no-empty-interface
export interface SystemFacet {}
export interface Audio {
    // The title of the album for this audio file.
    album?: NullableOption<string>;
    // The artist named on the album for the audio file.
    albumArtist?: NullableOption<string>;
    // The performing artist for the audio file.
    artist?: NullableOption<string>;
    // Bitrate expressed in kbps.
    bitrate?: NullableOption<number>;
    // The name of the composer of the audio file.
    composers?: NullableOption<string>;
    // Copyright information for the audio file.
    copyright?: NullableOption<string>;
    // The number of the disc this audio file came from.
    disc?: NullableOption<number>;
    // The total number of discs in this album.
    discCount?: NullableOption<number>;
    // Duration of the audio file, expressed in milliseconds
    duration?: NullableOption<number>;
    // The genre of this audio file.
    genre?: NullableOption<string>;
    // Indicates if the file is protected with digital rights management.
    hasDrm?: NullableOption<boolean>;
    // Indicates if the file is encoded with a variable bitrate.
    isVariableBitrate?: NullableOption<boolean>;
    // The title of the audio file.
    title?: NullableOption<string>;
    // The number of the track on the original disc for this audio file.
    track?: NullableOption<number>;
    // The total number of tracks on the original disc for this audio file.
    trackCount?: NullableOption<number>;
    // The year the audio file was recorded.
    year?: NullableOption<number>;
}
export interface Bundle {
    // If the bundle is an [album][], then the album property is included
    album?: NullableOption<Album>;
    // Number of children contained immediately within this container.
    childCount?: NullableOption<number>;
}
export interface File {
    // Hashes of the file's binary content, if available. Read-only.
    hashes?: NullableOption<Hashes>;
    /**
     * 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.
     */
    mimeType?: NullableOption<string>;
    processingMetadata?: NullableOption<boolean>;
}
export interface FileSystemInfo {
    // The UTC date and time the file was created on a client.
    createdDateTime?: NullableOption<string>;
    // The UTC date and time the file was last accessed. Available for the recent file list only.
    lastAccessedDateTime?: NullableOption<string>;
    // The UTC date and time the file was last modified on a client.
    lastModifiedDateTime?: NullableOption<string>;
}
export interface Folder {
    // Number of children contained immediately within this container.
    childCount?: NullableOption<number>;
    // A collection of properties defining the recommended view for the folder.
    view?: NullableOption<FolderView>;
}
// tslint:disable-next-line: interface-name
export interface Image {
    // Optional. Height of the image, in pixels. Read-only.
    height?: NullableOption<number>;
    // Optional. Width of the image, in pixels. Read-only.
    width?: NullableOption<number>;
}
export interface Media {
    /**
     * If a file has a transcript, this setting controls if the closed captions / transcription for the media file should be
     * shown to people during viewing. Read-Write.
     */
    isTranscriptionShown?: NullableOption<boolean>;
    // Information about the source of media. Read-only.
    mediaSource?: NullableOption<MediaSource>;
}
export interface Package {
    /**
     * 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?: NullableOption<string>;
}
export interface PendingOperations {
    // A property that indicates that an operation that might update the binary content of a file is pending completion.
    pendingContentUpdate?: NullableOption<PendingContentUpdate>;
}
export interface Photo {
    // Camera manufacturer. Read-only.
    cameraMake?: NullableOption<string>;
    // Camera model. Read-only.
    cameraModel?: NullableOption<string>;
    // The denominator for the exposure time fraction from the camera. Read-only.
    exposureDenominator?: NullableOption<number>;
    // The numerator for the exposure time fraction from the camera. Read-only.
    exposureNumerator?: NullableOption<number>;
    // The F-stop value from the camera. Read-only.
    fNumber?: NullableOption<number>;
    // The focal length from the camera. Read-only.
    focalLength?: NullableOption<number>;
    // The ISO value from the camera. Read-only.
    iso?: NullableOption<number>;
    // The orientation value from the camera. Writable on OneDrive Personal.
    orientation?: NullableOption<number>;
    // The date and time the photo was taken in UTC time. Read-only.
    takenDateTime?: NullableOption<string>;
}
export interface PublicationFacet {
    // The state of publication for this document. Either published or checkout. Read-only.
    level?: NullableOption<string>;
    // The unique identifier for the version that is visible to the current caller. Read-only.
    versionId?: NullableOption<string>;
}
export interface RemoteItem {
    // Identity of the user, device, and application which created the item. Read-only.
    createdBy?: NullableOption<IdentitySet>;
    // Date and time of item creation. Read-only.
    createdDateTime?: NullableOption<string>;
    // Indicates that the remote item is a file. Read-only.
    file?: NullableOption<File>;
    // Information about the remote item from the local file system. Read-only.
    fileSystemInfo?: NullableOption<FileSystemInfo>;
    // Indicates that the remote item is a folder. Read-only.
    folder?: NullableOption<Folder>;
    // Unique identifier for the remote item in its drive. Read-only.
    id?: NullableOption<string>;
    // Image metadata, if the item is an image. Read-only.
    image?: NullableOption<Image>;
    // Identity of the user, device, and application which last modified the item. Read-only.
    lastModifiedBy?: NullableOption<IdentitySet>;
    // Date and time the item was last modified. Read-only.
    lastModifiedDateTime?: NullableOption<string>;
    // Optional. Filename of the remote item. Read-only.
    name?: NullableOption<string>;
    /**
     * If present, indicates that this item is a package instead of a folder or file. Packages are treated like files in some
     * contexts and folders in others. Read-only.
     */
    package?: NullableOption<Package>;
    // Properties of the parent of the remote item. Read-only.
    parentReference?: NullableOption<ItemReference>;
    /**
     * Indicates that the item has been shared with others and provides information about the shared state of the item.
     * Read-only.
     */
    shared?: NullableOption<Shared>;
    /**
     * Provides interop between items in OneDrive for Business and SharePoint with the full set of item identifiers.
     * Read-only.
     */
    sharepointIds?: NullableOption<SharepointIds>;
    // Size of the remote item. Read-only.
    size?: NullableOption<number>;
    // If the current item is also available as a special folder, this facet is returned. Read-only.
    specialFolder?: NullableOption<SpecialFolder>;
    // Video metadata, if the item is a video. Read-only.
    video?: NullableOption<Video>;
    // DAV compatible URL for the item.
    webDavUrl?: NullableOption<string>;
    // URL that displays the resource in the browser. Read-only.
    webUrl?: NullableOption<string>;
}
export interface SearchResult {
    /**
     * 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.
     */
    onClickTelemetryUrl?: NullableOption<string>;
}
export interface Shared {
    // The identity of the owner of the shared item. Read-only.
    owner?: NullableOption<IdentitySet>;
    // Indicates the scope of how the item is shared: anonymous, organization, or users. Read-only.
    scope?: NullableOption<string>;
    // The identity of the user who shared the item. Read-only.
    sharedBy?: NullableOption<IdentitySet>;
    // The UTC date and time when the item was shared. Read-only.
    sharedDateTime?: NullableOption<string>;
}
export interface DriveItemSource {
    // Enumeration value that indicates the source application where the file was created.
    application?: NullableOption<DriveItemSourceApplication>;
    // The external identifier for the drive item from the source.
    externalId?: NullableOption<string>;
}
export interface SpecialFolder {
    // The unique identifier for this item in the /drive/special collection
    name?: NullableOption<string>;
}
export interface Video {
    // Number of audio bits per sample.
    audioBitsPerSample?: NullableOption<number>;
    // Number of audio channels.
    audioChannels?: NullableOption<number>;
    // Name of the audio format (AAC, MP3, etc.).
    audioFormat?: NullableOption<string>;
    // Number of audio samples per second.
    audioSamplesPerSecond?: NullableOption<number>;
    // Bit rate of the video in bits per second.
    bitrate?: NullableOption<number>;
    // Duration of the file in milliseconds.
    duration?: NullableOption<number>;
    // 'Four character code' name of the video format.
    fourCC?: NullableOption<string>;
    // Frame rate of the video.
    frameRate?: NullableOption<number>;
    // Height of the video, in pixels.
    height?: NullableOption<number>;
    // Width of the video, in pixels.
    width?: NullableOption<number>;
}
export interface ListInfo {
    // If true, indicates that content types are enabled for this list.
    contentTypesEnabled?: NullableOption<boolean>;
    // If true, indicates that the list is not normally visible in the SharePoint user experience.
    hidden?: NullableOption<boolean>;
    /**
     * 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.
     */
    template?: NullableOption<string>;
}
export interface AttendeeAvailability {
    /**
     * The email address and type of attendee - whether it's a person or a resource, and whether required or optional if it's
     * a person.
     */
    attendee?: NullableOption<AttendeeBase>;
    // The availability status of the attendee. Possible values are: free, tentative, busy, oof, workingElsewhere, unknown.
    availability?: NullableOption<FreeBusyStatus>;
}
export interface AttendeeBase extends Recipient {
    /**
     * The type of attendee. Possible values are: required, optional, resource. Currently if the attendee is a person,
     * findMeetingTimes always considers the person is of the Required type.
     */
    type?: NullableOption<AttendeeType>;
}
export interface LocationConstraint {
    /**
     * The client requests the service to include in the response a meeting location for the meeting. If this is true and all
     * the resources are busy, findMeetingTimes will not return any meeting time suggestions. If this is false and all the
     * resources are busy, findMeetingTimes would still look for meeting times without locations.
     */
    isRequired?: NullableOption<boolean>;
    // Constraint information for one or more locations that the client requests for the meeting.
    locations?: NullableOption<LocationConstraintItem[]>;
    // The client requests the service to suggest one or more meeting locations.
    suggestLocation?: NullableOption<boolean>;
}
export interface LocationConstraintItem extends Location {
    /**
     * If set to true and the specified resource is busy, findMeetingTimes looks for another resource that is free. If set to
     * false and the specified resource is busy, findMeetingTimes returns the resource best ranked in the user's cache without
     * checking if it's free. Default is true.
     */
    resolveAvailability?: NullableOption<boolean>;
}
export interface MeetingTimeSuggestion {
    // An array that shows the availability status of each attendee for this meeting suggestion.
    attendeeAvailability?: NullableOption<AttendeeAvailability[]>;
    // A percentage that represents the likelhood of all the attendees attending.
    confidence?: NullableOption<number>;
    // An array that specifies the name and geographic location of each meeting location for this meeting suggestion.
    locations?: NullableOption<Location[]>;
    // A time period suggested for the meeting.
    meetingTimeSlot?: NullableOption<TimeSlot>;
    /**
     * Order of meeting time suggestions sorted by their computed confidence value from high to low, then by chronology if
     * there are suggestions with the same confidence.
     */
    order?: NullableOption<number>;
    /**
     * Availability of the meeting organizer for this meeting suggestion. Possible values are: free, tentative, busy, oof,
     * workingElsewhere, unknown.
     */
    organizerAvailability?: NullableOption<FreeBusyStatus>;
    // Reason for suggesting the meeting time.
    suggestionReason?: NullableOption<string>;
}
export interface MeetingTimeSuggestionsResult {
    /**
     * A reason for not returning any meeting suggestions. Possible values are: attendeesUnavailable,
     * attendeesUnavailableOrUnknown, locationsUnavailable, organizerUnavailable, or unknown. This property is an empty string
     * if the meetingTimeSuggestions property does include any meeting suggestions.
     */
    emptySuggestionsReason?: NullableOption<string>;
    // An array of meeting suggestions.
    meetingTimeSuggestions?: NullableOption<MeetingTimeSuggestion[]>;
}
export interface TimeConstraint {
    // The nature of the activity, optional. Possible values are: work, personal, unrestricted, or unknown.
    activityDomain?: NullableOption<ActivityDomain>;
    timeSlots?: NullableOption<TimeSlot[]>;
}
export interface AttachmentItem {
    // The type of attachment. Possible values are: file, item, reference. Required.
    attachmentType?: NullableOption<AttachmentType>;
    // The nature of the data in the attachment. Optional.
    contentType?: NullableOption<string>;
    // true if the attachment is an inline attachment; otherwise, false. Optional.
    isInline?: NullableOption<boolean>;
    /**
     * The display name of the attachment. This can be a descriptive string and does not have to be the actual file name.
     * Required.
     */
    name?: NullableOption<string>;
    // The length of the attachment in bytes. Required.
    size?: NullableOption<number>;
}
export interface Attendee extends AttendeeBase {
    /**
     * An alternate date/time proposed by the attendee for a meeting request to start and end. If the attendee hasn't proposed
     * another time, then this property is not included in a response of a GET event.
     */
    proposedNewTime?: NullableOption<TimeSlot>;
    // The attendee's response (none, accepted, declined, etc.) for the event and date-time that the response was sent.
    status?: NullableOption<ResponseStatus>;
}
export interface ResponseStatus {
    // The response type. Possible values are: None, Organizer, TentativelyAccepted, Accepted, Declined, NotResponded.
    response?: NullableOption<ResponseType>;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    time?: NullableOption<string>;
}
export interface AutomaticRepliesMailTips {
    // The automatic reply message.
    message?: NullableOption<string>;
    // The language that the automatic reply message is in.
    messageLanguage?: NullableOption<LocaleInfo>;
    // The date and time that automatic replies are set to end.
    scheduledEndTime?: NullableOption<DateTimeTimeZone>;
    // The date and time that automatic replies are set to begin.
    scheduledStartTime?: NullableOption<DateTimeTimeZone>;
}
export interface LocaleInfo {
    // A name representing the user's locale in natural language, for example, 'English (United States)'.
    displayName?: NullableOption<string>;
    /**
     * 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.
     */
    locale?: NullableOption<string>;
}
export interface AutomaticRepliesSetting {
    /**
     * The set of audience external to the signed-in user's organization who will receive the ExternalReplyMessage, if Status
     * is AlwaysEnabled or Scheduled. Possible values are: none, contactsOnly, all.
     */
    externalAudience?: NullableOption<ExternalAudienceScope>;
    // The automatic reply to send to the specified external audience, if Status is AlwaysEnabled or Scheduled.
    externalReplyMessage?: NullableOption<string>;
    /**
     * The automatic reply to send to the audience internal to the signed-in user's organization, if Status is AlwaysEnabled
     * or Scheduled.
     */
    internalReplyMessage?: NullableOption<string>;
    // The date and time that automatic replies are set to end, if Status is set to Scheduled.
    scheduledEndDateTime?: NullableOption<DateTimeTimeZone>;
    // The date and time that automatic replies are set to begin, if Status is set to Scheduled.
    scheduledStartDateTime?: NullableOption<DateTimeTimeZone>;
    // Configurations status for automatic replies. Possible values are: disabled, alwaysEnabled, scheduled.
    status?: NullableOption<AutomaticRepliesStatus>;
}
export interface CalendarSharingMessageAction {
    action?: NullableOption<CalendarSharingAction>;
    actionType?: NullableOption<CalendarSharingActionType>;
    importance?: NullableOption<CalendarSharingActionImportance>;
}
export interface ConvertIdResult {
    /**
     * An error object indicating the reason for the conversion failure. This value is not present if the conversion
     * succeeded.
     */
    errorDetails?: NullableOption<GenericError>;
    // The identifier that was converted. This value is the original, un-converted identifier.
    sourceId?: NullableOption<string>;
    // The converted identifier. This value is not present if the conversion failed.
    targetId?: NullableOption<string>;
}
export interface GenericError {
    // The error code.
    code?: NullableOption<string>;
    // The error message.
    message?: NullableOption<string>;
}
export interface TimeZoneBase {
    /**
     * 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.
     */
    name?: NullableOption<string>;
}
export interface CustomTimeZone extends TimeZoneBase {
    /**
     * The time offset of the time zone from Coordinated Universal Time (UTC). This value is in minutes. Time zones that are
     * ahead of UTC have a positive offset; time zones that are behind UTC have a negative offset.
     */
    bias?: NullableOption<number>;
    // Specifies when the time zone switches from standard time to daylight saving time.
    daylightOffset?: NullableOption<DaylightTimeZoneOffset>;
    // Specifies when the time zone switches from daylight saving time to standard time.
    standardOffset?: NullableOption<StandardTimeZoneOffset>;
}
export interface StandardTimeZoneOffset {
    // Represents the nth occurrence of the day of week that the transition from daylight saving time to standard time occurs.
    dayOccurrence?: NullableOption<number>;
    // Represents the day of the week when the transition from daylight saving time to standard time.
    dayOfWeek?: NullableOption<DayOfWeek>;
    // Represents the month of the year when the transition from daylight saving time to standard time occurs.
    month?: NullableOption<number>;
    // Represents the time of day when the transition from daylight saving time to standard time occurs.
    time?: NullableOption<string>;
    /**
     * Represents how frequently in terms of years the change from daylight saving time to standard time occurs. For example,
     * a value of 0 means every year.
     */
    year?: NullableOption<number>;
}
export interface DaylightTimeZoneOffset extends StandardTimeZoneOffset {
    // The time offset from Coordinated Universal Time (UTC) for daylight saving time. This value is in minutes.
    daylightBias?: NullableOption<number>;
}
export interface FollowupFlag {
    // The date and time that the follow-up was finished.
    completedDateTime?: NullableOption<DateTimeTimeZone>;
    /**
     * The date and time that the follow up is to be finished. Note: To set the due date, you must also specify the
     * startDateTime; otherwise, you will get a 400 Bad Request response.
     */
    dueDateTime?: NullableOption<DateTimeTimeZone>;
    // The status for follow-up for an item. Possible values are notFlagged, complete, and flagged.
    flagStatus?: NullableOption<FollowupFlagStatus>;
    // The date and time that the follow-up is to begin.
    startDateTime?: NullableOption<DateTimeTimeZone>;
}
export interface FreeBusyError {
    // Describes the error.
    message?: NullableOption<string>;
    // The response code from querying for the availability of the user, distribution list, or resource.
    responseCode?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface InternetMessageHeader {
    // Represents the key in a key-value pair.
    name?: NullableOption<string>;
    // The value in a key-value pair.
    value?: NullableOption<string>;
}
export interface UserPurpose {
    /**
     * Represents the user's recipient or mailbox type in Exchange Online. Possible values are: unknown, user, linked, shared,
     * room, equipment, and others. See the next section for more information.
     */
    value?: NullableOption<MailboxRecipientType>;
}
export interface WorkingHours {
    // The days of the week on which the user works.
    daysOfWeek?: NullableOption<DayOfWeek[]>;
    // The time of the day that the user stops working.
    endTime?: NullableOption<string>;
    // The time of the day that the user starts working.
    startTime?: NullableOption<string>;
    // The time zone to which the working hours apply.
    timeZone?: NullableOption<TimeZoneBase>;
}
export interface MailTips {
    // Mail tips for automatic reply if it has been set up by the recipient.
    automaticReplies?: NullableOption<AutomaticRepliesMailTips>;
    // A custom mail tip that can be set on the recipient's mailbox.
    customMailTip?: NullableOption<string>;
    /**
     * Whether the recipient's mailbox is restricted, for example, accepting messages from only a predefined list of senders,
     * rejecting messages from a predefined list of senders, or accepting messages from only authenticated senders.
     */
    deliveryRestricted?: NullableOption<boolean>;
    // The email address of the recipient to get mailtips for.
    emailAddress?: NullableOption<EmailAddress>;
    // Errors that occur during the getMailTips action.
    error?: NullableOption<MailTipsError>;
    // The number of external members if the recipient is a distribution list.
    externalMemberCount?: NullableOption<number>;
    /**
     * Whether sending messages to the recipient requires approval. For example, if the recipient is a large distribution list
     * and a moderator has been set up to approve messages sent to that distribution list, or if sending messages to a
     * recipient requires approval of the recipient's manager.
     */
    isModerated?: NullableOption<boolean>;
    // The mailbox full status of the recipient.
    mailboxFull?: NullableOption<boolean>;
    // The maximum message size that has been configured for the recipient's organization or mailbox.
    maxMessageSize?: NullableOption<number>;
    /**
     * The scope of the recipient. Possible values are: none, internal, external, externalPartner, externalNonParther. For
     * example, an administrator can set another organization to be its 'partner'. The scope is useful if an administrator
     * wants certain mailtips to be accessible to certain scopes. It's also useful to senders to inform them that their
     * message may leave the organization, helping them make the correct decisions about wording, tone and content.
     */
    recipientScope?: NullableOption<RecipientScopeType>;
    // Recipients suggested based on previous contexts where they appear in the same message.
    recipientSuggestions?: NullableOption<Recipient[]>;
    // The number of members if the recipient is a distribution list.
    totalMemberCount?: NullableOption<number>;
}
export interface MailTipsError {
    // The error code.
    code?: NullableOption<string>;
    // The error message.
    message?: NullableOption<string>;
}
export interface MentionsPreview {
    // True if the signed-in user is mentioned in the parent resource instance. Read-only. Supports filter.
    isMentioned?: NullableOption<boolean>;
}
export interface MessageRuleActions {
    // A list of categories to be assigned to a message.
    assignCategories?: NullableOption<string[]>;
    // The ID of a folder that a message is to be copied to.
    copyToFolder?: NullableOption<string>;
    // Indicates whether a message should be moved to the Deleted Items folder.
    delete?: NullableOption<boolean>;
    // The email addresses of the recipients to which a message should be forwarded as an attachment.
    forwardAsAttachmentTo?: NullableOption<Recipient[]>;
    // The email addresses of the recipients to which a message should be forwarded.
    forwardTo?: NullableOption<Recipient[]>;
    // Indicates whether a message should be marked as read.
    markAsRead?: NullableOption<boolean>;
    // Sets the importance of the message, which can be: low, normal, high.
    markImportance?: NullableOption<Importance>;
    // The ID of the folder that a message will be moved to.
    moveToFolder?: NullableOption<string>;
    // Indicates whether a message should be permanently deleted and not saved to the Deleted Items folder.
    permanentDelete?: NullableOption<boolean>;
    // The email address to which a message should be redirected.
    redirectTo?: NullableOption<Recipient[]>;
    // Indicates whether subsequent rules should be evaluated.
    stopProcessingRules?: NullableOption<boolean>;
}
export interface MessageRulePredicates {
    /**
     * Represents the strings that should appear in the body of an incoming message in order for the condition or exception to
     * apply.
     */
    bodyContains?: NullableOption<string[]>;
    /**
     * Represents the strings that should appear in the body or subject of an incoming message in order for the condition or
     * exception to apply.
     */
    bodyOrSubjectContains?: NullableOption<string[]>;
    /**
     * Represents the categories that an incoming message should be labeled with in order for the condition or exception to
     * apply.
     */
    categories?: NullableOption<string[]>;
    // Represents the specific sender email addresses of an incoming message in order for the condition or exception to apply.
    fromAddresses?: NullableOption<Recipient[]>;
    // Indicates whether an incoming message must have attachments in order for the condition or exception to apply.
    hasAttachments?: NullableOption<boolean>;
    /**
     * Represents the strings that appear in the headers of an incoming message in order for the condition or exception to
     * apply.
     */
    headerContains?: NullableOption<string[]>;
    /**
     * The importance that is stamped on an incoming message in order for the condition or exception to apply: low, normal,
     * high.
     */
    importance?: NullableOption<Importance>;
    // Indicates whether an incoming message must be an approval request in order for the condition or exception to apply.
    isApprovalRequest?: NullableOption<boolean>;
    // Indicates whether an incoming message must be automatically forwarded in order for the condition or exception to apply.
    isAutomaticForward?: NullableOption<boolean>;
    // Indicates whether an incoming message must be an auto reply in order for the condition or exception to apply.
    isAutomaticReply?: NullableOption<boolean>;
    // Indicates whether an incoming message must be encrypted in order for the condition or exception to apply.
    isEncrypted?: NullableOption<boolean>;
    // Indicates whether an incoming message must be a meeting request in order for the condition or exception to apply.
    isMeetingRequest?: NullableOption<boolean>;
    // Indicates whether an incoming message must be a meeting response in order for the condition or exception to apply.
    isMeetingResponse?: NullableOption<boolean>;
    // Indicates whether an incoming message must be a non-delivery report in order for the condition or exception to apply.
    isNonDeliveryReport?: NullableOption<boolean>;
    /**
     * Indicates whether an incoming message must be permission controlled (RMS-protected) in order for the condition or
     * exception to apply.
     */
    isPermissionControlled?: NullableOption<boolean>;
    // Indicates whether an incoming message must be a read receipt in order for the condition or exception to apply.
    isReadReceipt?: NullableOption<boolean>;
    // Indicates whether an incoming message must be S/MIME-signed in order for the condition or exception to apply.
    isSigned?: NullableOption<boolean>;
    // Indicates whether an incoming message must be a voice mail in order for the condition or exception to apply.
    isVoicemail?: NullableOption<boolean>;
    /**
     * Represents the flag-for-action value that appears on an incoming message in order for the condition or exception to
     * apply. The possible values are: any, call, doNotForward, followUp, fyi, forward, noResponseNecessary, read, reply,
     * replyToAll, review.
     */
    messageActionFlag?: NullableOption<MessageActionFlag>;
    /**
     * 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.
     */
    notSentToMe?: NullableOption<boolean>;
    /**
     * 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.
     */
    recipientContains?: NullableOption<string[]>;
    /**
     * Represents the strings that appear in the from property of an incoming message in order for the condition or exception
     * to apply.
     */
    senderContains?: NullableOption<string[]>;
    /**
     * Represents the sensitivity level that must be stamped on an incoming message in order for the condition or exception to
     * apply. The possible values are: normal, personal, private, confidential.
     */
    sensitivity?: NullableOption<Sensitivity>;
    /**
     * 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.
     */
    sentCcMe?: NullableOption<boolean>;
    /**
     * 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.
     */
    sentOnlyToMe?: NullableOption<boolean>;
    /**
     * Represents the email addresses that an incoming message must have been sent to in order for the condition or exception
     * to apply.
     */
    sentToAddresses?: NullableOption<Recipient[]>;
    /**
     * 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.
     */
    sentToMe?: NullableOption<boolean>;
    /**
     * 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.
     */
    sentToOrCcMe?: NullableOption<boolean>;
    /**
     * Represents the strings that appear in the subject of an incoming message in order for the condition or exception to
     * apply.
     */
    subjectContains?: NullableOption<string[]>;
    /**
     * Represents the minimum and maximum sizes (in kilobytes) that an incoming message must fall in between in order for the
     * condition or exception to apply.
     */
    withinSizeRange?: NullableOption<SizeRange>;
}
export interface SizeRange {
    // The maximum size (in kilobytes) that an incoming message must have in order for a condition or exception to apply.
    maximumSize?: NullableOption<number>;
    // The minimum size (in kilobytes) that an incoming message must have in order for a condition or exception to apply.
    minimumSize?: NullableOption<number>;
}
export interface OnlineMeetingInfo {
    // The ID of the conference.
    conferenceId?: NullableOption<string>;
    /**
     * 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.
     */
    joinUrl?: NullableOption<string>;
    // All of the phone numbers associated with this conference.
    phones?: NullableOption<Phone[]>;
    // The pre-formatted quickdial for this call.
    quickDial?: NullableOption<string>;
    // The toll free numbers that can be used to join the conference.
    tollFreeNumbers?: NullableOption<string[]>;
    // The toll number that can be used to join the conference.
    tollNumber?: NullableOption<string>;
}
export interface PatternedRecurrence {
    // The frequency of an event. Do not specify for a one-time access review.
    pattern?: NullableOption<RecurrencePattern>;
    // The duration of an event.
    range?: NullableOption<RecurrenceRange>;
}
export interface RecurrencePattern {
    // The day of the month on which the event occurs. Required if type is absoluteMonthly or absoluteYearly.
    dayOfMonth?: number;
    /**
     * A collection of the days of the week on which the event occurs. 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.
     */
    daysOfWeek?: NullableOption<DayOfWeek[]>;
    /**
     * The first day of the week. Possible values are: sunday, monday, tuesday, wednesday, thursday, friday, saturday. Default
     * is sunday. Required if type is weekly.
     */
    firstDayOfWeek?: NullableOption<DayOfWeek>;
    /**
     * Specifies on which instance of the allowed days specified in daysOfsWeek the event occurs, counted from the first
     * instance in the month. Possible values are: first, second, third, fourth, last. Default is first. Optional and used if
     * type is relativeMonthly or relativeYearly.
     */
    index?: NullableOption<WeekIndex>;
    /**
     * The number of units between occurrences, where units can be in days, weeks, months, or years, depending on the type.
     * Required.
     */
    interval?: number;
    // The month in which the event occurs. This is a number from 1 to 12.
    month?: number;
    // The recurrence pattern type: daily, weekly, absoluteMonthly, relativeMonthly, absoluteYearly, relativeYearly. Required.
    type?: NullableOption<RecurrencePatternType>;
}
export interface RecurrenceRange {
    /**
     * 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.
     */
    endDate?: NullableOption<string>;
    // The number of times to repeat the event. Required and must be positive if type is numbered.
    numberOfOccurrences?: number;
    // Time zone for the startDate and endDate properties. Optional. If not specified, the time zone of the event is used.
    recurrenceTimeZone?: NullableOption<string>;
    /**
     * 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.
     */
    startDate?: NullableOption<string>;
    // The recurrence range. Possible values are: endDate, noEnd, numbered. Required.
    type?: NullableOption<RecurrenceRangeType>;
}
export interface PersonDataSource {
    // The type of data source.
    type?: NullableOption<string>;
}
export interface RankedEmailAddress {
    // The email address.
    address?: NullableOption<string>;
    /**
     * The rank of the email address. A rank is used as a sort key, in relation to the other returned results. A higher rank
     * value corresponds to a more relevant result. Relevance is determined by communication, collaboration, and business
     * relationship signals.
     */
    rank?: NullableOption<number>;
}
export interface Reminder {
    /**
     * Identifies the version of the reminder. Every time the reminder is changed, changeKey changes as well. This allows
     * Exchange to apply changes to the correct version of the object.
     */
    changeKey?: NullableOption<string>;
    // The date, time and time zone that the event ends.
    eventEndTime?: NullableOption<DateTimeTimeZone>;
    // The unique ID of the event. Read only.
    eventId?: NullableOption<string>;
    // The location of the event.
    eventLocation?: NullableOption<Location>;
    // The date, time, and time zone that the event starts.
    eventStartTime?: NullableOption<DateTimeTimeZone>;
    // The text of the event's subject line.
    eventSubject?: NullableOption<string>;
    /**
     * The URL to open the event in Outlook on the web.The event will open in the browser if you are logged in to your mailbox
     * via Outlook on the web. You will be prompted to login if you are not already logged in with the browser.This URL cannot
     * be accessed from within an iFrame.
     */
    eventWebLink?: NullableOption<string>;
    // The date, time, and time zone that the reminder is set to occur.
    reminderFireTime?: NullableOption<DateTimeTimeZone>;
}
export interface ScheduleInformation {
    /**
     * Represents a merged view of availability of all the items in scheduleItems. The view consists of time slots.
     * Availability during each time slot is indicated with: 0= free, 1= tentative, 2= busy, 3= out of office, 4= working
     * elsewhere.
     */
    availabilityView?: NullableOption<string>;
    // Error information from attempting to get the availability of the user, distribution list, or resource.
    error?: NullableOption<FreeBusyError>;
    // An SMTP address of the user, distribution list, or resource, identifying an instance of scheduleInformation.
    scheduleId?: NullableOption<string>;
    // Contains the items that describe the availability of the user or resource.
    scheduleItems?: NullableOption<ScheduleItem[]>;
    /**
     * The days of the week and hours in a specific time zone that the user works. These are set as part of the user's
     * mailboxSettings.
     */
    workingHours?: NullableOption<WorkingHours>;
}
export interface ScheduleItem {
    // The date, time, and time zone that the corresponding event ends.
    end?: NullableOption<DateTimeTimeZone>;
    // The sensitivity of the corresponding event. True if the event is marked private, false otherwise. Optional.
    isPrivate?: NullableOption<boolean>;
    // The location where the corresponding event is held or attended from. Optional.
    location?: NullableOption<string>;
    // The date, time, and time zone that the corresponding event starts.
    start?: NullableOption<DateTimeTimeZone>;
    /**
     * The availability status of the user or resource during the corresponding event. The possible values are: free,
     * tentative, busy, oof, workingElsewhere, unknown.
     */
    status?: NullableOption<FreeBusyStatus>;
    // The corresponding event's subject line. Optional.
    subject?: NullableOption<string>;
}
export interface TimeZoneInformation {
    // An identifier for the time zone.
    alias?: NullableOption<string>;
    // A display string that represents the time zone.
    displayName?: NullableOption<string>;
}
export interface TypedEmailAddress extends EmailAddress {
    /**
     * To specify a custom type of email address, set type to other, and assign otherLabel to a custom string. For example,
     * you may use a specific email address for your volunteer activities. Set type to other, and set otherLabel to a custom
     * string such as Volunteer work.
     */
    otherLabel?: NullableOption<string>;
    /**
     * The type of email address. Possible values are: unknown, work, personal, main, other. The default value is unknown,
     * which means address has not been set as a specific type.
     */
    type?: NullableOption<EmailType>;
}
export interface UploadSession {
    /**
     * The date and time in UTC that the upload session will expire. The complete file must be uploaded before this expiration
     * time is reached.
     */
    expirationDateTime?: NullableOption<string>;
    /**
     * When uploading files to document libraries, this is a collection of byte ranges that the server is missing for the
     * file. These ranges are zero-indexed and of the format, '{start}-{end}' (e.g. '0-26' to indicate the first 27 bytes of
     * the file). When uploading files as Outlook attachments, instead of a collection of ranges, this property always
     * indicates a single value '{start}', the location in the file where the next upload should begin.
     */
    nextExpectedRanges?: NullableOption<string[]>;
    // The URL endpoint that accepts PUT requests for byte ranges of the file.
    uploadUrl?: NullableOption<string>;
}
export interface Website {
    // The URL of the website.
    address?: NullableOption<string>;
    // The display name of the web site.
    displayName?: NullableOption<string>;
    // Possible values are: other, home, work, blog, profile.
    type?: NullableOption<WebsiteType>;
}
// tslint:disable-next-line: no-empty-interface
export interface AccessAction {}
export interface Album {
    // Unique identifier of the [driveItem][] that is the cover of the album.
    coverImageItemId?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface BooleanColumn {}
export interface CalculatedColumn {
    // For dateTime output types, the format of the value. Must be one of dateOnly or dateTime.
    format?: NullableOption<string>;
    // The formula used to compute the value for this column.
    formula?: NullableOption<string>;
    // The output type used to format values in this column. Must be one of boolean, currency, dateTime, number, or text.
    outputType?: NullableOption<string>;
}
export interface ChoiceColumn {
    // If true, allows custom values that aren't in the configured choices.
    allowTextEntry?: NullableOption<boolean>;
    // The list of values available for this column.
    choices?: NullableOption<string[]>;
    // How the choices are to be presented in the UX. Must be one of checkBoxes, dropDownMenu, or radioButtons
    displayAs?: NullableOption<string>;
}
export interface ColumnValidation {
    // Default BCP 47 language tag for the description.
    defaultLanguage?: NullableOption<string>;
    /**
     * Localized messages that explain what is needed for this column's value to be considered valid. User will be prompted
     * with this message if validation fails.
     */
    descriptions?: NullableOption<DisplayNameLocalization[]>;
    // The formula to validate column value. For examples, see Examples of common formulas in lists
    formula?: NullableOption<string>;
}
export interface DisplayNameLocalization {
    /**
     * If present, the value of this field contains the displayName string that has been set for the language present in the
     * languageTag field.
     */
    displayName?: NullableOption<string>;
    // Provides the language culture-code and friendly name of the language that the displayName field has been provided in.
    languageTag?: NullableOption<string>;
}
export interface CommentAction {
    // If true, this activity was a reply to an existing comment thread.
    isReply?: NullableOption<boolean>;
    // The identity of the user who started the comment thread.
    parentAuthor?: NullableOption<IdentitySet>;
    // The identities of the users participating in this comment thread.
    participants?: NullableOption<IdentitySet[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface ContentApprovalStatusColumn {}
export interface ContentTypeInfo {
    // The id of the content type.
    id?: NullableOption<string>;
    // The name of the content type.
    name?: NullableOption<string>;
}
export interface ContentTypeOrder {
    // Whether this is the default Content Type
    default?: NullableOption<boolean>;
    // Specifies the position in which the Content Type appears in the selection UI.
    position?: NullableOption<number>;
}
// tslint:disable-next-line: no-empty-interface
export interface CreateAction {}
export interface CurrencyColumn {
    // Specifies the locale from which to infer the currency symbol.
    locale?: NullableOption<string>;
}
export interface DateTimeColumn {
    /**
     * 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.
     */
    displayAs?: NullableOption<string>;
    // Indicates whether the value should be presented as a date only or a date and time. Must be one of dateOnly or dateTime
    format?: NullableOption<string>;
}
export interface DefaultColumnValue {
    // The formula used to compute the default value for this column.
    formula?: NullableOption<string>;
    // The direct value to use as the default value for this column.
    value?: NullableOption<string>;
}
export interface DeleteAction {
    // The name of the item that was deleted.
    name?: NullableOption<string>;
    // File or Folder, depending on the type of the deleted item.
    objectType?: NullableOption<string>;
}
export interface DocumentSet {
    // Content types allowed in document set.
    allowedContentTypes?: NullableOption<ContentTypeInfo[]>;
    // Default contents of document set.
    defaultContents?: NullableOption<DocumentSetContent[]>;
    // Specifies whether to push welcome page changes to inherited content types.
    propagateWelcomePageChanges?: NullableOption<boolean>;
    // Add the name of the Document Set to each file name.
    shouldPrefixNameToFile?: NullableOption<boolean>;
    // Welcome page absolute URL.
    welcomePageUrl?: NullableOption<string>;
    sharedColumns?: NullableOption<ColumnDefinition[]>;
    welcomePageColumns?: NullableOption<ColumnDefinition[]>;
}
export interface DocumentSetContent {
    // Content type information of the file.
    contentType?: NullableOption<ContentTypeInfo>;
    // Name of the file in resource folder that should be added as a default content or a template in the document set
    fileName?: NullableOption<string>;
    // Folder name in which the file will be placed when a new document set is created in the library.
    folderName?: NullableOption<string>;
}
export interface DriveItemUploadableProperties {
    // Provides a user-visible description of the item. Read-write. Only on OneDrive Personal.
    description?: NullableOption<string>;
    // Provides an expected file size to perform a quota check prior to upload. Only on OneDrive Personal.
    fileSize?: NullableOption<number>;
    // File system information on client. Read-write.
    fileSystemInfo?: NullableOption<FileSystemInfo>;
    // The name of the item (filename and extension). Read-write.
    name?: NullableOption<string>;
}
export interface DriveRecipient {
    // The alias of the domain object, for cases where an email address is unavailable (e.g. security groups).
    alias?: NullableOption<string>;
    // The email address for the recipient, if the recipient has an associated email address.
    email?: NullableOption<string>;
    // The unique identifier for the recipient in the directory.
    objectId?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface EditAction {}
export interface Hashes {
    // The CRC32 value of the file (if available). Read-only.
    crc32Hash?: NullableOption<string>;
    /**
     * A proprietary hash of the file that can be used to determine if the contents of the file have changed (if available).
     * Read-only.
     */
    quickXorHash?: NullableOption<string>;
    // SHA1 hash for the contents of the file (if available). Read-only.
    sha1Hash?: NullableOption<string>;
    // SHA256 hash for the contents of the file (if available). Read-only.
    sha256Hash?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface FlexSchemaContainer {}
export interface FolderView {
    // The method by which the folder should be sorted.
    sortBy?: NullableOption<string>;
    // If true, indicates that items should be sorted in descending order. Otherwise, items should be sorted ascending.
    sortOrder?: NullableOption<string>;
    // The type of view that should be used to represent the folder.
    viewType?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface GeolocationColumn {}
export interface HyperlinkOrPictureColumn {
    // Specifies whether the display format used for URL columns is an image or a hyperlink.
    isPicture?: NullableOption<boolean>;
}
// tslint:disable-next-line: interface-name
export interface IncompleteData {
    // The service does not have source data before the specified time.
    missingDataBeforeDateTime?: NullableOption<string>;
    // Some data was not recorded due to excessive activity.
    wasThrottled?: NullableOption<boolean>;
}
// tslint:disable-next-line: interface-name
export interface ItemActionSet {
    // A comment was added to the item.
    comment?: NullableOption<CommentAction>;
    // An item was created.
    create?: NullableOption<CreateAction>;
    // An item was deleted.
    delete?: NullableOption<DeleteAction>;
    // An item was edited.
    edit?: NullableOption<EditAction>;
    // A user was mentioned in the item.
    mention?: NullableOption<MentionAction>;
    // An item was moved.
    move?: NullableOption<MoveAction>;
    // An item was renamed.
    rename?: NullableOption<RenameAction>;
    // An item was restored.
    restore?: NullableOption<RestoreAction>;
    // An item was shared.
    share?: NullableOption<ShareAction>;
    // An item was versioned.
    version?: NullableOption<VersionAction>;
}
export interface MentionAction {
    // The identities of the users mentioned in this action.
    mentionees?: NullableOption<IdentitySet[]>;
}
export interface MoveAction {
    // The name of the location the item was moved from.
    from?: NullableOption<string>;
    // The name of the location the item was moved to.
    to?: NullableOption<string>;
}
export interface RenameAction {
    // The new name of the item.
    newName?: NullableOption<string>;
    // The previous name of the item.
    oldName?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface RestoreAction {}
export interface ShareAction {
    // The identities the item was shared with in this action.
    recipients?: NullableOption<IdentitySet[]>;
}
export interface VersionAction {
    // The name of the new version that was created by this action.
    newVersion?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface ItemActionStat {
    // The number of times the action took place. Read-only.
    actionCount?: NullableOption<number>;
    // The number of distinct actors that performed the action. Read-only.
    actorCount?: NullableOption<number>;
}
// tslint:disable-next-line: interface-name
export interface ItemActivityTimeSet {
    lastRecordedDateTime?: NullableOption<string>;
    // When the activity was observed to take place.
    observedDateTime?: NullableOption<string>;
    // When the observation was recorded on the service.
    recordedDateTime?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface ItemPreviewInfo {
    getUrl?: NullableOption<string>;
    postParameters?: NullableOption<string>;
    postUrl?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface ItemReference {
    // Unique identifier of the drive instance that contains the item. Read-only.
    driveId?: NullableOption<string>;
    // Identifies the type of drive. See [drive][] resource for values.
    driveType?: NullableOption<string>;
    // Unique identifier of the item in the drive. Read-only.
    id?: NullableOption<string>;
    // The name of the item being referenced. Read-only.
    name?: NullableOption<string>;
    // Path that can be used to navigate to the item. Read-only.
    path?: NullableOption<string>;
    // A unique identifier for a shared resource that can be accessed via the [Shares][] API.
    shareId?: NullableOption<string>;
    // Returns identifiers useful for SharePoint REST compatibility. Read-only.
    sharepointIds?: NullableOption<SharepointIds>;
    /**
     * For OneDrive for Business and SharePoint, this property represents the ID of the site that contains the parent document
     * library of the driveItem resource. The value is the same as the id property of that [site][] resource. It is an opaque
     * string that consists of three identifiers of the site. For OneDrive, this property is not populated.
     */
    siteId?: NullableOption<string>;
}
export interface LookupColumn {
    // Indicates whether multiple values can be selected from the source.
    allowMultipleValues?: NullableOption<boolean>;
    // Indicates whether values in the column should be able to exceed the standard limit of 255 characters.
    allowUnlimitedLength?: NullableOption<boolean>;
    // The name of the lookup source column.
    columnName?: NullableOption<string>;
    // The unique identifier of the lookup source list.
    listId?: NullableOption<string>;
    /**
     * 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.
     */
    primaryLookupColumnId?: NullableOption<string>;
}
export interface MediaSource {
    // Enumeration value that indicates the media content category.
    contentCategory?: NullableOption<MediaSourceContentCategory>;
}
export interface NumberColumn {
    // How many decimal places to display. See below for information about the possible values.
    decimalPlaces?: NullableOption<string>;
    // How the value should be presented in the UX. Must be one of number or percentage. If unspecified, treated as number.
    displayAs?: NullableOption<string>;
    // The maximum permitted value.
    maximum?: NullableOption<number>;
    // The minimum permitted value.
    minimum?: NullableOption<number>;
}
export interface PendingContentUpdate {
    // Date and time the pending binary operation was queued in UTC time. Read-only.
    queuedDateTime?: NullableOption<string>;
}
export interface PersonOrGroupColumn {
    // Indicates whether multiple values can be selected from the source.
    allowMultipleSelection?: NullableOption<boolean>;
    // Whether to allow selection of people only, or people and groups. Must be one of peopleAndGroups or peopleOnly.
    chooseFromType?: NullableOption<string>;
    // How to display the information about the person or group chosen. See below.
    displayAs?: NullableOption<string>;
}
export interface StoragePlanInformation {
    // Indicates if there are higher storage quota plans available. Read-only.
    upgradeAvailable?: NullableOption<boolean>;
}
export interface SharingInvitation {
    // The email address provided for the recipient of the sharing invitation. Read-only.
    email?: NullableOption<string>;
    /**
     * Provides information about who sent the invitation that created this permission, if that information is available.
     * Read-only.
     */
    invitedBy?: NullableOption<IdentitySet>;
    redeemedBy?: NullableOption<string>;
    // If true the recipient of the invitation needs to sign in in order to access the shared item. Read-only.
    signInRequired?: NullableOption<boolean>;
}
export interface SharingLink {
    // The app the link is associated with.
    application?: NullableOption<Identity>;
    configuratorUrl?: NullableOption<string>;
    /**
     * 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.
     */
    preventsDownload?: NullableOption<boolean>;
    /**
     * 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.
     */
    scope?: NullableOption<string>;
    // The type of the link created.
    type?: NullableOption<string>;
    /**
     * For embed links, this property contains the HTML code for an &amp;lt;iframe&amp;gt; element that will embed the item in
     * a webpage.
     */
    webHtml?: NullableOption<string>;
    // A URL that opens the item in the browser on the OneDrive website.
    webUrl?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface SitePageData {}
export interface TermColumn {
    // Specifies whether the column will allow more than one value
    allowMultipleValues?: NullableOption<boolean>;
    // Specifies whether to display the entire term path or only the term label.
    showFullyQualifiedName?: NullableOption<boolean>;
}
export interface TextColumn {
    // Whether to allow multiple lines of text.
    allowMultipleLines?: NullableOption<boolean>;
    // Whether updates to this column should replace existing text, or append to it.
    appendChangesToExistingText?: NullableOption<boolean>;
    // The size of the text box.
    linesForEditing?: NullableOption<number>;
    // The maximum number of characters for the value.
    maxLength?: NullableOption<number>;
    // The type of text being stored. Must be one of plain or richText
    textType?: NullableOption<string>;
}
export interface Thumbnail {
    // The content stream for the thumbnail.
    content?: NullableOption<any>;
    // The height of the thumbnail, in pixels.
    height?: NullableOption<number>;
    /**
     * The unique identifier of the item that provided the thumbnail. This is only available when a folder thumbnail is
     * requested.
     */
    sourceItemId?: NullableOption<string>;
    // The URL used to fetch the thumbnail content.
    url?: NullableOption<string>;
    // The width of the thumbnail, in pixels.
    width?: NullableOption<number>;
}
// tslint:disable-next-line: no-empty-interface
export interface ThumbnailColumn {}
export interface WebPart {
    // The required properties for the webPart (varies by webPart)
    data?: NullableOption<SitePageData>;
    // A unique identifier specifying the webPart type. Read-only.
    type?: NullableOption<string>;
}
export interface ExtensionSchemaProperty {
    // The name of the strongly typed property defined as part of a schema extension.
    name?: NullableOption<string>;
    /**
     * The type of the property that is defined as part of a schema extension. Allowed values are Binary, Boolean, DateTime,
     * Integer or String. See the table below for more details.
     */
    type?: NullableOption<string>;
}
export interface HybridAgentUpdaterConfiguration {
    /**
     * Indicates if updater configuration will be skipped and the agent will receive an update when the next version of the
     * agent is available.
     */
    allowUpdateConfigurationOverride?: boolean;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    deferUpdateDateTime?: NullableOption<string>;
    updateWindow?: NullableOption<UpdateWindow>;
}
export interface UpdateWindow {
    // End of a time window during which agents can receive updates
    updateWindowEndTime?: NullableOption<string>;
    // Start of a time window during which agents can receive updates
    updateWindowStartTime?: NullableOption<string>;
}
export interface KerberosSignOnSettings {
    /**
     * The Internal Application SPN of the application server. This SPN needs to be in the list of services to which the
     * connector can present delegated credentials.
     */
    kerberosServicePrincipalName?: NullableOption<string>;
    /**
     * The Delegated Login Identity for the connector to use on behalf of your users. For more information, see Working with
     * different on-premises and cloud identities . Possible values are: userPrincipalName, onPremisesUserPrincipalName,
     * userPrincipalUsername, onPremisesUserPrincipalUsername, onPremisesSAMAccountName.
     */
    kerberosSignOnMappingAttributeType?: NullableOption<KerberosSignOnMappingAttributeType>;
}
export interface OnPremisesPublishingSingleSignOn {
    // The Kerberos Constrained Delegation settings for applications that use Integrated Window Authentication.
    kerberosSignOnSettings?: NullableOption<KerberosSignOnSettings>;
    /**
     * The preferred single-sign on mode for the application. Possible values are: none, onPremisesKerberos,
     * aadHeaderBased,pingHeaderBased.
     */
    singleSignOnMode?: NullableOption<SingleSignOnMode>;
}
export interface VerifiedCustomDomainCertificatesMetadata {
    /**
     * The expiry date of the custom domain certificate. 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 is 2014-01-01T00:00:00Z.
     */
    expiryDate?: NullableOption<string>;
    /**
     * The issue date of the custom domain. 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 is 2014-01-01T00:00:00Z.
     */
    issueDate?: NullableOption<string>;
    // The issuer name of the custom domain certificate.
    issuerName?: NullableOption<string>;
    // The subject name of the custom domain certificate.
    subjectName?: NullableOption<string>;
    // The thumbprint associated with the custom domain certificate.
    thumbprint?: NullableOption<string>;
}
export interface EvaluateDynamicMembershipResult {
    /**
     * If a group ID is provided, the value is the membership rule for the group. If a group ID is not provided, the value is
     * the membership rule that was provided as a parameter. For more information, see Dynamic membership rules for groups in
     * Azure Active Directory.
     */
    membershipRule?: NullableOption<string>;
    // Provides a detailed anaylsis of the membership evaluation result.
    membershipRuleEvaluationDetails?: NullableOption<ExpressionEvaluationDetails>;
    /**
     * The value is true if the user or device is a member of the group. The value can also be true if a membership rule was
     * provided and the user or device passes the rule evaluation; otherwise false.
     */
    membershipRuleEvaluationResult?: boolean;
}
export interface ExpressionEvaluationDetails {
    // Represents expression which has been evaluated.
    expression?: NullableOption<string>;
    // Represents the details of the evaluation of the expression.
    expressionEvaluationDetails?: NullableOption<ExpressionEvaluationDetails[]>;
    // Represents the value of the result of the current expression.
    expressionResult?: boolean;
    // Defines the name of the property and the value of that property.
    propertyToEvaluate?: NullableOption<PropertyToEvaluate>;
}
export interface PropertyToEvaluate {
    // Provides the property name.
    propertyName?: NullableOption<string>;
    // Provides the property value.
    propertyValue?: NullableOption<string>;
}
export interface MembershipRuleEvaluationDetails {
    membershipRuleEvaluationDetails?: NullableOption<ExpressionEvaluationDetails>;
}
export interface AttributeDefinition {
    /**
     * true if the attribute should be used as the anchor for the object. Anchor attributes must have a unique value
     * identifying an object, and must be immutable. Default is false. One, and only one, of the object's attributes must be
     * designated as the anchor to support synchronization.
     */
    anchor?: boolean;
    apiExpressions?: NullableOption<StringKeyStringValuePair[]>;
    /**
     * true if value of this attribute should be treated as case-sensitive. This setting affects how the synchronization
     * engine detects changes for the attribute.
     */
    caseExact?: boolean;
    defaultValue?: NullableOption<string>;
    // 'true' to allow null values for attributes.
    flowNullValues?: boolean;
    // Additional extension properties. Unless mentioned explicitly, metadata values should not be changed.
    metadata?: NullableOption<MetadataEntry[]>;
    // true if an attribute can have multiple values. Default is false.
    multivalued?: boolean;
    // An attribute's mutability. Possible values are: ReadWrite, ReadOnly, Immutable, WriteOnly. Default is ReadWrite.
    mutability?: Mutability;
    // Name of the attribute. Must be unique within the object definition. Not nullable.
    name?: NullableOption<string>;
    /**
     * For attributes with reference type, lists referenced objects (for example, the manager attribute would list User as the
     * referenced object).
     */
    referencedObjects?: NullableOption<ReferencedObject[]>;
    /**
     * true if attribute is required. Object can not be created if any of the required attributes are missing. If during
     * synchronization, the required attribute has no value, the default value will be used. If default the value was not set,
     * synchronization will record an error.
     */
    required?: boolean;
    // Attribute value type. Possible values are: String, Integer, Reference, Binary, Boolean,DateTime. Default is String.
    type?: AttributeType;
}
export interface StringKeyStringValuePair {
    // Key.
    key?: NullableOption<string>;
    // Value.
    value?: NullableOption<string>;
}
export interface MetadataEntry {
    // Name of the metadata property.
    key?: NullableOption<string>;
    // Value of the metadata property.
    value?: NullableOption<string>;
}
export interface ReferencedObject {
    // Name of the referenced object. Must match one of the objects in the directory definition.
    referencedObjectName?: NullableOption<string>;
    // Currently not supported. Name of the property in the referenced object, the value for which is used as the reference.
    referencedProperty?: NullableOption<string>;
}
export interface AttributeMapping {
    // Default value to be used in case the source property was evaluated to null. Optional.
    defaultValue?: NullableOption<string>;
    // For internal use only.
    exportMissingReferences?: boolean;
    /**
     * Defines when this attribute should be exported to the target directory. Possible values are: FlowWhenChanged and
     * FlowAlways. Default is FlowWhenChanged.
     */
    flowBehavior?: AttributeFlowBehavior;
    /**
     * Defines when this attribute should be updated in the target directory. Possible values are: Always (default),
     * ObjectAddOnly (only when new object is created), MultiValueAddOnly (only when the change is adding new values to a
     * multi-valued attribute).
     */
    flowType?: AttributeFlowType;
    /**
     * If higher than 0, this attribute will be used to perform an initial match of the objects between source and target
     * directories. The synchronization engine will try to find the matching object using attribute with lowest value of
     * matching priority first. If not found, the attribute with the next matching priority will be used, and so on a until
     * match is found or no more matching attributes are left. Only attributes that are expected to have unique values, such
     * as email, should be used as matching attributes.
     */
    matchingPriority?: number;
    // Defines how a value should be extracted (or transformed) from the source object.
    source?: NullableOption<AttributeMappingSource>;
    // Name of the attribute on the target object.
    targetAttributeName?: NullableOption<string>;
}
export interface AttributeMappingSource {
    expression?: NullableOption<string>;
    name?: NullableOption<string>;
    parameters?: NullableOption<StringKeyAttributeMappingSourceValuePair[]>;
    type?: AttributeMappingSourceType;
}
export interface AttributeMappingParameterSchema {
    /**
     * The given parameter can be provided multiple times (for example, multiple input strings in the
     * Concatenate(string,string,...) function).
     */
    allowMultipleOccurrences?: boolean;
    // Parameter name.
    name?: NullableOption<string>;
    // true if the parameter is required; otherwise false.
    required?: boolean;
    // Possible values are: Boolean, Binary, Reference, Integer, String. Default is String.
    type?: AttributeType;
}
export interface StringKeyAttributeMappingSourceValuePair {
    // The name of the parameter.
    key?: NullableOption<string>;
    // The value of the parameter.
    value?: NullableOption<AttributeMappingSource>;
}
export interface ExpressionInputObject {
    // Definition of the test object.
    definition?: NullableOption<ObjectDefinition>;
    // Property values of the test object.
    properties?: NullableOption<StringKeyObjectValuePair[]>;
}
export interface ObjectDefinition {
    attributes?: NullableOption<AttributeDefinition[]>;
    metadata?: NullableOption<MetadataEntry[]>;
    name?: NullableOption<string>;
    supportedApis?: NullableOption<string[]>;
}
export interface StringKeyObjectValuePair {
    // Key.
    key?: NullableOption<string>;
}
export interface Filter {
    /**
     * *Experimental* Filter group set used to decide whether given object belongs and should be processed as part of this
     * object mapping. An object is considered in scope if ANY of the groups in the collection is evaluated to true.
     */
    categoryFilterGroups?: NullableOption<FilterGroup[]>;
    /**
     * Filter group set used to decide whether given object is in scope for provisioning. This is the filter which should be
     * used in most cases. If an object used to satisfy this filter at a given moment, and then the object or the filter was
     * changed so that filter is not satisfied any longer, such object will get de-provisioned'. An object is considered in
     * scope if ANY of the groups in the collection is evaluated to true.
     */
    groups?: NullableOption<FilterGroup[]>;
    /**
     * *Experimental* Filter group set used to filter out objects at the early stage of reading them from the directory. If an
     * object doesn't satisfy this filter it will not be processed further. Important to understand is that if an object used
     * to satisfy this filter at a given moment, and then the object or the filter was changed so that filter is no longer
     * satisfied, such object will NOT get de-provisioned. An object is considered in scope if ANY of the groups in the
     * collection is evaluated to true.
     */
    inputFilterGroups?: NullableOption<FilterGroup[]>;
}
export interface FilterGroup {
    /**
     * Filter clauses (conditions) of this group. All clauses in a group must be satisfied in order for the filter group to
     * evaluate to true.
     */
    clauses?: NullableOption<FilterClause[]>;
    // Human-readable name of the filter group.
    name?: NullableOption<string>;
}
export interface FilterClause {
    /**
     * Name of the operator to be applied to the source and target operands. Must be one of the supported operators. Supported
     * operators can be discovered.
     */
    operatorName?: NullableOption<string>;
    /**
     * Name of source operand (the operand being tested). The source operand name must match one of the attribute names on the
     * source object.
     */
    sourceOperandName?: NullableOption<string>;
    // Values that the source operand will be tested against.
    targetOperand?: NullableOption<FilterOperand>;
}
export interface FilterOperand {
    // Collection of values.
    values?: NullableOption<string[]>;
}
export interface ObjectMapping {
    /**
     * Attribute mappings define which attributes to map from the source object into the target object and how they should
     * flow. A number of functions are available to support the transformation of the original source values.
     */
    attributeMappings?: NullableOption<AttributeMapping[]>;
    /**
     * When true, this object mapping will be processed during synchronization. When false, this object mapping will be
     * skipped.
     */
    enabled?: boolean;
    /**
     * Which flow types are enabled for this object mapping. Add creates new objects in the target directory, Update modifies
     * existing objects, and Delete deprovisions existing users. The default is Add, Update, Delete.
     */
    flowTypes?: ObjectFlowTypes;
    // Additional extension properties. Unless mentioned explicitly, metadata values should not be changed.
    metadata?: NullableOption<MetadataEntry[]>;
    // Human-friendly name of the object mapping.
    name?: NullableOption<string>;
    /**
     * Defines a filter to be used when deciding whether a given object should be provisioned. For example, you might want to
     * only provision users that are located in the US.
     */
    scope?: NullableOption<Filter>;
    // Name of the object in the source directory. Must match the object name from the source directory definition.
    sourceObjectName?: NullableOption<string>;
    // Name of the object in target directory. Must match the object name from the target directory definition.
    targetObjectName?: NullableOption<string>;
}
export interface ParseExpressionResponse {
    // Error details, if expression evaluation resulted in an error.
    error?: NullableOption<PublicError>;
    // A collection of values produced by the evaluation of the expression.
    evaluationResult?: NullableOption<string[]>;
    // true if the evaluation was successful.
    evaluationSucceeded?: boolean;
    // An attributeMappingSource object representing the parsed expression.
    parsedExpression?: NullableOption<AttributeMappingSource>;
    // true if the expression was parsed successfully.
    parsingSucceeded?: boolean;
}
export interface PublicErrorResponse {
    error?: NullableOption<PublicError>;
}
export interface StringKeyLongValuePair {
    // Key.
    key?: NullableOption<string>;
    // Value.
    value?: number;
}
export interface SynchronizationError {
    code?: NullableOption<string>;
    message?: NullableOption<string>;
    tenantActionable?: boolean;
}
export interface SynchronizationJobApplicationParameters {
    // The identifier of a the synchronizationRule to be applied.
    ruleId?: NullableOption<string>;
    // The identifiers of one or more objects to which a synchronizationJob is to be applied.
    subjects?: NullableOption<SynchronizationJobSubject[]>;
}
export interface SynchronizationJobSubject {
    // The identifier of an object to which a synchronizationJob is to be applied.
    objectId?: NullableOption<string>;
    // The type of the object to which a synchronizationJob is to be applied.
    objectTypeName?: NullableOption<string>;
}
export interface SynchronizationJobRestartCriteria {
    /**
     * Comma-separated combination of the following values: Full, QuarantineState, Watermark, Escrows, ConnectorDataStore. Use
     * Full if you want all of the options.
     */
    resetScope?: NullableOption<SynchronizationJobRestartScope>;
}
export interface SynchronizationProgress {
    // The numerator of a progress ratio; the number of units of changes already processed.
    completedUnits?: number;
    // The time of a progress observation as an offset in minutes from UTC.
    progressObservationDateTime?: string;
    // The denominator of a progress ratio; a number of units of changes to be processed to accomplish synchronization.
    totalUnits?: number;
    // An optional description of the units.
    units?: NullableOption<string>;
}
export interface SynchronizationQuarantine {
    /**
     * Date and time when the quarantine was last evaluated and imposed. 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 is
     * 2014-01-01T00:00:00Z.
     */
    currentBegan?: string;
    // Describes the error(s) that occurred when putting the synchronization job into quarantine.
    error?: NullableOption<SynchronizationError>;
    /**
     * Date and time when the next attempt to re-evaluate the quarantine will be made. 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 is
     * 2014-01-01T00:00:00Z.
     */
    nextAttempt?: string;
    /**
     * A code that signifies why the quarantine was imposed. Possible values are: EncounteredBaseEscrowThreshold,
     * EncounteredTotalEscrowThreshold, EncounteredEscrowProportionThreshold, EncounteredQuarantineException,
     * QuarantinedOnDemand, TooManyDeletes, Unknown.
     */
    reason?: QuarantineReason;
    /**
     * Date and time when the quarantine was first imposed in this series (a series starts when a quarantine is first imposed,
     * and is reset as soon as the quarantine is lifted). 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 is 2014-01-01T00:00:00Z.
     */
    seriesBegan?: string;
    /**
     * Number of times in this series the quarantine was re-evaluated and left in effect (a series starts when quarantine is
     * first imposed, and is reset as soon as quarantine is lifted).
     */
    seriesCount?: number;
}
export interface SynchronizationRule {
    // true if the synchronization rule can be customized; false if this rule is read-only and should not be changed.
    editable?: boolean;
    /**
     * Synchronization rule identifier. Must be one of the identifiers recognized by the synchronization engine. Supported
     * rule identifiers can be found in the synchronization template returned by the API.
     */
    id?: NullableOption<string>;
    /**
     * Additional extension properties. Unless instructed explicitly by the support team, metadata values should not be
     * changed.
     */
    metadata?: NullableOption<StringKeyStringValuePair[]>;
    // Human-readable name of the synchronization rule. Not nullable.
    name?: NullableOption<string>;
    /**
     * Collection of object mappings supported by the rule. Tells the synchronization engine which objects should be
     * synchronized.
     */
    objectMappings?: NullableOption<ObjectMapping[]>;
    /**
     * Priority relative to other rules in the synchronizationSchema. Rules with the lowest priority number will be processed
     * first.
     */
    priority?: number;
    // Name of the source directory. Must match one of the directory definitions in synchronizationSchema.
    sourceDirectoryName?: NullableOption<string>;
    // Name of the target directory. Must match one of the directory definitions in synchronizationSchema.
    targetDirectoryName?: NullableOption<string>;
}
export interface SynchronizationSchedule {
    /**
     * Date and time when this job will expire. 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 is 2014-01-01T00:00:00Z.
     */
    expiration?: NullableOption<string>;
    // The interval between synchronization iterations.
    interval?: string;
    // Possible values are: Active, Disabled.
    state?: SynchronizationScheduleState;
}
export interface SynchronizationSecretKeyStringValuePair {
    /**
     * Possible values are: None, UserName, Password, SecretToken, AppKey, BaseAddress, ClientIdentifier, ClientSecret,
     * SingleSignOnType, Sandbox, Url, Domain, ConsumerKey, ConsumerSecret, TokenKey, TokenExpiration, Oauth2AccessToken,
     * Oauth2AccessTokenCreationTime, Oauth2RefreshToken, SyncAll, InstanceName, Oauth2ClientId, Oauth2ClientSecret,
     * CompanyId, UpdateKeyOnSoftDelete, SynchronizationSchedule, SystemOfRecord, SandboxName, EnforceDomain,
     * SyncNotificationSettings, Server, PerformInboundEntitlementGrants, HardDeletesEnabled, SyncAgentCompatibilityKey,
     * SyncAgentADContainer, ValidateDomain, Oauth2TokenExchangeUri, Oauth2AuthorizationUri, AuthenticationType,
     * TestReferences, ConnectionString.
     */
    key?: SynchronizationSecret;
    // The value of the secret.
    value?: NullableOption<string>;
}
export interface SynchronizationStatus {
    /**
     * High-level status code of the synchronization job. Possible values are: NotConfigured, NotRun, Active, Paused,
     * Quarantine.
     */
    code?: SynchronizationStatusCode;
    // Number of consecutive times this job failed.
    countSuccessiveCompleteFailures?: number;
    /**
     * true if the job's escrows (object-level errors) were pruned during initial synchronization. Escrows can be pruned if
     * during the initial synchronization, you reach the threshold of errors that would normally put the job in quarantine.
     * Instead of going into quarantine, the synchronization process clears the job's errors and continues until the initial
     * synchronization is completed. When the initial synchronization is completed, the job will pause and wait for the
     * customer to clean up the errors.
     */
    escrowsPruned?: boolean;
    // Details of the last execution of the job.
    lastExecution?: NullableOption<SynchronizationTaskExecution>;
    // Details of the last execution of this job, which didn't have any errors.
    lastSuccessfulExecution?: NullableOption<SynchronizationTaskExecution>;
    // Details of the last execution of the job, which exported objects into the target directory.
    lastSuccessfulExecutionWithExports?: NullableOption<SynchronizationTaskExecution>;
    // Details of the progress of a job toward completion.
    progress?: NullableOption<SynchronizationProgress[]>;
    // If job is in quarantine, quarantine details.
    quarantine?: NullableOption<SynchronizationQuarantine>;
    /**
     * The time when steady state (no more changes to the process) was first achieved. 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 is
     * 2014-01-01T00:00:00Z.
     */
    steadyStateFirstAchievedTime?: string;
    /**
     * The time when steady state (no more changes to the process) was last achieved. 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 is
     * 2014-01-01T00:00:00Z.
     */
    steadyStateLastAchievedTime?: string;
    // Count of synchronized objects, listed by object type.
    synchronizedEntryCountByType?: NullableOption<StringKeyLongValuePair[]>;
    // In the event of an error, the URL with the troubleshooting steps for the issue.
    troubleshootingUrl?: NullableOption<string>;
}
export interface SynchronizationTaskExecution {
    // Identifier of the job run.
    activityIdentifier?: NullableOption<string>;
    // Count of processed entries that were assigned for this application.
    countEntitled?: number;
    // Count of processed entries that were assigned for provisioning.
    countEntitledForProvisioning?: number;
    // Count of entries that were escrowed (errors).
    countEscrowed?: number;
    // Count of entries that were escrowed, including system-generated escrows.
    countEscrowedRaw?: number;
    // Count of exported entries.
    countExported?: number;
    // Count of entries that were expected to be exported.
    countExports?: number;
    // Count of imported entries.
    countImported?: number;
    // Count of imported delta-changes.
    countImportedDeltas?: number;
    // Count of imported delta-changes pertaining to reference changes.
    countImportedReferenceDeltas?: number;
    // If an error was encountered, contains a synchronizationError object with details.
    error?: NullableOption<SynchronizationError>;
    // Code summarizing the result of this run. Possible values are: Succeeded, Failed, EntryLevelErrors.
    state?: SynchronizationTaskExecutionResult;
    /**
     * Time when this job run began. 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 is 2014-01-01T00:00:00Z.
     */
    timeBegan?: string;
    /**
     * Time when this job run ended. 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 is 2014-01-01T00:00:00Z.
     */
    timeEnded?: string;
}
// tslint:disable-next-line: no-empty-interface
export interface AccessReviewApplyAction {}
// tslint:disable-next-line: no-empty-interface
export interface AccessReviewScope {}
export interface AccessReviewQueryScope extends AccessReviewScope {
    // The query representing what will be reviewed in an access review.
    query?: NullableOption<string>;
    /**
     * In the scenario where reviewers need to be specified dynamically, this property is used to indicate the relative source
     * of the query. This property is only required if a relative query is specified. For example, ./manager.
     */
    queryRoot?: NullableOption<string>;
    // Indicates the type of query. Types include MicrosoftGraph and ARM.
    queryType?: NullableOption<string>;
}
export interface AccessReviewInactiveUsersQueryScope extends AccessReviewQueryScope {
    /**
     * Defines the duration of inactivity. Inactivity is based on the last sign in date of the user compared to the access
     * review instance's start date. If this property is not specified, it's assigned the default value PT0S.
     */
    inactiveDuration?: NullableOption<string>;
}
export interface AccessReviewInstanceDecisionItemResource {
    // Display name of the resource
    displayName?: NullableOption<string>;
    // Resource ID
    id?: NullableOption<string>;
    // Type of resource. Types include: Group, ServicePrincipal, DirectoryRole, AzureRole, AccessPackageAssignmentPolicy.
    type?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface AccessReviewInstanceDecisionItemTarget {}
export interface AccessReviewInstanceDecisionItemServicePrincipalTarget extends AccessReviewInstanceDecisionItemTarget {
    // The appId for the service principal entity being reviewed.
    appId?: NullableOption<string>;
    // The display name of the service principal whose access is being reviewed.
    servicePrincipalDisplayName?: NullableOption<string>;
    servicePrincipalId?: NullableOption<string>;
}
export interface AccessReviewInstanceDecisionItemUserTarget extends AccessReviewInstanceDecisionItemTarget {
    // The name of user.
    userDisplayName?: NullableOption<string>;
    // The identifier of user.
    userId?: NullableOption<string>;
    // The user principal name.
    userPrincipalName?: NullableOption<string>;
}
export interface AccessReviewNotificationRecipientItem {
    // Determines the recipient of the notification email.
    notificationRecipientScope?: NullableOption<AccessReviewNotificationRecipientScope>;
    /**
     * Indicates the type of access review email to be sent. Supported template type is CompletedAdditionalRecipients which
     * sends review completion notifications to the recipients.
     */
    notificationTemplateType?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface AccessReviewNotificationRecipientScope {}
export interface AccessReviewNotificationRecipientQueryScope extends AccessReviewNotificationRecipientScope {
    /**
     * This represents the query for who the recipients are. For example, /groups/{group id}/members for group members and
     * /users/{user id} for a specific user.
     */
    query?: NullableOption<string>;
    /**
     * In the scenario where reviewers need to be specified dynamically, this property is used to indicate the relative source
     * of the query. This property is only required if a relative query that is, ./manager) is specified.
     */
    queryRoot?: NullableOption<string>;
    // Indicates the type of query. Allowed value is MicrosoftGraph.
    queryType?: NullableOption<string>;
}
export interface AccessReviewRecurrenceSettings {
    // The duration in days for recurrence.
    durationInDays?: number;
    // The count of recurrences, if the value of recurrenceEndType is occurrences, or 0 otherwise.
    recurrenceCount?: number;
    /**
     * How the recurrence ends. Possible values: never, endBy, occurrences, or recurrenceCount. If it is never, then there is
     * no explicit end of the recurrence series. If it is endBy, then the recurrence ends at a certain date. If it is
     * occurrences, then the series ends after recurrenceCount instances of the review have completed.
     */
    recurrenceEndType?: NullableOption<string>;
    // The recurrence interval. Possible vaules: onetime, weekly, monthly, quarterly, halfyearly or annual.
    recurrenceType?: NullableOption<string>;
}
export interface AccessReviewReviewerScope extends AccessReviewScope {
    // The query specifying who will be the reviewer. See table for examples.
    query?: NullableOption<string>;
    /**
     * In the scenario where reviewers need to be specified dynamically, this property is used to indicate the relative source
     * of the query. This property is only required if a relative query, for example, ./manager, is specified. Possible value:
     * decisions.
     */
    queryRoot?: NullableOption<string>;
    // The type of query. Examples include MicrosoftGraph and ARM.
    queryType?: NullableOption<string>;
}
export interface AccessReviewScheduleSettings {
    /**
     * Optional field. Describes the actions to take once a review is complete. There are two types that are currently
     * supported: removeAccessApplyAction (default) and disableAndDeleteUserApplyAction. Field only needs to be specified in
     * the case of disableAndDeleteUserApplyAction. See accessReviewApplyAction.
     */
    applyActions?: NullableOption<AccessReviewApplyAction[]>;
    /**
     * Indicates whether decisions are automatically applied. When set to false, a user must apply the decisions manually once
     * the reviewer completes the access review. When set to true, decisions are applied automatically after the access review
     * instance duration ends, whether or not the reviewers have responded. Default value is false.
     */
    autoApplyDecisionsEnabled?: boolean;
    // Decision chosen if defaultDecisionEnabled is enabled. Can be one of Approve, Deny, or Recommendation.
    defaultDecision?: NullableOption<string>;
    // Indicates whether the default decision is enabled or disabled when reviewers do not respond. Default value is false.
    defaultDecisionEnabled?: boolean;
    // Duration of each recurrence of review (accessReviewInstance) in number of days.
    instanceDurationInDays?: number;
    // Indicates whether reviewers are required to provide justification with their decision. Default value is false.
    justificationRequiredOnApproval?: boolean;
    // Indicates whether emails are enabled or disabled. Default value is false.
    mailNotificationsEnabled?: boolean;
    recommendationLookBackDuration?: NullableOption<string>;
    // Indicates whether decision recommendations are enabled/disabled.
    recommendationsEnabled?: boolean;
    /**
     * Detailed settings for recurrence using the standard Outlook recurrence object. Only weekly and absoluteMonthly on
     * recurrencePattern are supported. Use the property startDate on recurrenceRange to determine the day the review starts.
     */
    recurrence?: NullableOption<PatternedRecurrence>;
    // Indicates whether reminders are enabled or disabled. Default value is false.
    reminderNotificationsEnabled?: boolean;
}
export interface AccessReviewSettings {
    // Indicates whether showing recommendations to reviewers is enabled.
    accessRecommendationsEnabled?: boolean;
    // The number of days of user activities to show to reviewers.
    activityDurationInDays?: number;
    /**
     * Indicates whether the auto-apply capability, to automatically change the target object access resource, is enabled. If
     * not enabled, a user must, after the review completes, apply the access review.
     */
    autoApplyReviewResultsEnabled?: boolean;
    /**
     * Indicates whether a decision should be set if the reviewer did not supply one. For use when auto-apply is enabled. If
     * you don't want to have a review decision recorded unless the reviewer makes an explicit choice, set it to false.
     */
    autoReviewEnabled?: boolean;
    // Detailed settings for how the feature should set the review decision. For use when auto-apply is enabled.
    autoReviewSettings?: NullableOption<AutoReviewSettings>;
    // Indicates whether reviewers are required to provide a justification when reviewing access.
    justificationRequiredOnApproval?: boolean;
    // Indicates whether sending mails to reviewers and the review creator is enabled.
    mailNotificationsEnabled?: boolean;
    // Detailed settings for recurrence.
    recurrenceSettings?: NullableOption<AccessReviewRecurrenceSettings>;
    // Indicates whether sending reminder emails to reviewers is enabled.
    remindersEnabled?: boolean;
}
export interface AutoReviewSettings {
    /**
     * Possible values: Approve, Deny, or Recommendation. If Recommendation, then accessRecommendationsEnabled in the
     * accessReviewSettings resource should also be set to true. If you want to have the system provide a decision even if the
     * reviewer does not make a choice, set the autoReviewEnabled property in the accessReviewSettings resource to true and
     * include an autoReviewSettings object with the notReviewedResult property. Then, when a review completes, based on the
     * notReviewedResult property, the decision is recorded as either Approve or Deny.
     */
    notReviewedResult?: NullableOption<string>;
}
export interface AppConsentRequestScope {
    // The name of the scope.
    displayName?: NullableOption<string>;
}
export interface BusinessFlowSettings extends AccessReviewSettings {
    durationInDays?: number;
}
// tslint:disable-next-line: no-empty-interface
export interface DisableAndDeleteUserApplyAction extends AccessReviewApplyAction {}
// tslint:disable-next-line: no-empty-interface
export interface GovernanceCriteria {}
export interface GovernanceNotificationPolicy {
    enabledTemplateTypes?: NullableOption<string[]>;
    notificationTemplates?: NullableOption<GovernanceNotificationTemplate[]>;
}
export interface GovernanceNotificationTemplate {
    culture?: NullableOption<string>;
    id?: NullableOption<string>;
    source?: NullableOption<string>;
    type?: NullableOption<string>;
    version?: NullableOption<string>;
}
export interface GovernancePolicy {
    decisionMakerCriteria?: NullableOption<GovernanceCriteria[]>;
    notificationPolicy?: NullableOption<GovernanceNotificationPolicy>;
}
export interface GroupMembershipGovernanceCriteria extends GovernanceCriteria {
    groupId?: NullableOption<string>;
}
export interface PrincipalResourceMembershipsScope extends AccessReviewScope {
    // Defines the scopes of the principals whose access to resources are reviewed in the access review.
    principalScopes?: NullableOption<AccessReviewScope[]>;
    // Defines the scopes of the resources for which access is reviewed.
    resourceScopes?: NullableOption<AccessReviewScope[]>;
}
export interface ProgramResource extends Identity {
    // Type of the resource, indicating whether it is a group or an app.
    type?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface RemoveAccessApplyAction extends AccessReviewApplyAction {}
export interface RoleMembershipGovernanceCriteria extends GovernanceCriteria {
    roleId?: NullableOption<string>;
    roleTemplateId?: NullableOption<string>;
}
export interface ServicePrincipalIdentity extends Identity {
    // The application identifier of the service principal.
    appId?: NullableOption<string>;
}
export interface UserGovernanceCriteria extends GovernanceCriteria {
    userId?: NullableOption<string>;
}
export interface AgreementFileData {
    data?: NullableOption<number>;
}
export interface TermsExpiration {
    /**
     * Represents the frequency at which the terms will expire, after its first expiration as set in startDateTime. The value
     * is represented in ISO 8601 format for durations. For example, PT1M represents a time period of 1 month.
     */
    frequency?: NullableOption<string>;
    /**
     * The DateTime when the agreement is set to expire for all users. 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 is 2014-01-01T00:00:00Z.
     */
    startDateTime?: NullableOption<string>;
}
export interface ConditionalAccessSessionControl {
    // Specifies whether the session control is enabled.
    isEnabled?: NullableOption<boolean>;
}
// tslint:disable-next-line: no-empty-interface
export interface ApplicationEnforcedRestrictionsSessionControl extends ConditionalAccessSessionControl {}
export interface CloudAppSecuritySessionControl extends ConditionalAccessSessionControl {
    /**
     * Possible values are: mcasConfigured, monitorOnly, blockDownloads. Learn more about these values here:
     * https://docs.microsoft.com/cloud-app-security/proxy-deployment-aad#step-1-create-an-azure-ad-conditional-access-test-policy-
     */
    cloudAppSecurityType?: NullableOption<CloudAppSecuritySessionControlType>;
}
export interface ConditionalAccessApplications {
    // The list of application IDs explicitly excluded from the policy.
    excludeApplications?: string[];
    /**
     * The list of application IDs the policy applies to, unless explicitly excluded (in excludeApplications). Can also be set
     * to All.
     */
    includeApplications?: string[];
    // Authentication context class references include. Supported values are c1 through c25.
    includeAuthenticationContextClassReferences?: string[];
    // User actions to include. Supported values are urn:user:registersecurityinfo and urn:user:registerdevice
    includeUserActions?: string[];
}
export interface ConditionalAccessClientApplications {
    excludeServicePrincipals?: string[];
    includeServicePrincipals?: string[];
}
export interface ConditionalAccessConditionSet {
    // Applications and user actions included in and excluded from the policy. Required.
    applications?: NullableOption<ConditionalAccessApplications>;
    clientApplications?: NullableOption<ConditionalAccessClientApplications>;
    /**
     * Client application types included in the policy. Possible values are: all, browser, mobileAppsAndDesktopClients,
     * exchangeActiveSync, easSupported, other. Required.
     */
    clientAppTypes?: ConditionalAccessClientApp[];
    // Devices in the policy.
    devices?: NullableOption<ConditionalAccessDevices>;
    // Device states in the policy.
    deviceStates?: NullableOption<ConditionalAccessDeviceStates>;
    // Locations included in and excluded from the policy.
    locations?: NullableOption<ConditionalAccessLocations>;
    // Platforms included in and excluded from the policy.
    platforms?: NullableOption<ConditionalAccessPlatforms>;
    /**
     * Sign-in risk levels included in the policy. Possible values are: low, medium, high, hidden, none, unknownFutureValue.
     * Required.
     */
    signInRiskLevels?: RiskLevel[];
    /**
     * User risk levels included in the policy. Possible values are: low, medium, high, hidden, none, unknownFutureValue.
     * Required.
     */
    userRiskLevels?: RiskLevel[];
    // Users, groups, and roles included in and excluded from the policy. Required.
    users?: NullableOption<ConditionalAccessUsers>;
}
export interface ConditionalAccessDevices {
    /**
     * Filter defining the dynamic-device-syntax rule to include/exclude devices. A filter can use device properties (such as
     * extension attributes) to include/exclude them. Cannot be set if includeDevices or excludeDevices is set.
     */
    deviceFilter?: NullableOption<ConditionalAccessFilter>;
    /**
     * States excluded from the scope of the policy. Possible values: Compliant, DomainJoined. Cannot be set if deviceFIlter
     * is set.
     */
    excludeDevices?: string[];
    excludeDeviceStates?: string[];
    // States in the scope of the policy. All is the only allowed value. Cannot be set if deviceFIlter is set.
    includeDevices?: string[];
    includeDeviceStates?: string[];
}
export interface ConditionalAccessDeviceStates {
    // States excluded from the scope of the policy. Possible values: Compliant, DomainJoined.
    excludeStates?: string[];
    // States in the scope of the policy. All is the only allowed value.
    includeStates?: string[];
}
export interface ConditionalAccessLocations {
    // Location IDs excluded from scope of policy.
    excludeLocations?: string[];
    // Location IDs in scope of policy unless explicitly excluded, All, or AllTrusted.
    includeLocations?: string[];
}
export interface ConditionalAccessPlatforms {
    // Possible values are: android, iOS, windows, windowsPhone, macOS, all, unknownFutureValue.
    excludePlatforms?: ConditionalAccessDevicePlatform[];
    // Possible values are: android, iOS, windows, windowsPhone, macOS, all, unknownFutureValue.
    includePlatforms?: ConditionalAccessDevicePlatform[];
}
export interface ConditionalAccessUsers {
    // Group IDs excluded from scope of policy.
    excludeGroups?: string[];
    // Role IDs excluded from scope of policy.
    excludeRoles?: string[];
    // User IDs excluded from scope of policy and/or GuestsOrExternalUsers.
    excludeUsers?: string[];
    // Group IDs in scope of policy unless explicitly excluded, or All.
    includeGroups?: string[];
    // Role IDs in scope of policy unless explicitly excluded, or All.
    includeRoles?: string[];
    // User IDs in scope of policy unless explicitly excluded, or None or All or GuestsOrExternalUsers.
    includeUsers?: string[];
}
export interface ConditionalAccessFilter {
    // Mode to use for the filter. Possible values are include or exclude.
    mode?: FilterMode;
    /**
     * Rule syntax is similar to that used for membership rules for groups in Azure AD. For details, see rules with multiple
     * expressions
     */
    rule?: string;
}
export interface ConditionalAccessGrantControls {
    /**
     * List of values of built-in controls required by the policy. Possible values: block, mfa, compliantDevice,
     * domainJoinedDevice, approvedApplication, compliantApplication, passwordChange, unknownFutureValue.
     */
    builtInControls?: ConditionalAccessGrantControl[];
    /**
     * List of custom controls IDs required by the policy. Learn more about custom controls here:
     * https://docs.microsoft.com/azure/active-directory/conditional-access/controls#custom-controls-preview
     */
    customAuthenticationFactors?: string[];
    // Defines the relationship of the grant controls. Possible values: AND, OR.
    operator?: NullableOption<string>;
    // List of terms of use IDs required by the policy.
    termsOfUse?: string[];
}
export interface ConditionalAccessSessionControls {
    /**
     * Session control to enforce application restrictions. Only Exchange Online and Sharepoint Online support this session
     * control.
     */
    applicationEnforcedRestrictions?: NullableOption<ApplicationEnforcedRestrictionsSessionControl>;
    // Session control to apply cloud app security.
    cloudAppSecurity?: NullableOption<CloudAppSecuritySessionControl>;
    /**
     * Session control to define whether to persist cookies or not. All apps should be selected for this session control to
     * work correctly.
     */
    persistentBrowser?: NullableOption<PersistentBrowserSessionControl>;
    // Session control to enforce signin frequency.
    signInFrequency?: NullableOption<SignInFrequencySessionControl>;
}
export interface PersistentBrowserSessionControl extends ConditionalAccessSessionControl {
    // Possible values are: always, never.
    mode?: NullableOption<PersistentBrowserSessionMode>;
}
export interface SignInFrequencySessionControl extends ConditionalAccessSessionControl {
    // Possible values are: days, hours.
    type?: NullableOption<SigninFrequencyType>;
    // The number of days or hours.
    value?: NullableOption<number>;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IpRange {}
// tslint:disable-next-line: interface-name
export interface IPv4CidrRange extends IpRange {
    // IPv4 address in CIDR notation
    cidrAddress?: string;
}
// tslint:disable-next-line: interface-name
export interface IPv6CidrRange extends IpRange {
    // IPv6 address in CIDR notation
    cidrAddress?: string;
}
export interface RiskUserActivity {
    /**
     * The possible values are none, adminGeneratedTemporaryPassword, userPerformedSecuredPasswordChange,
     * userPerformedSecuredPasswordReset, adminConfirmedSigninSafe, aiConfirmedSigninSafe,
     * userPassedMFADrivenByRiskBasedPolicy, adminDismissedAllRiskForUser, adminConfirmedSigninCompromised, hidden,
     * adminConfirmedUserCompromised, unknownFutureValue.
     */
    detail?: NullableOption<RiskDetail>;
    // List of risk event types. Deprecated. Use riskEventType instead.
    eventTypes?: NullableOption<RiskEventType[]>;
    // The type of risk event detected.
    riskEventTypes?: NullableOption<string[]>;
}
export interface AccessPackageAnswer {
    // The question the answer is for. Required and Read-only.
    answeredQuestion?: NullableOption<AccessPackageQuestion>;
    // The display value of the answer. Required.
    displayValue?: NullableOption<string>;
}
export interface AccessPackageQuestion {
    // ID of the question.
    id?: NullableOption<string>;
    // Whether the requestor is required to supply an answer or not.
    isRequired?: NullableOption<boolean>;
    // Relative position of this question when displaying a list of questions to the requestor.
    sequence?: NullableOption<number>;
    // The text of the question to show to the requestor.
    text?: NullableOption<AccessPackageLocalizedContent>;
}
export interface AccessPackageAnswerChoice {
    /**
     * The actual value of the selected choice. This is typically a string value which is understandable by applications.
     * Required.
     */
    actualValue?: NullableOption<string>;
    // The localized display values shown to the requestor and approvers. Required.
    displayValue?: NullableOption<AccessPackageLocalizedContent>;
}
export interface AccessPackageLocalizedContent {
    // The fallback string, which is used when a requested localization is not available. Required.
    defaultText?: NullableOption<string>;
    // Content represented in a format for a specific locale.
    localizedTexts?: NullableOption<AccessPackageLocalizedText[]>;
}
export interface AccessPackageAnswerString extends AccessPackageAnswer {
    // The value stored on the requestor's user profile, if this answer is configured to be stored as a specific attribute.
    value?: NullableOption<string>;
}
export interface AccessPackageAssignmentRequestRequirements {
    existingAnswers?: NullableOption<AccessPackageAnswer[]>;
    isApprovalRequired?: NullableOption<boolean>;
    isApprovalRequiredForExtension?: NullableOption<boolean>;
    isCustomAssignmentScheduleAllowed?: NullableOption<boolean>;
    isRequestorJustificationRequired?: NullableOption<boolean>;
    policyDescription?: NullableOption<string>;
    policyDisplayName?: NullableOption<string>;
    policyId?: NullableOption<string>;
    questions?: NullableOption<AccessPackageQuestion[]>;
    schedule?: NullableOption<RequestSchedule>;
}
export interface RequestSchedule {
    // When the access should expire.
    expiration?: NullableOption<ExpirationPattern>;
    // For recurring access. Not used at present.
    recurrence?: NullableOption<PatternedRecurrence>;
    /**
     * 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 is 2014-01-01T00:00:00Z.
     */
    startDateTime?: NullableOption<string>;
}
export interface AccessPackageLocalizedText {
    // The ISO code for the intended language. Required.
    languageCode?: NullableOption<string>;
    // The text in the specific language. Required.
    text?: NullableOption<string>;
}
export interface AccessPackageMultipleChoiceQuestion extends AccessPackageQuestion {
    // Indicates whether requestor can select multiple choices as their answer.
    allowsMultipleSelection?: NullableOption<boolean>;
    // List of answer choices.
    choices?: NullableOption<AccessPackageAnswerChoice[]>;
}
export interface AccessPackageResourceAttribute {
    attributeDestination?: NullableOption<AccessPackageResourceAttributeDestination>;
    attributeName?: NullableOption<string>;
    attributeSource?: NullableOption<AccessPackageResourceAttributeSource>;
    id?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface AccessPackageResourceAttributeDestination {}
// tslint:disable-next-line: no-empty-interface
export interface AccessPackageResourceAttributeSource {}
export interface AccessPackageResourceAttributeQuestion extends AccessPackageResourceAttributeSource {
    question?: NullableOption<AccessPackageQuestion>;
}
export interface AccessPackageTextInputQuestion extends AccessPackageQuestion {
    // Indicates whether the answer will be in single or multiple line format.
    isSingleLineQuestion?: NullableOption<boolean>;
}
// tslint:disable-next-line: no-empty-interface
export interface AccessPackageUserDirectoryAttributeStore extends AccessPackageResourceAttributeDestination {}
export interface ApprovalSettings {
    // One of NoApproval, SingleStage or Serial. The NoApproval is used when isApprovalRequired is false.
    approvalMode?: NullableOption<string>;
    /**
     * If approval is required, the one or two elements of this collection define each of the stages of approval. An empty
     * array if no approval is required.
     */
    approvalStages?: NullableOption<ApprovalStage[]>;
    // If false, then approval is not required for requests in this policy.
    isApprovalRequired?: NullableOption<boolean>;
    // If false, then approval is not required for a user who already has an assignment to extend their assignment.
    isApprovalRequiredForExtension?: NullableOption<boolean>;
    // Indicates whether the requestor is required to supply a justification in their request.
    isRequestorJustificationRequired?: NullableOption<boolean>;
}
export interface ApprovalStage {
    // The number of days that a request can be pending a response before it is automatically denied.
    approvalStageTimeOutInDays?: NullableOption<number>;
    /**
     * If escalation is enabled and the primary approvers do not respond before the escalation time, the escalationApprovers
     * are the users who will be asked to approve requests. This can be a collection of singleUser, groupMembers,
     * requestorManager, internalSponsors and externalSponsors.
     */
    escalationApprovers?: NullableOption<UserSet[]>;
    // If escalation is required, the time a request can be pending a response from a primary approver.
    escalationTimeInMinutes?: NullableOption<number>;
    // Indicates whether the approver is required to provide a justification for approving a request.
    isApproverJustificationRequired?: NullableOption<boolean>;
    // If true, then one or more escalation approvers are configured in this approval stage.
    isEscalationEnabled?: NullableOption<boolean>;
    /**
     * The users who will be asked to approve requests. A collection of singleUser, groupMembers, requestorManager,
     * internalSponsors and externalSponsors.
     */
    primaryApprovers?: NullableOption<UserSet[]>;
}
export interface UserSet {
    // For a user in an approval stage, this property indicates whether the user is a backup fallback approver.
    isBackup?: NullableOption<boolean>;
}
export interface AssignmentReviewSettings {
    // The number of days to allow input from reviewers.
    durationInDays?: NullableOption<number>;
    // If true, access reviews are required for assignments from this policy.
    isEnabled?: NullableOption<boolean>;
    // The interval for recurrence, such as monthly or quarterly.
    recurrenceType?: NullableOption<string>;
    /**
     * If the reviewerType is Reviewers, this collection specifies the users who will be reviewers, either by ID or as members
     * of a group, using a collection of singleUser and groupMembers.
     */
    reviewers?: NullableOption<UserSet[]>;
    // Who should be asked to do the review, either Self or Reviewers.
    reviewerType?: NullableOption<string>;
    // When the first review should start.
    startDateTime?: NullableOption<string>;
}
export interface ConnectedOrganizationMembers extends UserSet {
    // The name of the connected organization. Read only.
    description?: NullableOption<string>;
    // The ID of the connected organization in entitlement management.
    id?: NullableOption<string>;
}
export interface ConnectionInfo {
    // The endpoint that is used by Entitlement Management to communicate with the access package resource.
    url?: NullableOption<string>;
}
export interface ExpirationPattern {
    // The requestor's desired duration of access. If specified in a request, endDateTime should not be present.
    duration?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z.
     */
    endDateTime?: NullableOption<string>;
    // The requestor's desired expiration pattern type.
    type?: NullableOption<ExpirationPatternType>;
}
// tslint:disable-next-line: no-empty-interface
export interface ExternalSponsors extends UserSet {}
export interface GroupMembers extends UserSet {
    // The name of the group in Azure AD. Read only.
    description?: NullableOption<string>;
    // The ID of the group in Azure AD.
    id?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface InternalSponsors extends UserSet {}
export interface RequestorManager extends UserSet {
    /**
     * The hierarchical level of the manager with respect to the requestor. For example, the direct manager of a requestor
     * would have a managerLevel of 1, while the manager of the requestor's manager would have a managerLevel of 2. Default
     * value for managerLevel is 1. Possible values for this property range from 1 to 2.
     */
    managerLevel?: NullableOption<number>;
}
export interface RequestorSettings {
    // Indicates whether new requests are accepted on this policy.
    acceptRequests?: NullableOption<boolean>;
    /**
     * The users who are allowed to request on this policy, which can be singleUser, groupMembers, and
     * connectedOrganizationMembers.
     */
    allowedRequestors?: NullableOption<UserSet[]>;
    /**
     * Who can request. One of NoSubjects, SpecificDirectorySubjects, SpecificConnectedOrganizationSubjects,
     * AllConfiguredConnectedOrganizationSubjects, AllExistingConnectedOrganizationSubjects, AllExistingDirectoryMemberUsers,
     * AllExistingDirectorySubjects or AllExternalSubjects.
     */
    scopeType?: NullableOption<string>;
}
export interface SingleUser extends UserSet {
    // The name of the user in Azure AD. Read only.
    description?: NullableOption<string>;
    // The ID of the user in Azure AD.
    id?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IdentitySource {}
export interface AzureActiveDirectoryTenant extends IdentitySource {
    // The name of the Azure Active Directory tenant. Read only.
    displayName?: NullableOption<string>;
    // The ID of the Azure Active Directory tenant. Read only.
    tenantId?: NullableOption<string>;
}
export interface DomainIdentitySource extends IdentitySource {
    // The name of the identity source, typically also the domain name. Read only.
    displayName?: NullableOption<string>;
    // The domain name. Read only.
    domainName?: NullableOption<string>;
}
export interface ExternalDomainFederation extends IdentitySource {
    // The name of the identity source, typically also the domain name. Read only.
    displayName?: NullableOption<string>;
    // The domain name. Read only.
    domainName?: NullableOption<string>;
    // The issuerURI of the incoming federation. Read only.
    issuerUri?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface InformationProtectionAction {}
export interface AddContentFooterAction extends InformationProtectionAction {
    // Possible values are: left, right, center.
    alignment?: ContentAlignment;
    // Color of the font to use for the footer.
    fontColor?: NullableOption<string>;
    // Name of the font to use for the footer.
    fontName?: NullableOption<string>;
    // Font size to use for the footer.
    fontSize?: number;
    // The margin of the header from the bottom of the document.
    margin?: number;
    // The contents of the footer itself.
    text?: NullableOption<string>;
    // The name of the UI element where the footer should be placed.
    uiElementName?: NullableOption<string>;
}
export interface AddContentHeaderAction extends InformationProtectionAction {
    // Possible values are: left, right, center.
    alignment?: ContentAlignment;
    // Color of the font to use for the header.
    fontColor?: NullableOption<string>;
    // Name of the font to use for the header.
    fontName?: NullableOption<string>;
    // Font size to use for the header.
    fontSize?: number;
    // The margin of the header from the top of the document.
    margin?: number;
    // The contents of the header itself.
    text?: NullableOption<string>;
    // The name of the UI element where the header should be placed.
    uiElementName?: NullableOption<string>;
}
export interface AddWatermarkAction extends InformationProtectionAction {
    // Color of the font to use for the watermark.
    fontColor?: NullableOption<string>;
    // Name of the font to use for the watermark.
    fontName?: NullableOption<string>;
    // Font size to use for the watermark.
    fontSize?: number;
    // Possible values are: horizontal, diagonal.
    layout?: WatermarkLayout;
    // The contents of the watermark itself.
    text?: NullableOption<string>;
    // The name of the UI element where the watermark should be placed.
    uiElementName?: NullableOption<string>;
}
export interface ApplyLabelAction extends InformationProtectionAction {
    /**
     * The collection of specific actions that should be taken by the consuming application to label the document. See
     * informationProtectionAction for the full list.
     */
    actions?: NullableOption<InformationProtectionAction[]>;
    // Possible values are: manual, automatic, recommended, default.
    actionSource?: ActionSource;
    // Object that describes the details of the label to apply.
    label?: NullableOption<LabelDetails>;
    /**
     * If the label was the result of an automatic classification, supply the list of sensitive info type GUIDs that resulted
     * in the returned label.
     */
    responsibleSensitiveTypeIds?: string[];
}
export interface ParentLabelDetails {
    // The color that the user interface should display for the label, if configured.
    color?: NullableOption<string>;
    // The admin-defined description for the label.
    description?: NullableOption<string>;
    // The label ID is a globally unique identifier (GUID).
    id?: NullableOption<string>;
    // Indicates whether the label is active or not. Active labels should be hidden or disabled in user interfaces.
    isActive?: boolean;
    // The plaintext name of the label.
    name?: NullableOption<string>;
    parent?: NullableOption<ParentLabelDetails>;
    // The sensitivity value of the label, where lower is less sensitive.
    sensitivity?: number;
    // The tooltip that should be displayed for the label in a user interface.
    tooltip?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface LabelDetails extends ParentLabelDetails {}
export interface BufferDecryptionResult {
    decryptedBuffer?: NullableOption<number>;
}
export interface BufferEncryptionResult {
    encryptedBuffer?: NullableOption<number>;
    publishingLicense?: NullableOption<number>;
}
export interface ClassificationResult {
    // The confidence level, 0 to 100, of the result.
    confidenceLevel?: number;
    // The number of instances of the specific information type in the input.
    count?: number;
    // The GUID of the discovered sensitive information type.
    sensitiveTypeId?: string;
}
export interface ContentInfo {
    // Possible values are: default, email.
    format?: ContentFormat;
    // Identifier used for Azure Information Protection Analytics.
    identifier?: NullableOption<string>;
    /**
     * Existing Microsoft Information Protection metadata is passed as key/value pairs, where the key is the
     * MSIP_Label_GUID_PropName.
     */
    metadata?: NullableOption<KeyValuePair[]>;
    // Possible values are: rest, motion, use.
    state?: ContentState;
}
export interface CustomAction extends InformationProtectionAction {
    // Name of the custom action.
    name?: NullableOption<string>;
    // Properties, in key value pair format, of the action.
    properties?: NullableOption<KeyValuePair[]>;
}
export interface DowngradeJustification {
    // Indicates whether the downgrade is or is not justified.
    isDowngradeJustified?: boolean;
    // Message that indicates why a downgrade is justified. The message will appear in administrative logs.
    justificationMessage?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface InformationProtectionContentLabel {
    // Possible values are: standard, privileged, auto.
    assignmentMethod?: AssignmentMethod;
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    creationDateTime?: NullableOption<string>;
    // Details on the label that is currently applied to the file.
    label?: NullableOption<LabelDetails>;
}
// tslint:disable-next-line: no-empty-interface
export interface JustifyAction extends InformationProtectionAction {}
export interface LabelingOptions {
    // Possible values are: standard, privileged, auto.
    assignmentMethod?: AssignmentMethod;
    // The downgrade justification object that indicates if downgrade was justified and, if so, the reason.
    downgradeJustification?: NullableOption<DowngradeJustification>;
    /**
     * Extended properties will be parsed and returned in the standard MIP labeled metadata format as part of the label
     * information.
     */
    extendedProperties?: NullableOption<KeyValuePair[]>;
    // The GUID of the label that should be applied to the information.
    labelId?: string;
}
export interface MetadataAction extends InformationProtectionAction {
    // A collection of key value pairs that should be added to the file.
    metadataToAdd?: NullableOption<KeyValuePair[]>;
    // A collection of strings that indicate which keys to remove from the file metadata.
    metadataToRemove?: NullableOption<string[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface ProtectAdhocAction extends InformationProtectionAction {}
export interface ProtectByTemplateAction extends InformationProtectionAction {
    // The GUID of the Azure Information Protection template to apply to the information.
    templateId?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface ProtectDoNotForwardAction extends InformationProtectionAction {}
export interface RecommendLabelAction extends InformationProtectionAction {
    // Actions to take if the label is accepted by the user.
    actions?: NullableOption<InformationProtectionAction[]>;
    // Possible values are: manual, automatic, recommended, default.
    actionSource?: ActionSource;
    // The label that is being recommended.
    label?: NullableOption<LabelDetails>;
    // The sensitive information type GUIDs that caused the recommendation to be given.
    responsibleSensitiveTypeIds?: string[];
}
export interface RemoveContentFooterAction extends InformationProtectionAction {
    // The name of the UI element of the footer to be removed.
    uiElementNames?: NullableOption<string[]>;
}
export interface RemoveContentHeaderAction extends InformationProtectionAction {
    // The name of the UI element of the header to be removed.
    uiElementNames?: NullableOption<string[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface RemoveProtectionAction extends InformationProtectionAction {}
export interface RemoveWatermarkAction extends InformationProtectionAction {
    // The name of the UI element of footer to be removed.
    uiElementNames?: NullableOption<string[]>;
}
export interface SigningResult {
    signature?: NullableOption<number>;
    signingKeyId?: NullableOption<string>;
}
export interface VerificationResult {
    signatureValid?: boolean;
}
export interface AndroidEnrollmentCompanyCode {
    // Enrollment Token used by the User to enroll their device.
    enrollmentToken?: NullableOption<string>;
    // String used to generate a QR code for the token.
    qrCodeContent?: NullableOption<string>;
    // Generated QR code for the token.
    qrCodeImage?: NullableOption<MimeContent>;
}
export interface MimeContent {
    // Indicates the content mime type.
    type?: NullableOption<string>;
    // The byte array that contains the actual content.
    value?: NullableOption<number>;
}
export interface AndroidForWorkAppConfigurationSchemaItem {
    /**
     * The type of value this item describes. Possible values are: bool, integer, string, choice, multiselect, bundle,
     * bundleArray, hidden.
     */
    dataType?: AndroidForWorkAppConfigurationSchemaItemDataType;
    // Default value for boolean type items, if specified by the app developer
    defaultBoolValue?: NullableOption<boolean>;
    // Default value for integer type items, if specified by the app developer
    defaultIntValue?: NullableOption<number>;
    // Default value for string array type items, if specified by the app developer
    defaultStringArrayValue?: NullableOption<string[]>;
    // Default value for string type items, if specified by the app developer
    defaultStringValue?: NullableOption<string>;
    // Description of what the item controls within the application
    description?: NullableOption<string>;
    // Human readable name
    displayName?: NullableOption<string>;
    // Unique key the application uses to identify the item
    schemaItemKey?: NullableOption<string>;
    /**
     * List of human readable name/value pairs for the valid values that can be set for this item (Choice and Multiselect
     * items only)
     */
    selections?: NullableOption<KeyValuePair[]>;
}
export interface AndroidManagedStoreAppConfigurationSchemaItem {
    /**
     * The type of value this item describes. Possible values are: bool, integer, string, choice, multiselect, bundle,
     * bundleArray, hidden.
     */
    dataType?: AndroidManagedStoreAppConfigurationSchemaItemDataType;
    // Default value for boolean type items, if specified by the app developer
    defaultBoolValue?: NullableOption<boolean>;
    // Default value for integer type items, if specified by the app developer
    defaultIntValue?: NullableOption<number>;
    // Default value for string array type items, if specified by the app developer
    defaultStringArrayValue?: NullableOption<string[]>;
    // Default value for string type items, if specified by the app developer
    defaultStringValue?: NullableOption<string>;
    // Description of what the item controls within the application
    description?: NullableOption<string>;
    // Human readable name
    displayName?: NullableOption<string>;
    // Unique index the application uses to maintain nested schema items
    index?: number;
    // Index of parent schema item to track nested schema items
    parentIndex?: NullableOption<number>;
    // Unique key the application uses to identify the item
    schemaItemKey?: NullableOption<string>;
    /**
     * List of human readable name/value pairs for the valid values that can be set for this item (Choice and Multiselect
     * items only)
     */
    selections?: NullableOption<KeyValuePair[]>;
}
export interface DeviceAndAppManagementAssignmentTarget {
    // The Id of the filter for the target assignment.
    deviceAndAppManagementAssignmentFilterId?: NullableOption<string>;
    // The type of filter of the target assignment i.e. Exclude or Include. Possible values are: none, include, exclude.
    deviceAndAppManagementAssignmentFilterType?: DeviceAndAppManagementAssignmentFilterType;
}
// tslint:disable-next-line: no-empty-interface
export interface AllDevicesAssignmentTarget extends DeviceAndAppManagementAssignmentTarget {}
// tslint:disable-next-line: no-empty-interface
export interface AllLicensedUsersAssignmentTarget extends DeviceAndAppManagementAssignmentTarget {}
// tslint:disable-next-line: no-empty-interface
export interface MobileAppAssignmentSettings {}
export interface AndroidManagedStoreAppAssignmentSettings extends MobileAppAssignmentSettings {
    // The track IDs to enable for this app assignment.
    androidManagedStoreAppTrackIds?: NullableOption<string[]>;
}
export interface AndroidManagedStoreAppTrack {
    // Friendly name for track.
    trackAlias?: NullableOption<string>;
    // Unique track identifier.
    trackId?: NullableOption<string>;
}
export interface AndroidMinimumOperatingSystem {
    // Version 10.0 or later.
    v10_0?: boolean;
    // Version 11.0 or later.
    v11_0?: boolean;
    // Version 4.0 or later.
    v4_0?: boolean;
    // Version 4.0.3 or later.
    v4_0_3?: boolean;
    // Version 4.1 or later.
    v4_1?: boolean;
    // Version 4.2 or later.
    v4_2?: boolean;
    // Version 4.3 or later.
    v4_3?: boolean;
    // Version 4.4 or later.
    v4_4?: boolean;
    // Version 5.0 or later.
    v5_0?: boolean;
    // Version 5.1 or later.
    v5_1?: boolean;
    // Version 6.0 or later.
    v6_0?: boolean;
    // Version 7.0 or later.
    v7_0?: boolean;
    // Version 7.1 or later.
    v7_1?: boolean;
    // Version 8.0 or later.
    v8_0?: boolean;
    // Version 8.1 or later.
    v8_1?: boolean;
    // Version 9.0 or later.
    v9_0?: boolean;
}
export interface AndroidPermissionAction {
    // Type of Android permission action. Possible values are: prompt, autoGrant, autoDeny.
    action?: AndroidPermissionActionType;
    // Android permission string, defined in the official Android documentation. Example 'android.permission.READ_CONTACTS'.
    permission?: NullableOption<string>;
}
export interface AppConfigurationSettingItem {
    // app configuration key.
    appConfigKey?: string;
    // app configuration key type. Possible values are: stringType, integerType, realType, booleanType, tokenType.
    appConfigKeyType?: MdmAppConfigKeyType;
    // app configuration key value.
    appConfigKeyValue?: string;
}
export interface ConfigurationManagerCollectionAssignmentTarget extends DeviceAndAppManagementAssignmentTarget {
    // The collection Id that is the target of the assignment.
    collectionId?: NullableOption<string>;
}
export interface ExcludedApps {
    // The value for if MS Office Access should be excluded or not.
    access?: boolean;
    // The value for if Microsoft Search as default should be excluded or not.
    bing?: boolean;
    // The value for if MS Office Excel should be excluded or not.
    excel?: boolean;
    // The value for if MS Office OneDrive for Business - Groove should be excluded or not.
    groove?: boolean;
    // The value for if MS Office InfoPath should be excluded or not.
    infoPath?: boolean;
    // The value for if MS Office Skype for Business - Lync should be excluded or not.
    lync?: boolean;
    // The value for if MS Office OneDrive should be excluded or not.
    oneDrive?: boolean;
    // The value for if MS Office OneNote should be excluded or not.
    oneNote?: boolean;
    // The value for if MS Office Outlook should be excluded or not.
    outlook?: boolean;
    // The value for if MS Office PowerPoint should be excluded or not.
    powerPoint?: boolean;
    // The value for if MS Office Publisher should be excluded or not.
    publisher?: boolean;
    // The value for if MS Office SharePointDesigner should be excluded or not.
    sharePointDesigner?: boolean;
    // The value for if MS Office Teams should be excluded or not.
    teams?: boolean;
    // The value for if MS Office Visio should be excluded or not.
    visio?: boolean;
    // The value for if MS Office Word should be excluded or not.
    word?: boolean;
}
export interface GroupAssignmentTarget extends DeviceAndAppManagementAssignmentTarget {
    // The group Id that is the target of the assignment.
    groupId?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface ExclusionGroupAssignmentTarget extends GroupAssignmentTarget {}
export interface FileEncryptionInfo {
    // The key used to encrypt the file content.
    encryptionKey?: NullableOption<number>;
    // The file digest prior to encryption.
    fileDigest?: NullableOption<number>;
    // The file digest algorithm.
    fileDigestAlgorithm?: NullableOption<string>;
    // The initialization vector used for the encryption algorithm.
    initializationVector?: NullableOption<number>;
    // The hash of the encrypted file content + IV (content hash).
    mac?: NullableOption<number>;
    // The key used to get mac.
    macKey?: NullableOption<number>;
    // The the profile identifier.
    profileIdentifier?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosDeviceType {
    // Whether the app should run on iPads.
    iPad?: boolean;
    // Whether the app should run on iPhones and iPods.
    iPhoneAndIPod?: boolean;
}
// tslint:disable-next-line: interface-name
export interface IosLobAppAssignmentSettings extends MobileAppAssignmentSettings {
    // Whether or not the app can be removed by the user.
    isRemovable?: NullableOption<boolean>;
    // Whether or not to uninstall the app when device is removed from Intune.
    uninstallOnDeviceRemoval?: NullableOption<boolean>;
    // The VPN Configuration Id to apply for this app.
    vpnConfigurationId?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosMinimumOperatingSystem {
    // Version 10.0 or later.
    v10_0?: boolean;
    // Version 11.0 or later.
    v11_0?: boolean;
    // Version 12.0 or later.
    v12_0?: boolean;
    // Version 13.0 or later.
    v13_0?: boolean;
    // Version 14.0 or later.
    v14_0?: boolean;
    // Version 8.0 or later.
    v8_0?: boolean;
    // Version 9.0 or later.
    v9_0?: boolean;
}
// tslint:disable-next-line: interface-name
export interface IosStoreAppAssignmentSettings extends MobileAppAssignmentSettings {
    // Whether or not the app can be removed by the user.
    isRemovable?: NullableOption<boolean>;
    // Whether or not to uninstall the app when device is removed from Intune.
    uninstallOnDeviceRemoval?: NullableOption<boolean>;
    // The VPN Configuration Id to apply for this app.
    vpnConfigurationId?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosVppAppAssignmentSettings extends MobileAppAssignmentSettings {
    // Whether or not the app can be removed by the user.
    isRemovable?: NullableOption<boolean>;
    // Whether or not to uninstall the app when device is removed from Intune.
    uninstallOnDeviceRemoval?: NullableOption<boolean>;
    // Whether or not to use device licensing.
    useDeviceLicensing?: boolean;
    // The VPN Configuration Id to apply for this app.
    vpnConfigurationId?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosVppAppRevokeLicensesActionResult {
    /**
     * The reason for the revoke licenses action failure. Possible values are: none, appleFailure, internalError,
     * expiredVppToken, expiredApplePushNotificationCertificate.
     */
    actionFailureReason?: VppTokenActionFailureReason;
    // Action name
    actionName?: NullableOption<string>;
    // State of the action. Possible values are: none, pending, canceled, active, done, failed, notSupported.
    actionState?: ActionState;
    // A count of the number of licenses for which revoke failed.
    failedLicensesCount?: number;
    // Time the action state was last updated
    lastUpdatedDateTime?: string;
    // DeviceId associated with the action.
    managedDeviceId?: NullableOption<string>;
    // Time the action was initiated
    startDateTime?: string;
    // A count of the number of licenses for which revoke was attempted.
    totalLicensesCount?: number;
    // UserId associated with the action.
    userId?: NullableOption<string>;
}
export interface MacOsLobAppAssignmentSettings extends MobileAppAssignmentSettings {
    // Whether or not to uninstall the app when device is removed from Intune.
    uninstallOnDeviceRemoval?: NullableOption<boolean>;
}
export interface MacOSLobChildApp {
    // The build number of MacOS Line of Business (LoB) app.
    buildNumber?: NullableOption<string>;
    // The Identity Name.
    bundleId?: NullableOption<string>;
    // The version number of MacOS Line of Business (LoB) app.
    versionNumber?: NullableOption<string>;
}
export interface MacOSMinimumOperatingSystem {
    // Mac OS 10.10 or later.
    v10_10?: boolean;
    // Mac OS 10.11 or later.
    v10_11?: boolean;
    // Mac OS 10.12 or later.
    v10_12?: boolean;
    // Mac OS 10.13 or later.
    v10_13?: boolean;
    // Mac OS 10.14 or later.
    v10_14?: boolean;
    // Mac OS 10.15 or later.
    v10_15?: boolean;
    // Mac OS 10.7 or later.
    v10_7?: boolean;
    // Mac OS 10.8 or later.
    v10_8?: boolean;
    // Mac OS 10.9 or later.
    v10_9?: boolean;
    // Mac OS 11.0 or later.
    v11_0?: boolean;
}
export interface MacOsVppAppAssignmentSettings extends MobileAppAssignmentSettings {
    // Whether or not to uninstall the app when device is removed from Intune.
    uninstallOnDeviceRemoval?: NullableOption<boolean>;
    // Whether or not to use device licensing.
    useDeviceLicensing?: boolean;
}
export interface MacOsVppAppRevokeLicensesActionResult {
    /**
     * The reason for the revoke licenses action failure. Possible values are: none, appleFailure, internalError,
     * expiredVppToken, expiredApplePushNotificationCertificate.
     */
    actionFailureReason?: VppTokenActionFailureReason;
    // Action name
    actionName?: NullableOption<string>;
    // State of the action. Possible values are: none, pending, canceled, active, done, failed, notSupported.
    actionState?: ActionState;
    // A count of the number of licenses for which revoke failed.
    failedLicensesCount?: number;
    // Time the action state was last updated
    lastUpdatedDateTime?: string;
    // DeviceId associated with the action.
    managedDeviceId?: NullableOption<string>;
    // Time the action was initiated
    startDateTime?: string;
    // A count of the number of licenses for which revoke was attempted.
    totalLicensesCount?: number;
    // UserId associated with the action.
    userId?: NullableOption<string>;
}
export interface MicrosoftStoreForBusinessAppAssignmentSettings extends MobileAppAssignmentSettings {
    // Whether or not to use device execution context for Microsoft Store for Business mobile app.
    useDeviceContext?: boolean;
}
export interface MobileAppInstallTimeSettings {
    // The time at which the app should be installed.
    deadlineDateTime?: NullableOption<string>;
    // The time at which the app should be available for installation.
    startDateTime?: NullableOption<string>;
    // Whether the local device time or UTC time should be used when determining the available and deadline times.
    useLocalTime?: boolean;
}
export interface MobileAppRelationshipState {
    // The corresponding device id.
    deviceId?: NullableOption<string>;
    // The error code for install or uninstall failures of target app.
    errorCode?: number;
    /**
     * The install state of the app of target app. Possible values are: installed, failed, notInstalled, uninstallFailed,
     * pendingInstall, unknown, notApplicable.
     */
    installState?: ResultantAppState;
    /**
     * The install state detail of the app. Possible values are: noAdditionalDetails, dependencyFailedToInstall,
     * dependencyWithRequirementsNotMet, dependencyPendingReboot, dependencyWithAutoInstallDisabled,
     * iosAppStoreUpdateFailedToInstall, vppAppHasUpdateAvailable, userRejectedUpdate, seeInstallErrorCode,
     * autoInstallDisabled, managedAppNoLongerPresent, userRejectedInstall, userIsNotLoggedIntoAppStore,
     * seeUninstallErrorCode, pendingReboot, installingDependencies, contentDownloaded, powerShellScriptRequirementNotMet,
     * registryRequirementNotMet, fileSystemRequirementNotMet, platformNotApplicable, minimumCpuSpeedNotMet,
     * minimumLogicalProcessorCountNotMet, minimumPhysicalMemoryNotMet, minimumOsVersionNotMet, minimumDiskSpaceNotMet,
     * processorArchitectureNotApplicable.
     */
    installStateDetail?: ResultantAppStateDetail;
    // The collection of source mobile app's ids.
    sourceIds?: NullableOption<string[]>;
    // The related target app's display name.
    targetDisplayName?: NullableOption<string>;
    // The related target app's id.
    targetId?: NullableOption<string>;
    // The last sync time of the target app.
    targetLastSyncDateTime?: string;
}
export interface VppLicensingType {
    // Whether the program supports the device licensing type.
    supportDeviceLicensing?: boolean;
    // Whether the program supports the device licensing type.
    supportsDeviceLicensing?: boolean;
    // Whether the program supports the user licensing type.
    supportsUserLicensing?: boolean;
    // Whether the program supports the user licensing type.
    supportUserLicensing?: boolean;
}
export interface Win32LobAppAssignmentSettings extends MobileAppAssignmentSettings {
    /**
     * The delivery optimization priority for this app assignment. This setting is not supported in National Cloud
     * environments. Possible values are: notConfigured, foreground.
     */
    deliveryOptimizationPriority?: Win32LobAppDeliveryOptimizationPriority;
    // The install time settings to apply for this app assignment.
    installTimeSettings?: NullableOption<MobileAppInstallTimeSettings>;
    // The notification status for this app assignment. Possible values are: showAll, showReboot, hideAll.
    notifications?: Win32LobAppNotification;
    // The reboot settings to apply for this app assignment.
    restartSettings?: NullableOption<Win32LobAppRestartSettings>;
}
export interface Win32LobAppRestartSettings {
    // The number of minutes before the restart time to display the countdown dialog for pending restarts.
    countdownDisplayBeforeRestartInMinutes?: number;
    // The number of minutes to wait before restarting the device after an app installation.
    gracePeriodInMinutes?: number;
    // The number of minutes to snooze the restart notification dialog when the snooze button is selected.
    restartNotificationSnoozeDurationInMinutes?: NullableOption<number>;
}
// tslint:disable-next-line: no-empty-interface
export interface Win32LobAppDetection {}
export interface Win32LobAppFileSystemDetection extends Win32LobAppDetection {
    // A value indicating whether this file or folder is for checking 32-bit app on 64-bit system
    check32BitOn64System?: boolean;
    /**
     * The file system detection type. Possible values are: notConfigured, exists, modifiedDate, createdDate, version,
     * sizeInMB, doesNotExist.
     */
    detectionType?: Win32LobAppFileSystemDetectionType;
    // The file or folder detection value
    detectionValue?: NullableOption<string>;
    // The file or folder name to detect Win32 Line of Business (LoB) app
    fileOrFolderName?: NullableOption<string>;
    /**
     * The operator for file or folder detection. Possible values are: notConfigured, equal, notEqual, greaterThan,
     * greaterThanOrEqual, lessThan, lessThanOrEqual.
     */
    operator?: Win32LobAppDetectionOperator;
    // The file or folder path to detect Win32 Line of Business (LoB) app
    path?: NullableOption<string>;
}
export interface Win32LobAppRequirement {
    // The detection value
    detectionValue?: NullableOption<string>;
    /**
     * The operator for detection. Possible values are: notConfigured, equal, notEqual, greaterThan, greaterThanOrEqual,
     * lessThan, lessThanOrEqual.
     */
    operator?: Win32LobAppDetectionOperator;
}
export interface Win32LobAppFileSystemRequirement extends Win32LobAppRequirement {
    // A value indicating whether this file or folder is for checking 32-bit app on 64-bit system
    check32BitOn64System?: boolean;
    /**
     * The file system detection type. Possible values are: notConfigured, exists, modifiedDate, createdDate, version,
     * sizeInMB, doesNotExist.
     */
    detectionType?: Win32LobAppFileSystemDetectionType;
    // The file or folder name to detect Win32 Line of Business (LoB) app
    fileOrFolderName?: NullableOption<string>;
    // The file or folder path to detect Win32 Line of Business (LoB) app
    path?: NullableOption<string>;
}
export interface Win32LobAppRule {
    // The rule type indicating the purpose of the rule. Possible values are: detection, requirement.
    ruleType?: Win32LobAppRuleType;
}
export interface Win32LobAppFileSystemRule extends Win32LobAppRule {
    // A value indicating whether to expand environment variables in the 32-bit context on 64-bit systems.
    check32BitOn64System?: boolean;
    // The file or folder comparison value.
    comparisonValue?: NullableOption<string>;
    // The file or folder name to look up.
    fileOrFolderName?: NullableOption<string>;
    /**
     * The file system operation type. Possible values are: notConfigured, exists, modifiedDate, createdDate, version,
     * sizeInMB, doesNotExist.
     */
    operationType?: Win32LobAppFileSystemOperationType;
    /**
     * The operator for file or folder detection. Possible values are: notConfigured, equal, notEqual, greaterThan,
     * greaterThanOrEqual, lessThan, lessThanOrEqual.
     */
    operator?: Win32LobAppRuleOperator;
    // The file or folder path to look up.
    path?: NullableOption<string>;
}
export interface Win32LobAppInstallExperience {
    // Device restart behavior. Possible values are: basedOnReturnCode, allow, suppress, force.
    deviceRestartBehavior?: Win32LobAppRestartBehavior;
    // Indicates the type of execution context the app runs in. Possible values are: system, user.
    runAsAccount?: RunAsAccountType;
}
export interface Win32LobAppMsiInformation {
    // The MSI package type. Possible values are: perMachine, perUser, dualPurpose.
    packageType?: Win32LobAppMsiPackageType;
    // The MSI product code.
    productCode?: NullableOption<string>;
    // The MSI product name.
    productName?: NullableOption<string>;
    // The MSI product version.
    productVersion?: NullableOption<string>;
    // The MSI publisher.
    publisher?: NullableOption<string>;
    // Whether the MSI app requires the machine to reboot to complete installation.
    requiresReboot?: boolean;
    // The MSI upgrade code.
    upgradeCode?: NullableOption<string>;
}
export interface Win32LobAppPowerShellScriptDetection extends Win32LobAppDetection {
    // A value indicating whether signature check is enforced
    enforceSignatureCheck?: boolean;
    // A value indicating whether this script should run as 32-bit
    runAs32Bit?: boolean;
    // The base64 encoded script content to detect Win32 Line of Business (LoB) app
    scriptContent?: NullableOption<string>;
}
export interface Win32LobAppPowerShellScriptRequirement extends Win32LobAppRequirement {
    /**
     * The detection type for script output. Possible values are: notConfigured, string, dateTime, integer, float, version,
     * boolean.
     */
    detectionType?: Win32LobAppPowerShellScriptDetectionType;
    // The unique display name for this rule
    displayName?: string;
    // A value indicating whether signature check is enforced
    enforceSignatureCheck?: boolean;
    // A value indicating whether this script should run as 32-bit
    runAs32Bit?: boolean;
    // Indicates the type of execution context the script runs in. Possible values are: system, user.
    runAsAccount?: RunAsAccountType;
    // The base64 encoded script content to detect Win32 Line of Business (LoB) app
    scriptContent?: string;
}
export interface Win32LobAppPowerShellScriptRule extends Win32LobAppRule {
    // The script output comparison value. Do not specify a value if the rule is used for detection.
    comparisonValue?: NullableOption<string>;
    // The display name for the rule. Do not specify this value if the rule is used for detection.
    displayName?: NullableOption<string>;
    // A value indicating whether a signature check is enforced.
    enforceSignatureCheck?: boolean;
    /**
     * The script output comparison operation type. Use NotConfigured (the default value) if the rule is used for detection.
     * Possible values are: notConfigured, string, dateTime, integer, float, version, boolean.
     */
    operationType?: Win32LobAppPowerShellScriptRuleOperationType;
    /**
     * The script output operator. Use NotConfigured (the default value) if the rule is used for detection. Possible values
     * are: notConfigured, equal, notEqual, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual.
     */
    operator?: Win32LobAppRuleOperator;
    // A value indicating whether the script should run as 32-bit.
    runAs32Bit?: boolean;
    /**
     * The execution context of the script. Do not specify this value if the rule is used for detection. Script detection
     * rules will run in the same context as the associated app install context. Possible values are: system, user.
     */
    runAsAccount?: NullableOption<RunAsAccountType>;
    // The base64-encoded script content.
    scriptContent?: NullableOption<string>;
}
export interface Win32LobAppProductCodeDetection extends Win32LobAppDetection {
    // The product code of Win32 Line of Business (LoB) app.
    productCode?: NullableOption<string>;
    // The product version of Win32 Line of Business (LoB) app.
    productVersion?: NullableOption<string>;
    /**
     * The operator to detect product version. Possible values are: notConfigured, equal, notEqual, greaterThan,
     * greaterThanOrEqual, lessThan, lessThanOrEqual.
     */
    productVersionOperator?: Win32LobAppDetectionOperator;
}
export interface Win32LobAppProductCodeRule extends Win32LobAppRule {
    // The product code of the app.
    productCode?: NullableOption<string>;
    // The product version comparison value.
    productVersion?: NullableOption<string>;
    /**
     * The product version comparison operator. Possible values are: notConfigured, equal, notEqual, greaterThan,
     * greaterThanOrEqual, lessThan, lessThanOrEqual.
     */
    productVersionOperator?: Win32LobAppRuleOperator;
}
export interface Win32LobAppRegistryDetection extends Win32LobAppDetection {
    // A value indicating whether this registry path is for checking 32-bit app on 64-bit system
    check32BitOn64System?: boolean;
    // The registry data detection type. Possible values are: notConfigured, exists, doesNotExist, string, integer, version.
    detectionType?: Win32LobAppRegistryDetectionType;
    // The registry detection value
    detectionValue?: NullableOption<string>;
    // The registry key path to detect Win32 Line of Business (LoB) app
    keyPath?: NullableOption<string>;
    /**
     * The operator for registry data detection. Possible values are: notConfigured, equal, notEqual, greaterThan,
     * greaterThanOrEqual, lessThan, lessThanOrEqual.
     */
    operator?: Win32LobAppDetectionOperator;
    // The registry value name
    valueName?: NullableOption<string>;
}
export interface Win32LobAppRegistryRequirement extends Win32LobAppRequirement {
    // A value indicating whether this registry path is for checking 32-bit app on 64-bit system
    check32BitOn64System?: boolean;
    // The registry data detection type. Possible values are: notConfigured, exists, doesNotExist, string, integer, version.
    detectionType?: Win32LobAppRegistryDetectionType;
    // The registry key path to detect Win32 Line of Business (LoB) app
    keyPath?: NullableOption<string>;
    // The registry value name
    valueName?: NullableOption<string>;
}
export interface Win32LobAppRegistryRule extends Win32LobAppRule {
    // A value indicating whether to search the 32-bit registry on 64-bit systems.
    check32BitOn64System?: boolean;
    // The registry comparison value.
    comparisonValue?: NullableOption<string>;
    // The full path of the registry entry containing the value to detect.
    keyPath?: NullableOption<string>;
    // The registry operation type. Possible values are: notConfigured, exists, doesNotExist, string, integer, version.
    operationType?: Win32LobAppRegistryRuleOperationType;
    /**
     * The operator for registry detection. Possible values are: notConfigured, equal, notEqual, greaterThan,
     * greaterThanOrEqual, lessThan, lessThanOrEqual.
     */
    operator?: Win32LobAppRuleOperator;
    // The name of the registry value to detect.
    valueName?: NullableOption<string>;
}
export interface Win32LobAppReturnCode {
    // Return code.
    returnCode?: number;
    // The type of return code. Possible values are: failed, success, softReboot, hardReboot, retry.
    type?: Win32LobAppReturnCodeType;
}
export interface WindowsAppXAppAssignmentSettings extends MobileAppAssignmentSettings {
    // Whether or not to use device execution context for Windows AppX mobile app.
    useDeviceContext?: boolean;
}
export interface WindowsMinimumOperatingSystem {
    // Windows version 10.0 or later.
    v10_0?: boolean;
    // Windows 10 1607 or later.
    v10_1607?: boolean;
    // Windows 10 1703 or later.
    v10_1703?: boolean;
    // Windows 10 1709 or later.
    v10_1709?: boolean;
    // Windows 10 1803 or later.
    v10_1803?: boolean;
    // Windows 10 1809 or later.
    v10_1809?: boolean;
    // Windows 10 1903 or later.
    v10_1903?: boolean;
    // Windows 10 1909 or later.
    v10_1909?: boolean;
    // Windows 10 2004 or later.
    v10_2004?: boolean;
    // Windows 10 21H1 or later.
    v10_21H1?: boolean;
    // Windows 10 2H20 or later.
    v10_2H20?: boolean;
    // Windows version 8.0 or later.
    v8_0?: boolean;
    // Windows version 8.1 or later.
    v8_1?: boolean;
}
export interface WindowsPackageInformation {
    // The Windows architecture for which this app can run on. Possible values are: none, x86, x64, arm, neutral, arm64.
    applicableArchitecture?: WindowsArchitecture;
    // The Display Name.
    displayName?: NullableOption<string>;
    // The Identity Name.
    identityName?: NullableOption<string>;
    // The Identity Publisher.
    identityPublisher?: NullableOption<string>;
    // The Identity Resource Identifier.
    identityResourceIdentifier?: NullableOption<string>;
    // The Identity Version.
    identityVersion?: NullableOption<string>;
    // The value for the minimum applicable operating system.
    minimumSupportedOperatingSystem?: NullableOption<WindowsMinimumOperatingSystem>;
}
export interface WindowsUniversalAppXAppAssignmentSettings extends MobileAppAssignmentSettings {
    // Whether or not to use device execution context for Windows Universal AppX mobile app.
    useDeviceContext?: boolean;
}
export interface AuditActor {
    // Name of the Application.
    applicationDisplayName?: NullableOption<string>;
    // AAD Application Id.
    applicationId?: NullableOption<string>;
    // IPAddress.
    ipAddress?: NullableOption<string>;
    // Remote Tenant Id
    remoteTenantId?: NullableOption<string>;
    // Remote User Id
    remoteUserId?: NullableOption<string>;
    // Service Principal Name (SPN).
    servicePrincipalName?: NullableOption<string>;
    // Actor Type.
    type?: NullableOption<string>;
    // User Id.
    userId?: NullableOption<string>;
    // List of user permissions when the audit was performed.
    userPermissions?: NullableOption<string[]>;
    // User Principal Name (UPN).
    userPrincipalName?: NullableOption<string>;
    // List of user scope tags when the audit was performed.
    userRoleScopeTags?: NullableOption<RoleScopeTagInfo[]>;
}
export interface RoleScopeTagInfo {
    // Scope Tag Display name.
    displayName?: NullableOption<string>;
    // Scope Tag Id.
    roleScopeTagId?: NullableOption<string>;
}
export interface AuditProperty {
    // Display name.
    displayName?: NullableOption<string>;
    // New value.
    newValue?: NullableOption<string>;
    // Old value.
    oldValue?: NullableOption<string>;
}
export interface AuditResource {
    // Display name.
    displayName?: NullableOption<string>;
    // List of modified properties.
    modifiedProperties?: NullableOption<AuditProperty[]>;
    // Audit resource's Id.
    resourceId?: NullableOption<string>;
    // Audit resource's type.
    type?: NullableOption<string>;
}
export interface AssignmentFilterEvaluationSummary {
    // The admin defined name for assignment filter.
    assignmentFilterDisplayName?: NullableOption<string>;
    // Unique identifier for the assignment filter object
    assignmentFilterId?: NullableOption<string>;
    // The time the assignment filter was last modified.
    assignmentFilterLastModifiedDateTime?: string;
    /**
     * The platform for which this assignment filter is created. Possible values are: android, androidForWork, iOS, macOS,
     * windowsPhone81, windows81AndLater, windows10AndLater, androidWorkProfile, unknown.
     */
    assignmentFilterPlatform?: DevicePlatformType;
    // Indicate filter type either include or exclude. Possible values are: none, include, exclude.
    assignmentFilterType?: DeviceAndAppManagementAssignmentFilterType;
    // A collection of filter types and their corresponding evaluation results.
    assignmentFilterTypeAndEvaluationResults?: NullableOption<AssignmentFilterTypeAndEvaluationResult[]>;
    // The time assignment filter was evaluated.
    evaluationDateTime?: string;
    /**
     * Assignment filter evaluation result. Possible values are: unknown, match, notMatch, inconclusive, failure,
     * notEvaluated.
     */
    evaluationResult?: AssignmentFilterEvaluationResult;
}
export interface AssignmentFilterTypeAndEvaluationResult {
    // Represents the filter type. Possible values are: none, include, exclude.
    assignmentFilterType?: DeviceAndAppManagementAssignmentFilterType;
    /**
     * Represents the evalaution result of the filter. Possible values are: unknown, match, notMatch, inconclusive, failure,
     * notEvaluated.
     */
    evaluationResult?: AssignmentFilterEvaluationResult;
}
export interface AssignmentFilterState {
    // Indicator to if AssignmentFilter is enabled or disabled.
    enabled?: boolean;
}
export interface AssignmentFilterStatusDetails {
    // Device properties used for filter evaluation during device check-in time.
    deviceProperties?: NullableOption<KeyValuePair[]>;
    // Evaluation result summaries for each filter associated to device and payload
    evalutionSummaries?: NullableOption<AssignmentFilterEvaluationSummary[]>;
    // Unique identifier for the device object.
    managedDeviceId?: NullableOption<string>;
    // Unique identifier for payload object.
    payloadId?: NullableOption<string>;
    // Unique identifier for UserId object. Can be null
    userId?: NullableOption<string>;
}
export interface AssignmentFilterSupportedProperty {
    // The data type of the property.
    dataType?: NullableOption<string>;
    // Indicates whether the property is a collection type or not.
    isCollection?: boolean;
    // Name of the property.
    name?: NullableOption<string>;
    // Regex string to do validation on the property value.
    propertyRegexConstraint?: NullableOption<string>;
    // List of all supported operators on this property.
    supportedOperators?: AssignmentFilterOperator[];
    // List of all supported values for this propery, empty if everything is supported.
    supportedValues?: NullableOption<string[]>;
}
export interface AssignmentFilterValidationResult {
    // Indicator to valid or invalid rule.
    isValidRule?: boolean;
}
export interface HasPayloadLinkResultItem {
    // Exception information indicates if check for this item was successful or not.Empty string for no error.
    error?: NullableOption<string>;
    // Indicate whether a payload has any link or not.
    hasLink?: NullableOption<boolean>;
    // Key of the Payload, In the format of Guid.
    payloadId?: NullableOption<string>;
    // The reason where the link comes from.
    sources?: DeviceAndAppManagementAssignmentSource[];
}
export interface DeviceManagementApplicabilityRuleDeviceMode {
    // Applicability rule for device mode. Possible values are: standardConfiguration, sModeConfiguration.
    deviceMode?: Windows10DeviceModeType;
    // Name for object.
    name?: NullableOption<string>;
    // Applicability Rule type. Possible values are: include, exclude.
    ruleType?: DeviceManagementApplicabilityRuleType;
}
export interface DeviceManagementApplicabilityRuleOsEdition {
    // Name for object.
    name?: NullableOption<string>;
    // Applicability rule OS edition type.
    osEditionTypes?: Windows10EditionType[];
    // Applicability Rule type. Possible values are: include, exclude.
    ruleType?: DeviceManagementApplicabilityRuleType;
}
export interface DeviceManagementApplicabilityRuleOsVersion {
    // Max OS version for Applicability Rule.
    maxOSVersion?: NullableOption<string>;
    // Min OS version for Applicability Rule.
    minOSVersion?: NullableOption<string>;
    // Name for object.
    name?: NullableOption<string>;
    // Applicability Rule type. Possible values are: include, exclude.
    ruleType?: DeviceManagementApplicabilityRuleType;
}
export interface WindowsEnrollmentStatusScreenSettings {
    // Allow or block user to use device before profile and app installation complete
    allowDeviceUseBeforeProfileAndAppInstallComplete?: boolean;
    // Allow the user to continue using the device on installation failure
    allowDeviceUseOnInstallFailure?: boolean;
    // Allow or block log collection on installation failure
    allowLogCollectionOnInstallFailure?: boolean;
    // Allow the user to retry the setup on installation failure
    blockDeviceSetupRetryByUser?: boolean;
    // Set custom error message to show upon installation failure
    customErrorMessage?: NullableOption<string>;
    // Show or hide installation progress to user
    hideInstallationProgress?: boolean;
    // Set installation progress timeout in minutes
    installProgressTimeoutInMinutes?: NullableOption<number>;
}
export interface OutOfBoxExperienceSettings {
    // AAD join authentication type. Possible values are: singleUser, shared.
    deviceUsageType?: WindowsDeviceUsageType;
    // If set to true, then the user can't start over with different account, on company sign-in
    hideEscapeLink?: boolean;
    // Show or hide EULA to user
    hideEULA?: boolean;
    // Show or hide privacy settings to user
    hidePrivacySettings?: boolean;
    // If set, then skip the keyboard selection page if Language and Region are set
    skipKeyboardSelectionPage?: boolean;
    // Type of user. Possible values are: administrator, standard.
    userType?: WindowsUserType;
}
export interface OfficeClientCheckinStatus {
    // List of policies delivered to the device as last checkin.
    appliedPolicies?: NullableOption<string[]>;
    // Last device check-in time in UTC.
    checkinDateTime?: string;
    // Device name trying to check-in.
    deviceName?: NullableOption<string>;
    // Device platform trying to check-in.
    devicePlatform?: NullableOption<string>;
    // Device platform version trying to check-in.
    devicePlatformVersion?: NullableOption<string>;
    // Error message if any associated for the last checkin.
    errorMessage?: NullableOption<string>;
    // User identifier using the device.
    userId?: string;
    // User principal name using the device.
    userPrincipalName?: NullableOption<string>;
    // If the last checkin was successful.
    wasSuccessful?: boolean;
}
// tslint:disable-next-line: no-empty-interface
export interface OfficeConfigurationAssignmentTarget {}
export interface OfficeConfigurationGroupAssignmentTarget extends OfficeConfigurationAssignmentTarget {
    // The Id of the AAD group we are targeting the device configuration to.
    groupId?: NullableOption<string>;
}
export interface OfficeUserCheckinSummary {
    // Total failed user check ins for the last 3 months.
    failedUserCount?: number;
    // Total successful user check ins for the last 3 months.
    succeededUserCount?: number;
}
export interface AirPrintDestination {
    /**
     * If true AirPrint connections are secured by Transport Layer Security (TLS). Default is false. Available in iOS 11.0 and
     * later.
     */
    forceTls?: boolean;
    // The IP Address of the AirPrint destination.
    ipAddress?: string;
    /**
     * The listening port of the AirPrint destination. If this key is not specified AirPrint will use the default port.
     * Available in iOS 11.0 and later.
     */
    port?: NullableOption<number>;
    /**
     * The Resource Path associated with the printer. This corresponds to the rp parameter of the _ipps.tcp Bonjour record.
     * For example: printers/Canon_MG5300_series, printers/Xerox_Phaser_7600, ipp/print, Epson_IPP_Printer.
     */
    resourcePath?: string;
}
// tslint:disable-next-line: no-empty-interface
export interface AndroidDeviceOwnerGlobalProxy {}
export interface AndroidDeviceOwnerGlobalProxyAutoConfig extends AndroidDeviceOwnerGlobalProxy {
    // The proxy auto-config URL
    proxyAutoConfigURL?: string;
}
export interface AndroidDeviceOwnerGlobalProxyDirect extends AndroidDeviceOwnerGlobalProxy {
    // The excluded hosts
    excludedHosts?: NullableOption<string[]>;
    // The host name
    host?: string;
    // The port
    port?: number;
}
// tslint:disable-next-line: no-empty-interface
export interface AndroidDeviceOwnerKioskModeHomeScreenItem {}
// tslint:disable-next-line: no-empty-interface
export interface AndroidDeviceOwnerKioskModeFolderItem extends AndroidDeviceOwnerKioskModeHomeScreenItem {}
export interface AndroidDeviceOwnerKioskModeApp extends AndroidDeviceOwnerKioskModeFolderItem {
    // Class name of application
    className?: NullableOption<string>;
    // Package name of application
    package?: string;
}
export interface AndroidDeviceOwnerKioskModeAppPositionItem {
    // Item to be arranged
    item?: AndroidDeviceOwnerKioskModeHomeScreenItem;
    // Position of the item on the grid. Valid values 0 to 9999999
    position?: number;
}
export interface AndroidDeviceOwnerKioskModeManagedFolder {
    // Unique identifier for the folder
    folderIdentifier?: NullableOption<string>;
    // Display name for the folder
    folderName?: string;
    // Items to be added to managed folder. This collection can contain a maximum of 500 elements.
    items?: AndroidDeviceOwnerKioskModeFolderItem[];
}
export interface AndroidDeviceOwnerKioskModeManagedFolderReference extends AndroidDeviceOwnerKioskModeHomeScreenItem {
    // Unique identifier for the folder
    folderIdentifier?: NullableOption<string>;
    // Name of the folder
    folderName?: string;
}
export interface AndroidDeviceOwnerKioskModeWeblink extends AndroidDeviceOwnerKioskModeFolderItem {
    // Display name for weblink
    label?: NullableOption<string>;
    // Link for weblink
    link?: NullableOption<string>;
}
export interface AppListItem {
    // The application or bundle identifier of the application
    appId?: NullableOption<string>;
    // The Store URL of the application
    appStoreUrl?: NullableOption<string>;
    // The application name
    name?: string;
    // The publisher of the application
    publisher?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface AppleAppListItem extends AppListItem {}
export interface AppleVpnAlwaysOnConfiguration {
    /**
     * Determine whether AirPrint service will be exempt from the always-on VPN connection. Possible values are:
     * forceTrafficViaVPN, allowTrafficOutside, dropTraffic.
     */
    airPrintExceptionAction?: NullableOption<VpnServiceExceptionAction>;
    // Specifies whether traffic from all captive network plugins should be allowed outside the vpn
    allowAllCaptiveNetworkPlugins?: NullableOption<boolean>;
    // Determines whether traffic from the Websheet app is allowed outside of the VPN
    allowCaptiveWebSheet?: NullableOption<boolean>;
    // Determines whether all, some, or no non-native captive networking apps are allowed
    allowedCaptiveNetworkPlugins?: NullableOption<SpecifiedCaptiveNetworkPlugins>;
    /**
     * Determine whether Cellular service will be exempt from the always-on VPN connection. Possible values are:
     * forceTrafficViaVPN, allowTrafficOutside, dropTraffic.
     */
    cellularExceptionAction?: NullableOption<VpnServiceExceptionAction>;
    // Specifies how often in seconds to send a network address translation keepalive package through the VPN
    natKeepAliveIntervalInSeconds?: NullableOption<number>;
    // Enable hardware offloading of NAT keepalive signals when the device is asleep
    natKeepAliveOffloadEnable?: NullableOption<boolean>;
    /**
     * Determines what connections the specific tunnel configuration applies to. Possible values are: wifiAndCellular,
     * cellular, wifi.
     */
    tunnelConfiguration?: VpnTunnelConfigurationType;
    // Allow the user to toggle the VPN configuration using the UI
    userToggleEnabled?: NullableOption<boolean>;
    /**
     * Determine whether voicemail service will be exempt from the always-on VPN connection. Possible values are:
     * forceTrafficViaVPN, allowTrafficOutside, dropTraffic.
     */
    voicemailExceptionAction?: NullableOption<VpnServiceExceptionAction>;
}
export interface SpecifiedCaptiveNetworkPlugins {
    // Address of the IKEv2 server. Must be a FQDN, UserFQDN, network address, or ASN1DN
    allowedBundleIdentifiers?: NullableOption<string[]>;
}
export interface BitLockerFixedDrivePolicy {
    // Select the encryption method for fixed drives. Possible values are: aesCbc128, aesCbc256, xtsAes128, xtsAes256.
    encryptionMethod?: NullableOption<BitLockerEncryptionMethod>;
    /**
     * This policy setting allows you to control how BitLocker-protected fixed data drives are recovered in the absence of the
     * required credentials. This policy setting is applied when you turn on BitLocker.
     */
    recoveryOptions?: NullableOption<BitLockerRecoveryOptions>;
    /**
     * This policy setting determines whether BitLocker protection is required for fixed data drives to be writable on a
     * computer.
     */
    requireEncryptionForWriteAccess?: boolean;
}
export interface BitLockerRecoveryOptions {
    // Indicates whether to block certificate-based data recovery agent.
    blockDataRecoveryAgent?: boolean;
    // Indicates whether or not to enable BitLocker until recovery information is stored in AD DS.
    enableBitLockerAfterRecoveryInformationToStore?: boolean;
    // Indicates whether or not to allow BitLocker recovery information to store in AD DS.
    enableRecoveryInformationSaveToStore?: boolean;
    // Indicates whether or not to allow showing recovery options in BitLocker Setup Wizard for fixed or system disk.
    hideRecoveryOptions?: boolean;
    /**
     * Configure what pieces of BitLocker recovery information are stored to AD DS. Possible values are: passwordAndKey,
     * passwordOnly.
     */
    recoveryInformationToStore?: BitLockerRecoveryInformationType;
    /**
     * Indicates whether users are allowed or required to generate a 256-bit recovery key for fixed or system disk. Possible
     * values are: blocked, required, allowed, notConfigured.
     */
    recoveryKeyUsage?: ConfigurationUsage;
    /**
     * Indicates whether users are allowed or required to generate a 48-digit recovery password for fixed or system disk.
     * Possible values are: blocked, required, allowed, notConfigured.
     */
    recoveryPasswordUsage?: ConfigurationUsage;
}
export interface BitLockerRemovableDrivePolicy {
    /**
     * This policy setting determines whether BitLocker protection is required for removable data drives to be writable on a
     * computer.
     */
    blockCrossOrganizationWriteAccess?: boolean;
    // Select the encryption method for removable drives. Possible values are: aesCbc128, aesCbc256, xtsAes128, xtsAes256.
    encryptionMethod?: NullableOption<BitLockerEncryptionMethod>;
    /**
     * Indicates whether to block write access to devices configured in another organization. If
     * requireEncryptionForWriteAccess is false, this value does not affect.
     */
    requireEncryptionForWriteAccess?: boolean;
}
export interface BitLockerSystemDrivePolicy {
    /**
     * Select the encryption method for operating system drives. Possible values are: aesCbc128, aesCbc256, xtsAes128,
     * xtsAes256.
     */
    encryptionMethod?: NullableOption<BitLockerEncryptionMethod>;
    // Indicates the minimum length of startup pin. Valid values 4 to 20
    minimumPinLength?: NullableOption<number>;
    // Enable pre-boot recovery message and Url. If requireStartupAuthentication is false, this value does not affect.
    prebootRecoveryEnableMessageAndUrl?: boolean;
    // Defines a custom recovery message.
    prebootRecoveryMessage?: NullableOption<string>;
    // Defines a custom recovery URL.
    prebootRecoveryUrl?: NullableOption<string>;
    /**
     * Allows to recover BitLocker encrypted operating system drives in the absence of the required startup key information.
     * This policy setting is applied when you turn on BitLocker.
     */
    recoveryOptions?: NullableOption<BitLockerRecoveryOptions>;
    /**
     * Indicates whether to allow BitLocker without a compatible TPM (requires a password or a startup key on a USB flash
     * drive).
     */
    startupAuthenticationBlockWithoutTpmChip?: boolean;
    // Require additional authentication at startup.
    startupAuthenticationRequired?: boolean;
    /**
     * Indicates if TPM startup key is allowed/required/disallowed. Possible values are: blocked, required, allowed,
     * notConfigured.
     */
    startupAuthenticationTpmKeyUsage?: ConfigurationUsage;
    /**
     * Indicates if TPM startup pin key and key are allowed/required/disallowed. Possible values are: blocked, required,
     * allowed, notConfigured.
     */
    startupAuthenticationTpmPinAndKeyUsage?: ConfigurationUsage;
    /**
     * Indicates if TPM startup pin is allowed/required/disallowed. Possible values are: blocked, required, allowed,
     * notConfigured.
     */
    startupAuthenticationTpmPinUsage?: ConfigurationUsage;
    /**
     * Indicates if TPM startup is allowed/required/disallowed. Possible values are: blocked, required, allowed,
     * notConfigured.
     */
    startupAuthenticationTpmUsage?: ConfigurationUsage;
}
// tslint:disable-next-line: no-empty-interface
export interface SingleSignOnExtension {}
export interface CredentialSingleSignOnExtension extends SingleSignOnExtension {
    /**
     * Gets or sets a list of typed key-value pairs used to configure Credential-type profiles. This collection can contain a
     * maximum of 500 elements.
     */
    configurations?: NullableOption<KeyTypedValuePair[]>;
    // Gets or sets a list of hosts or domain names for which the app extension performs SSO.
    domains?: NullableOption<string[]>;
    // Gets or sets the bundle ID of the app extension that performs SSO for the specified URLs.
    extensionIdentifier?: string;
    // Gets or sets the case-sensitive realm name for this profile.
    realm?: string;
    // Gets or sets the team ID of the app extension that performs SSO for the specified URLs.
    teamIdentifier?: NullableOption<string>;
}
export interface KeyTypedValuePair {
    // The string key of the key-value pair.
    key?: string;
}
export interface CryptographySuite {
    // Authentication Transform Constants. Possible values are: md5_96, sha1_96, sha_256_128, aes128Gcm, aes192Gcm, aes256Gcm.
    authenticationTransformConstants?: NullableOption<AuthenticationTransformConstant>;
    /**
     * Cipher Transform Constants. Possible values are: aes256, des, tripleDes, aes128, aes128Gcm, aes256Gcm, aes192,
     * aes192Gcm.
     */
    cipherTransformConstants?: NullableOption<VpnEncryptionAlgorithmType>;
    // Diffie Hellman Group. Possible values are: group1, group2, group14, ecp256, ecp384, group24.
    dhGroup?: NullableOption<DiffieHellmanGroup>;
    // Encryption Method. Possible values are: aes256, des, tripleDes, aes128, aes128Gcm, aes256Gcm, aes192, aes192Gcm.
    encryptionMethod?: NullableOption<VpnEncryptionAlgorithmType>;
    // Integrity Check Method. Possible values are: sha2_256, sha1_96, sha1_160, sha2_384, sha2_512, md5.
    integrityCheckMethod?: NullableOption<VpnIntegrityAlgorithmType>;
    // Perfect Forward Secrecy Group. Possible values are: pfs1, pfs2, pfs2048, ecp256, ecp384, pfsMM, pfs24.
    pfsGroup?: NullableOption<PerfectForwardSecrecyGroup>;
}
export interface CustomSubjectAlternativeName {
    // Custom SAN Name
    name?: NullableOption<string>;
    /**
     * Custom SAN Type. Possible values are: none, emailAddress, userPrincipalName, customAzureADAttribute, domainNameService,
     * universalResourceIdentifier.
     */
    sanType?: SubjectAlternativeNameType;
}
export interface CustomUpdateTimeWindow {
    // End day of the time window. Possible values are: sunday, monday, tuesday, wednesday, thursday, friday, saturday.
    endDay?: DayOfWeek;
    // End time of the time window
    endTime?: string;
    // Start day of the time window. Possible values are: sunday, monday, tuesday, wednesday, thursday, friday, saturday.
    startDay?: DayOfWeek;
    // Start time of the time window
    startTime?: string;
}
export interface DefenderDetectedMalwareActions {
    /**
     * Indicates a Defender action to take for high severity Malware threat detected. Possible values are: deviceDefault,
     * clean, quarantine, remove, allow, userDefined, block.
     */
    highSeverity?: DefenderThreatAction;
    /**
     * Indicates a Defender action to take for low severity Malware threat detected. Possible values are: deviceDefault,
     * clean, quarantine, remove, allow, userDefined, block.
     */
    lowSeverity?: DefenderThreatAction;
    /**
     * Indicates a Defender action to take for moderate severity Malware threat detected. Possible values are: deviceDefault,
     * clean, quarantine, remove, allow, userDefined, block.
     */
    moderateSeverity?: DefenderThreatAction;
    /**
     * Indicates a Defender action to take for severe severity Malware threat detected. Possible values are: deviceDefault,
     * clean, quarantine, remove, allow, userDefined, block.
     */
    severeSeverity?: DefenderThreatAction;
}
// tslint:disable-next-line: no-empty-interface
export interface DeliveryOptimizationBandwidth {}
export interface DeliveryOptimizationBandwidthAbsolute extends DeliveryOptimizationBandwidth {
    /**
     * The value 0 (zero) means that Delivery Optimization dynamically adjusts to use the available bandwidth for downloads.
     * Valid values 0 to 4294967295
     */
    maximumDownloadBandwidthInKilobytesPerSecond?: NullableOption<number>;
    /**
     * The default value is 0, which permits unlimited possible bandwidth (optimized for minimal usage of upload bandwidth).
     * Valid values 0 to 4000000
     */
    maximumUploadBandwidthInKilobytesPerSecond?: NullableOption<number>;
}
export interface DeliveryOptimizationBandwidthBusinessHoursLimit {
    // Specifies the beginning of business hours using a 24-hour clock (0-23). Valid values 0 to 23
    bandwidthBeginBusinessHours?: number;
    // Specifies the end of business hours using a 24-hour clock (0-23). Valid values 0 to 23
    bandwidthEndBusinessHours?: number;
    // Specifies the percentage of bandwidth to limit during business hours (0-100). Valid values 0 to 100
    bandwidthPercentageDuringBusinessHours?: number;
    // Specifies the percentage of bandwidth to limit outsidse business hours (0-100). Valid values 0 to 100
    bandwidthPercentageOutsideBusinessHours?: number;
}
export interface DeliveryOptimizationBandwidthHoursWithPercentage extends DeliveryOptimizationBandwidth {
    // Background download percentage hours.
    bandwidthBackgroundPercentageHours?: NullableOption<DeliveryOptimizationBandwidthBusinessHoursLimit>;
    // Foreground download percentage hours.
    bandwidthForegroundPercentageHours?: NullableOption<DeliveryOptimizationBandwidthBusinessHoursLimit>;
}
export interface DeliveryOptimizationBandwidthPercentage extends DeliveryOptimizationBandwidth {
    /**
     * The default value 0 (zero) means that Delivery Optimization dynamically adjusts to use the available bandwidth for
     * background downloads. Valid values 0 to 100
     */
    maximumBackgroundBandwidthPercentage?: NullableOption<number>;
    /**
     * The default value 0 (zero) means that Delivery Optimization dynamically adjusts to use the available bandwidth for
     * foreground downloads. Valid values 0 to 100
     */
    maximumForegroundBandwidthPercentage?: NullableOption<number>;
}
// tslint:disable-next-line: no-empty-interface
export interface DeliveryOptimizationGroupIdSource {}
export interface DeliveryOptimizationGroupIdCustom extends DeliveryOptimizationGroupIdSource {
    // Specifies an arbitrary group ID that the device belongs to
    groupIdCustom?: string;
}
export interface DeliveryOptimizationGroupIdSourceOptions extends DeliveryOptimizationGroupIdSource {
    /**
     * Set this policy to restrict peer selection to a specific source. Possible values are: notConfigured, adSite,
     * authenticatedDomainSid, dhcpUserOption, dnsSuffix.
     */
    groupIdSourceOption?: DeliveryOptimizationGroupIdOptionsType;
}
// tslint:disable-next-line: no-empty-interface
export interface DeliveryOptimizationMaxCacheSize {}
export interface DeliveryOptimizationMaxCacheSizeAbsolute extends DeliveryOptimizationMaxCacheSize {
    /**
     * The value 0 (zero) means "unlimited" cache. Delivery Optimization will clear the cache when the device is running low
     * on disk space. Valid values 0 to 4294967295
     */
    maximumCacheSizeInGigabytes?: number;
}
export interface DeliveryOptimizationMaxCacheSizePercentage extends DeliveryOptimizationMaxCacheSize {
    /**
     * Specifies the maximum cache size that Delivery Optimization can utilize, as a percentage of disk size (1-100). Valid
     * values 1 to 100
     */
    maximumCacheSizePercentage?: number;
}
export interface DeviceCompliancePolicyScript {
    // Device compliance script Id.
    deviceComplianceScriptId?: NullableOption<string>;
    // Json of the rules.
    rulesContent?: NullableOption<number>;
}
export interface DeviceCompliancePolicySettingState {
    // Current value of setting on device
    currentValue?: NullableOption<string>;
    // Error code for the setting
    errorCode?: number;
    // Error description
    errorDescription?: NullableOption<string>;
    // Name of setting instance that is being reported.
    instanceDisplayName?: NullableOption<string>;
    // The setting that is being reported
    setting?: NullableOption<string>;
    // SettingInstanceId
    settingInstanceId?: NullableOption<string>;
    // Localized/user friendly setting name that is being reported
    settingName?: NullableOption<string>;
    // Contributing policies
    sources?: NullableOption<SettingSource[]>;
    /**
     * The compliance state of the setting. Possible values are: unknown, notApplicable, compliant, remediated, nonCompliant,
     * error, conflict, notAssigned.
     */
    state?: ComplianceStatus;
    // UserEmail
    userEmail?: NullableOption<string>;
    // UserId
    userId?: NullableOption<string>;
    // UserName
    userName?: NullableOption<string>;
    // UserPrincipalName.
    userPrincipalName?: NullableOption<string>;
}
export interface SettingSource {
    // Not yet documented
    displayName?: NullableOption<string>;
    // Not yet documented
    id?: NullableOption<string>;
    // Not yet documented. Possible values are: deviceConfiguration, deviceIntent.
    sourceType?: SettingSourceType;
}
export interface DeviceComplianceScriptError {
    /**
     * Error code. Possible values are: none, jsonFileInvalid, jsonFileMissing, jsonFileTooLarge, rulesMissing,
     * duplicateRules, tooManyRulesSpecified, operatorMissing, operatorNotSupported, datatypeMissing, datatypeNotSupported,
     * operatorDataTypeCombinationNotSupported, moreInfoUriMissing, moreInfoUriInvalid, moreInfoUriTooLarge,
     * descriptionMissing, descriptionInvalid, descriptionTooLarge, titleMissing, titleInvalid, titleTooLarge, operandMissing,
     * operandInvalid, operandTooLarge, settingNameMissing, settingNameInvalid, settingNameTooLarge, englishLocaleMissing,
     * duplicateLocales, unrecognizedLocale, unknown, remediationStringsMissing.
     */
    code?: Code;
    /**
     * Error code. Possible values are: none, jsonFileInvalid, jsonFileMissing, jsonFileTooLarge, rulesMissing,
     * duplicateRules, tooManyRulesSpecified, operatorMissing, operatorNotSupported, datatypeMissing, datatypeNotSupported,
     * operatorDataTypeCombinationNotSupported, moreInfoUriMissing, moreInfoUriInvalid, moreInfoUriTooLarge,
     * descriptionMissing, descriptionInvalid, descriptionTooLarge, titleMissing, titleInvalid, titleTooLarge, operandMissing,
     * operandInvalid, operandTooLarge, settingNameMissing, settingNameInvalid, settingNameTooLarge, englishLocaleMissing,
     * duplicateLocales, unrecognizedLocale, unknown, remediationStringsMissing.
     */
    deviceComplianceScriptRulesValidationError?: DeviceComplianceScriptRulesValidationError;
    // Error message.
    message?: NullableOption<string>;
}
export interface DeviceComplianceScriptRule {
    /**
     * Data type specified in the rule. Possible values are: none, boolean, int64, double, string, dateTime, version, base64,
     * xml, booleanArray, int64Array, doubleArray, stringArray, dateTimeArray, versionArray.
     */
    dataType?: DataType;
    /**
     * Data type specified in the rule. Possible values are: none, boolean, int64, double, string, dateTime, version, base64,
     * xml, booleanArray, int64Array, doubleArray, stringArray, dateTimeArray, versionArray.
     */
    deviceComplianceScriptRuleDataType?: DeviceComplianceScriptRuleDataType;
    /**
     * Operator specified in the rule. Possible values are: none, and, or, isEquals, notEquals, greaterThan, lessThan,
     * between, notBetween, greaterEquals, lessEquals, dayTimeBetween, beginsWith, notBeginsWith, endsWith, notEndsWith,
     * contains, notContains, allOf, oneOf, noneOf, setEquals, orderedSetEquals, subsetOf, excludesAll.
     */
    deviceComplianceScriptRulOperator?: DeviceComplianceScriptRulOperator;
    // Operand specified in the rule.
    operand?: NullableOption<string>;
    /**
     * Operator specified in the rule. Possible values are: none, and, or, isEquals, notEquals, greaterThan, lessThan,
     * between, notBetween, greaterEquals, lessEquals, dayTimeBetween, beginsWith, notBeginsWith, endsWith, notEndsWith,
     * contains, notContains, allOf, oneOf, noneOf, setEquals, orderedSetEquals, subsetOf, excludesAll.
     */
    operator?: Operator;
    // Setting name specified in the rule.
    settingName?: NullableOption<string>;
}
export interface DeviceComplianceScriptRuleError extends DeviceComplianceScriptError {
    // Setting name for the rule with error.
    settingName?: NullableOption<string>;
}
export interface DeviceComplianceScriptValidationResult {
    // Errors in json for the script for rules.
    ruleErrors?: NullableOption<DeviceComplianceScriptRuleError[]>;
    // Parsed rules from json.
    rules?: NullableOption<DeviceComplianceScriptRule[]>;
    // Errors in json for the script.
    scriptErrors?: NullableOption<DeviceComplianceScriptError[]>;
}
export interface DeviceConfigurationSettingState {
    // Current value of setting on device
    currentValue?: NullableOption<string>;
    // Error code for the setting
    errorCode?: number;
    // Error description
    errorDescription?: NullableOption<string>;
    // Name of setting instance that is being reported.
    instanceDisplayName?: NullableOption<string>;
    // The setting that is being reported
    setting?: NullableOption<string>;
    // SettingInstanceId
    settingInstanceId?: NullableOption<string>;
    // Localized/user friendly setting name that is being reported
    settingName?: NullableOption<string>;
    // Contributing policies
    sources?: NullableOption<SettingSource[]>;
    /**
     * The compliance state of the setting. Possible values are: unknown, notApplicable, compliant, remediated, nonCompliant,
     * error, conflict, notAssigned.
     */
    state?: ComplianceStatus;
    // UserEmail
    userEmail?: NullableOption<string>;
    // UserId
    userId?: NullableOption<string>;
    // UserName
    userName?: NullableOption<string>;
    // UserPrincipalName.
    userPrincipalName?: NullableOption<string>;
}
export interface DeviceConfigurationTargetedUserAndDevice {
    // The id of the device in the checkin.
    deviceId?: NullableOption<string>;
    // The name of the device in the checkin.
    deviceName?: NullableOption<string>;
    // Last checkin time for this user/device pair.
    lastCheckinDateTime?: string;
    // The display name of the user in the checkin
    userDisplayName?: NullableOption<string>;
    // The id of the user in the checkin.
    userId?: NullableOption<string>;
    // The UPN of the user in the checkin.
    userPrincipalName?: NullableOption<string>;
}
export interface DeviceManagementUserRightsLocalUserOrGroup {
    // Admin’s description of this local user or group.
    description?: NullableOption<string>;
    // The name of this local user or group.
    name?: string;
    // The security identifier of this local user or group (e.g. S-1-5-32-544).
    securityIdentifier?: NullableOption<string>;
}
export interface DeviceManagementUserRightsSetting {
    /**
     * Representing a collection of local users or groups which will be set on device if the state of this setting is Allowed.
     * This collection can contain a maximum of 500 elements.
     */
    localUsersOrGroups?: NullableOption<DeviceManagementUserRightsLocalUserOrGroup[]>;
    // Representing the current state of this user rights setting. Possible values are: notConfigured, blocked, allowed.
    state?: StateManagementSetting;
}
// tslint:disable-next-line: no-empty-interface
export interface EdgeHomeButtonConfiguration {}
// tslint:disable-next-line: no-empty-interface
export interface EdgeHomeButtonHidden extends EdgeHomeButtonConfiguration {}
// tslint:disable-next-line: no-empty-interface
export interface EdgeHomeButtonLoadsStartPage extends EdgeHomeButtonConfiguration {}
export interface EdgeHomeButtonOpensCustomURL extends EdgeHomeButtonConfiguration {
    // The specific URL to load.
    homeButtonCustomURL?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface EdgeHomeButtonOpensNewTab extends EdgeHomeButtonConfiguration {}
// tslint:disable-next-line: no-empty-interface
export interface EdgeSearchEngineBase {}
export interface EdgeSearchEngine extends EdgeSearchEngineBase {
    /**
     * Allows IT admins to set a predefined default search engine for MDM-Controlled devices. Possible values are: default,
     * bing.
     */
    edgeSearchEngineType?: EdgeSearchEngineType;
}
export interface EdgeSearchEngineCustom extends EdgeSearchEngineBase {
    /**
     * Points to a https link containing the OpenSearch xml file that contains, at minimum, the short name and the URL to the
     * search Engine.
     */
    edgeSearchEngineOpenSearchXmlUrl?: string;
}
export interface EncryptionReportPolicyDetails {
    // Policy Id for Encryption Report
    policyId?: NullableOption<string>;
    // Policy Name for Encryption Report
    policyName?: NullableOption<string>;
}
export interface ExtendedKeyUsage {
    // Extended Key Usage Name
    name?: NullableOption<string>;
    // Extended Key Usage Object Identifier
    objectIdentifier?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IosSingleSignOnExtension extends SingleSignOnExtension {}
// tslint:disable-next-line: interface-name
export interface IosAzureAdSingleSignOnExtension extends IosSingleSignOnExtension {
    // An optional list of additional bundle IDs allowed to use the AAD extension for single sign-on.
    bundleIdAccessControlList?: NullableOption<string[]>;
    /**
     * Gets or sets a list of typed key-value pairs used to configure Credential-type profiles. This collection can contain a
     * maximum of 500 elements.
     */
    configurations?: NullableOption<KeyTypedValuePair[]>;
    // Enables or disables shared device mode.
    enableSharedDeviceMode?: boolean;
}
// tslint:disable-next-line: interface-name
export interface IosBookmark {
    // The folder into which the bookmark should be added in Safari
    bookmarkFolder?: NullableOption<string>;
    // The display name of the bookmark
    displayName?: string;
    // URL allowed to access
    url?: string;
}
// tslint:disable-next-line: interface-name
export interface IosCredentialSingleSignOnExtension extends IosSingleSignOnExtension {
    /**
     * Gets or sets a list of typed key-value pairs used to configure Credential-type profiles. This collection can contain a
     * maximum of 500 elements.
     */
    configurations?: NullableOption<KeyTypedValuePair[]>;
    // Gets or sets a list of hosts or domain names for which the app extension performs SSO.
    domains?: NullableOption<string[]>;
    // Gets or sets the bundle ID of the app extension that performs SSO for the specified URLs.
    extensionIdentifier?: string;
    // Gets or sets the case-sensitive realm name for this profile.
    realm?: string;
    // Gets or sets the team ID of the app extension that performs SSO for the specified URLs.
    teamIdentifier?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosEduCertificateSettings {
    // File name to display in UI.
    certFileName?: NullableOption<string>;
    // PKCS Certificate Template Name.
    certificateTemplateName?: string;
    // Scale for the Certificate Validity Period. Possible values are: days, months, years.
    certificateValidityPeriodScale?: CertificateValidityPeriodScale;
    // Value for the Certificate Validity Period.
    certificateValidityPeriodValue?: number;
    // PKCS Certification Authority.
    certificationAuthority?: string;
    // PKCS Certification Authority Name.
    certificationAuthorityName?: string;
    // Certificate renewal threshold percentage. Valid values 1 to 99
    renewalThresholdPercentage?: number;
    // Trusted Root Certificate.
    trustedRootCertificate?: number;
}
// tslint:disable-next-line: interface-name
export interface IosHomeScreenItem {
    // Name of the app
    displayName?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosHomeScreenApp extends IosHomeScreenItem {
    // BundleID of the app if isWebClip is false or the URL of a web clip if isWebClip is true.
    bundleID?: string;
    // When true, the bundle ID will be handled as a URL for a web clip.
    isWebClip?: boolean;
}
// tslint:disable-next-line: interface-name
export interface IosHomeScreenFolder extends IosHomeScreenItem {
    /**
     * Pages of Home Screen Layout Icons which must be applications or web clips. This collection can contain a maximum of 500
     * elements.
     */
    pages?: IosHomeScreenFolderPage[];
}
// tslint:disable-next-line: interface-name
export interface IosHomeScreenFolderPage {
    /**
     * A list of apps and web clips to appear on a page within a folder. This collection can contain a maximum of 500
     * elements.
     */
    apps?: IosHomeScreenApp[];
    // Name of the folder page
    displayName?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosHomeScreenPage {
    // Name of the page
    displayName?: NullableOption<string>;
    // A list of apps, folders, and web clips to appear on a page. This collection can contain a maximum of 500 elements.
    icons?: IosHomeScreenItem[];
}
// tslint:disable-next-line: interface-name
export interface IosKerberosSingleSignOnExtension extends IosSingleSignOnExtension {
    // Gets or sets the Active Directory site.
    activeDirectorySiteCode?: NullableOption<string>;
    // Enables or disables whether the Kerberos extension can automatically determine its site name.
    blockActiveDirectorySiteAutoDiscovery?: boolean;
    // Enables or disables Keychain usage.
    blockAutomaticLogin?: boolean;
    // Gets or sets the Generic Security Services name of the Kerberos cache to use for this profile.
    cacheName?: NullableOption<string>;
    // Gets or sets a list of app Bundle IDs allowed to access the Kerberos Ticket Granting Ticket.
    credentialBundleIdAccessControlList?: NullableOption<string[]>;
    // Gets or sets a list of realms for custom domain-realm mapping. Realms are case sensitive.
    domainRealms?: NullableOption<string[]>;
    // Gets or sets a list of hosts or domain names for which the app extension performs SSO.
    domains?: NullableOption<string[]>;
    /**
     * When true, this profile's realm will be selected as the default. Necessary if multiple Kerberos-type profiles are
     * configured.
     */
    isDefaultRealm?: boolean;
    // Enables or disables password changes.
    passwordBlockModification?: boolean;
    // Gets or sets the URL that the user will be sent to when they initiate a password change.
    passwordChangeUrl?: NullableOption<string>;
    // Enables or disables password syncing. This won't affect users logged in with a mobile account on macOS.
    passwordEnableLocalSync?: boolean;
    // Overrides the default password expiration in days. For most domains, this value is calculated automatically.
    passwordExpirationDays?: NullableOption<number>;
    // Gets or sets the number of days until the user is notified that their password will expire (default is 15).
    passwordExpirationNotificationDays?: NullableOption<number>;
    // Gets or sets the minimum number of days until a user can change their password again.
    passwordMinimumAgeDays?: NullableOption<number>;
    // Gets or sets the minimum length of a password.
    passwordMinimumLength?: NullableOption<number>;
    // Gets or sets the number of previous passwords to block.
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Enables or disables whether passwords must meet Active Directory's complexity requirements.
    passwordRequireActiveDirectoryComplexity?: boolean;
    // Gets or sets a description of the password complexity requirements.
    passwordRequirementsDescription?: NullableOption<string>;
    // Gets or sets the case-sensitive realm name for this profile.
    realm?: string;
    // Gets or sets whether to require authentication via Touch ID, Face ID, or a passcode to access the keychain entry.
    requireUserPresence?: boolean;
    // Gets or sets the principle user name to use for this profile. The realm name does not need to be included.
    userPrincipalName?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosNetworkUsageRule {
    // If set to true, corresponding managed apps will not be allowed to use cellular data at any time.
    cellularDataBlocked?: boolean;
    // If set to true, corresponding managed apps will not be allowed to use cellular data when roaming.
    cellularDataBlockWhenRoaming?: boolean;
    /**
     * Information about the managed apps that this rule is going to apply to. This collection can contain a maximum of 500
     * elements.
     */
    managedApps?: NullableOption<AppListItem[]>;
}
// tslint:disable-next-line: interface-name
export interface IosNotificationSettings {
    // Indicates the type of alert for notifications for this app. Possible values are: deviceDefault, banner, modal, none.
    alertType?: IosNotificationAlertType;
    // Application name to be associated with the bundleID.
    appName?: NullableOption<string>;
    // Indicates whether badges are allowed for this app.
    badgesEnabled?: NullableOption<boolean>;
    // Bundle id of app to which to apply these notification settings.
    bundleID?: string;
    // Indicates whether notifications are allowed for this app.
    enabled?: NullableOption<boolean>;
    /**
     * Overrides the notification preview policy set by the user on an iOS device. Possible values are: notConfigured,
     * alwaysShow, hideWhenLocked, neverShow.
     */
    previewVisibility?: IosNotificationPreviewVisibility;
    // Publisher to be associated with the bundleID.
    publisher?: NullableOption<string>;
    // Indicates whether notifications can be shown in notification center.
    showInNotificationCenter?: NullableOption<boolean>;
    // Indicates whether notifications can be shown on the lock screen.
    showOnLockScreen?: NullableOption<boolean>;
    // Indicates whether sounds are allowed for this app.
    soundsEnabled?: NullableOption<boolean>;
}
// tslint:disable-next-line: interface-name
export interface IosRedirectSingleSignOnExtension extends IosSingleSignOnExtension {
    /**
     * Gets or sets a list of typed key-value pairs used to configure Credential-type profiles. This collection can contain a
     * maximum of 500 elements.
     */
    configurations?: NullableOption<KeyTypedValuePair[]>;
    // Gets or sets the bundle ID of the app extension that performs SSO for the specified URLs.
    extensionIdentifier?: string;
    // Gets or sets the team ID of the app extension that performs SSO for the specified URLs.
    teamIdentifier?: NullableOption<string>;
    /**
     * One or more URL prefixes of identity providers on whose behalf the app extension performs single sign-on. URLs must
     * begin with http:// or https://. All URL prefixes must be unique for all profiles.
     */
    urlPrefixes?: NullableOption<string[]>;
}
// tslint:disable-next-line: interface-name
export interface IosSingleSignOnSettings {
    /**
     * List of app identifiers that are allowed to use this login. If this field is omitted, the login applies to all
     * applications on the device. This collection can contain a maximum of 500 elements.
     */
    allowedAppsList?: NullableOption<AppListItem[]>;
    /**
     * List of HTTP URLs that must be matched in order to use this login. With iOS 9.0 or later, a wildcard characters may be
     * used.
     */
    allowedUrls?: NullableOption<string[]>;
    // The display name of login settings shown on the receiving device.
    displayName?: NullableOption<string>;
    // A Kerberos principal name. If not provided, the user is prompted for one during profile installation.
    kerberosPrincipalName?: NullableOption<string>;
    // A Kerberos realm name. Case sensitive.
    kerberosRealm?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IosVpnSecurityAssociationParameters {
    // Lifetime (minutes)
    lifetimeInMinutes?: NullableOption<number>;
    // Diffie-Hellman Group
    securityDiffieHellmanGroup?: NullableOption<number>;
    // Encryption algorithm. Possible values are: aes256, des, tripleDes, aes128, aes128Gcm, aes256Gcm, aes192, aes192Gcm.
    securityEncryptionAlgorithm?: NullableOption<VpnEncryptionAlgorithmType>;
    // Integrity algorithm. Possible values are: sha2_256, sha1_96, sha1_160, sha2_384, sha2_512, md5.
    securityIntegrityAlgorithm?: NullableOption<VpnIntegrityAlgorithmType>;
}
// tslint:disable-next-line: interface-name no-empty-interface
export interface IosWebContentFilterBase {}
// tslint:disable-next-line: interface-name
export interface IosWebContentFilterAutoFilter extends IosWebContentFilterBase {
    // Additional URLs allowed for access
    allowedUrls?: NullableOption<string[]>;
    // Additional URLs blocked for access
    blockedUrls?: NullableOption<string[]>;
}
// tslint:disable-next-line: interface-name
export interface IosWebContentFilterSpecificWebsitesAccess extends IosWebContentFilterBase {
    /**
     * URL bookmarks which will be installed into built-in browser and user is only allowed to access websites through
     * bookmarks. This collection can contain a maximum of 500 elements.
     */
    specificWebsitesOnly?: NullableOption<IosBookmark[]>;
    /**
     * URL bookmarks which will be installed into built-in browser and user is only allowed to access websites through
     * bookmarks. This collection can contain a maximum of 500 elements.
     */
    websiteList?: NullableOption<IosBookmark[]>;
}
// tslint:disable-next-line: interface-name
export interface IPv4Range extends IpRange {
    // Lower address.
    lowerAddress?: string;
    // Upper address.
    upperAddress?: string;
}
// tslint:disable-next-line: interface-name
export interface IPv6Range extends IpRange {
    // Lower address.
    lowerAddress?: string;
    // Upper address.
    upperAddress?: string;
}
export interface KerberosSingleSignOnExtension extends SingleSignOnExtension {
    // Gets or sets the Active Directory site.
    activeDirectorySiteCode?: NullableOption<string>;
    // Enables or disables whether the Kerberos extension can automatically determine its site name.
    blockActiveDirectorySiteAutoDiscovery?: boolean;
    // Enables or disables Keychain usage.
    blockAutomaticLogin?: boolean;
    // Gets or sets the Generic Security Services name of the Kerberos cache to use for this profile.
    cacheName?: NullableOption<string>;
    // Gets or sets a list of app Bundle IDs allowed to access the Kerberos Ticket Granting Ticket.
    credentialBundleIdAccessControlList?: NullableOption<string[]>;
    // Gets or sets a list of realms for custom domain-realm mapping. Realms are case sensitive.
    domainRealms?: NullableOption<string[]>;
    // Gets or sets a list of hosts or domain names for which the app extension performs SSO.
    domains?: NullableOption<string[]>;
    /**
     * When true, this profile's realm will be selected as the default. Necessary if multiple Kerberos-type profiles are
     * configured.
     */
    isDefaultRealm?: boolean;
    // Enables or disables password changes.
    passwordBlockModification?: boolean;
    // Gets or sets the URL that the user will be sent to when they initiate a password change.
    passwordChangeUrl?: NullableOption<string>;
    // Enables or disables password syncing. This won't affect users logged in with a mobile account on macOS.
    passwordEnableLocalSync?: boolean;
    // Overrides the default password expiration in days. For most domains, this value is calculated automatically.
    passwordExpirationDays?: NullableOption<number>;
    // Gets or sets the number of days until the user is notified that their password will expire (default is 15).
    passwordExpirationNotificationDays?: NullableOption<number>;
    // Gets or sets the minimum number of days until a user can change their password again.
    passwordMinimumAgeDays?: NullableOption<number>;
    // Gets or sets the minimum length of a password.
    passwordMinimumLength?: NullableOption<number>;
    // Gets or sets the number of previous passwords to block.
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Enables or disables whether passwords must meet Active Directory's complexity requirements.
    passwordRequireActiveDirectoryComplexity?: boolean;
    // Gets or sets a description of the password complexity requirements.
    passwordRequirementsDescription?: NullableOption<string>;
    // Gets or sets the case-sensitive realm name for this profile.
    realm?: string;
    // Gets or sets whether to require authentication via Touch ID, Face ID, or a passcode to access the keychain entry.
    requireUserPresence?: boolean;
    // Gets or sets the principle user name to use for this profile. The realm name does not need to be included.
    userPrincipalName?: NullableOption<string>;
}
export interface KeyBooleanValuePair extends KeyTypedValuePair {
    // The Boolean value of the key-value pair.
    value?: boolean;
}
export interface KeyIntegerValuePair extends KeyTypedValuePair {
    // The integer value of the key-value pair.
    value?: number;
}
export interface KeyRealValuePair extends KeyTypedValuePair {
    // The real (floating-point) value of the key-value pair.
    value?: number;
}
export interface KeyStringValuePair extends KeyTypedValuePair {
    // The string value of the key-value pair.
    value?: string;
}
export interface MacOSAppleEventReceiver {
    // Allow or block this app from receiving Apple events.
    allowed?: boolean;
    // Code requirement for the app or binary that receives the Apple Event.
    codeRequirement?: string;
    // Bundle ID of the app or file path of the process or executable that receives the Apple Event.
    identifier?: string;
    /**
     * Use bundle ID for an app or path for a process or executable that receives the Apple Event. Possible values are:
     * bundleID, path.
     */
    identifierType?: MacOSProcessIdentifierType;
}
export interface MacOSAssociatedDomainsItem {
    // The application identifier of the app to associate domains with.
    applicationIdentifier?: string;
    // Determines whether data should be downloaded directly or via a CDN.
    directDownloadsEnabled?: boolean;
    // The list of domains to associate.
    domains?: NullableOption<string[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface MacOSSingleSignOnExtension extends SingleSignOnExtension {}
export interface MacOSAzureAdSingleSignOnExtension extends MacOSSingleSignOnExtension {
    // An optional list of additional bundle IDs allowed to use the AAD extension for single sign-on.
    bundleIdAccessControlList?: NullableOption<string[]>;
    /**
     * Gets or sets a list of typed key-value pairs used to configure Credential-type profiles. This collection can contain a
     * maximum of 500 elements.
     */
    configurations?: NullableOption<KeyTypedValuePair[]>;
    // Enables or disables shared device mode.
    enableSharedDeviceMode?: boolean;
}
export interface MacOSCredentialSingleSignOnExtension extends MacOSSingleSignOnExtension {
    /**
     * Gets or sets a list of typed key-value pairs used to configure Credential-type profiles. This collection can contain a
     * maximum of 500 elements.
     */
    configurations?: NullableOption<KeyTypedValuePair[]>;
    // Gets or sets a list of hosts or domain names for which the app extension performs SSO.
    domains?: NullableOption<string[]>;
    // Gets or sets the bundle ID of the app extension that performs SSO for the specified URLs.
    extensionIdentifier?: string;
    // Gets or sets the case-sensitive realm name for this profile.
    realm?: string;
    // Gets or sets the team ID of the app extension that performs SSO for the specified URLs.
    teamIdentifier?: string;
}
export interface MacOSFirewallApplication {
    // Whether or not incoming connections are allowed.
    allowsIncomingConnections?: boolean;
    // BundleId of the application.
    bundleId?: string;
}
export interface MacOSKerberosSingleSignOnExtension extends MacOSSingleSignOnExtension {
    // Gets or sets the Active Directory site.
    activeDirectorySiteCode?: NullableOption<string>;
    // Enables or disables whether the Kerberos extension can automatically determine its site name.
    blockActiveDirectorySiteAutoDiscovery?: boolean;
    // Enables or disables Keychain usage.
    blockAutomaticLogin?: boolean;
    // Gets or sets the Generic Security Services name of the Kerberos cache to use for this profile.
    cacheName?: NullableOption<string>;
    // Gets or sets a list of app Bundle IDs allowed to access the Kerberos Ticket Granting Ticket.
    credentialBundleIdAccessControlList?: NullableOption<string[]>;
    // Gets or sets a list of realms for custom domain-realm mapping. Realms are case sensitive.
    domainRealms?: NullableOption<string[]>;
    // Gets or sets a list of hosts or domain names for which the app extension performs SSO.
    domains?: NullableOption<string[]>;
    /**
     * When true, this profile's realm will be selected as the default. Necessary if multiple Kerberos-type profiles are
     * configured.
     */
    isDefaultRealm?: boolean;
    // Enables or disables password changes.
    passwordBlockModification?: boolean;
    // Gets or sets the URL that the user will be sent to when they initiate a password change.
    passwordChangeUrl?: NullableOption<string>;
    // Enables or disables password syncing. This won't affect users logged in with a mobile account on macOS.
    passwordEnableLocalSync?: boolean;
    // Overrides the default password expiration in days. For most domains, this value is calculated automatically.
    passwordExpirationDays?: NullableOption<number>;
    // Gets or sets the number of days until the user is notified that their password will expire (default is 15).
    passwordExpirationNotificationDays?: NullableOption<number>;
    // Gets or sets the minimum number of days until a user can change their password again.
    passwordMinimumAgeDays?: NullableOption<number>;
    // Gets or sets the minimum length of a password.
    passwordMinimumLength?: NullableOption<number>;
    // Gets or sets the number of previous passwords to block.
    passwordPreviousPasswordBlockCount?: NullableOption<number>;
    // Enables or disables whether passwords must meet Active Directory's complexity requirements.
    passwordRequireActiveDirectoryComplexity?: boolean;
    // Gets or sets a description of the password complexity requirements.
    passwordRequirementsDescription?: NullableOption<string>;
    // Gets or sets the case-sensitive realm name for this profile.
    realm?: string;
    // Gets or sets whether to require authentication via Touch ID, Face ID, or a passcode to access the keychain entry.
    requireUserPresence?: boolean;
    // Gets or sets the principle user name to use for this profile. The realm name does not need to be included.
    userPrincipalName?: NullableOption<string>;
}
export interface MacOSKernelExtension {
    // Bundle ID of the kernel extension.
    bundleId?: string;
    // The team identifier that was used to sign the kernel extension.
    teamIdentifier?: NullableOption<string>;
}
export interface MacOSLaunchItem {
    // Whether or not to hide the item from the Users and Groups List.
    hide?: boolean;
    // Path to the launch item.
    path?: string;
}
export interface MacOSPrivacyAccessControlItem {
    /**
     * Allow the app or process to control the Mac via the Accessibility subsystem. Possible values are: notConfigured,
     * enabled, disabled.
     */
    accessibility?: Enablement;
    /**
     * Allow or block access to contact information managed by Contacts. Possible values are: notConfigured, enabled,
     * disabled.
     */
    addressBook?: Enablement;
    /**
     * Allow or deny the app or process to send a restricted Apple event to another app or process. You will need to know the
     * identifier, identifier type, and code requirement of the receiving app or process. This collection can contain a
     * maximum of 500 elements.
     */
    appleEventsAllowedReceivers?: NullableOption<MacOSAppleEventReceiver[]>;
    // Block access to camera app.
    blockCamera?: boolean;
    /**
     * Block the app or process from listening to events from input devices such as mouse, keyboard, and trackpad.Requires
     * macOS 10.15 or later.
     */
    blockListenEvent?: boolean;
    // Block access to microphone.
    blockMicrophone?: boolean;
    // Block app from capturing contents of system display. Requires macOS 10.15 or later.
    blockScreenCapture?: boolean;
    // Allow or block access to event information managed by Calendar. Possible values are: notConfigured, enabled, disabled.
    calendar?: Enablement;
    /**
     * Enter the code requirement, which can be obtained with the command 'codesign –display -r –' in the Terminal app.
     * Include everything after '=&amp;gt;'.
     */
    codeRequirement?: string;
    // The display name of the app, process, or executable.
    displayName?: string;
    /**
     * Allow the app or process to access files managed by another app’s file provider extension. Requires macOS 10.15 or
     * later. . Possible values are: notConfigured, enabled, disabled.
     */
    fileProviderPresence?: Enablement;
    // The bundle ID or path of the app, process, or executable.
    identifier?: string;
    /**
     * A bundle ID is used to identify an app. A path is used to identify a process or executable. Possible values are:
     * bundleID, path.
     */
    identifierType?: MacOSProcessIdentifierType;
    // Allow or block access to music and the media library. Possible values are: notConfigured, enabled, disabled.
    mediaLibrary?: Enablement;
    // Allow or block access to images managed by Photos. Possible values are: notConfigured, enabled, disabled.
    photos?: Enablement;
    /**
     * Control access to CoreGraphics APIs, which are used to send CGEvents to the system event stream. Possible values are:
     * notConfigured, enabled, disabled.
     */
    postEvent?: Enablement;
    // Allow or block access to information managed by Reminders. Possible values are: notConfigured, enabled, disabled.
    reminders?: Enablement;
    // Allow or block access to system speech recognition facility. Possible values are: notConfigured, enabled, disabled.
    speechRecognition?: Enablement;
    // Statically validates the code requirement. Use this setting if the process invalidates its dynamic code signature.
    staticCodeValidation?: boolean;
    /**
     * Control access to all protected files on a device. Files might be in locations such as emails, messages, apps, and
     * administrative settings. Apply this setting with caution. Possible values are: notConfigured, enabled, disabled.
     */
    systemPolicyAllFiles?: Enablement;
    // Allow or block access to Desktop folder. Possible values are: notConfigured, enabled, disabled.
    systemPolicyDesktopFolder?: Enablement;
    // Allow or block access to Documents folder. Possible values are: notConfigured, enabled, disabled.
    systemPolicyDocumentsFolder?: Enablement;
    // Allow or block access to Downloads folder. Possible values are: notConfigured, enabled, disabled.
    systemPolicyDownloadsFolder?: Enablement;
    /**
     * Allow or block access to network volumes. Requires macOS 10.15 or later. Possible values are: notConfigured, enabled,
     * disabled.
     */
    systemPolicyNetworkVolumes?: Enablement;
    /**
     * Control access to removable volumes on the device, such as an external hard drive. Requires macOS 10.15 or later.
     * Possible values are: notConfigured, enabled, disabled.
     */
    systemPolicyRemovableVolumes?: Enablement;
    /**
     * Allow app or process to access files used in system administration. Possible values are: notConfigured, enabled,
     * disabled.
     */
    systemPolicySystemAdminFiles?: Enablement;
}
export interface MacOSRedirectSingleSignOnExtension extends MacOSSingleSignOnExtension {
    /**
     * Gets or sets a list of typed key-value pairs used to configure Credential-type profiles. This collection can contain a
     * maximum of 500 elements.
     */
    configurations?: NullableOption<KeyTypedValuePair[]>;
    // Gets or sets the bundle ID of the app extension that performs SSO for the specified URLs.
    extensionIdentifier?: string;
    // Gets or sets the team ID of the app extension that performs SSO for the specified URLs.
    teamIdentifier?: string;
    /**
     * One or more URL prefixes of identity providers on whose behalf the app extension performs single sign-on. URLs must
     * begin with http:// or https://. All URL prefixes must be unique for all profiles.
     */
    urlPrefixes?: NullableOption<string[]>;
}
export interface MacOSSystemExtension {
    // Gets or sets the bundle identifier of the system extension.
    bundleId?: string;
    // Gets or sets the team identifier that was used to sign the system extension.
    teamIdentifier?: NullableOption<string>;
}
export interface MacOSSystemExtensionTypeMapping {
    /**
     * Gets or sets the allowed macOS system extension types. Possible values are: driverExtensionsAllowed,
     * networkExtensionsAllowed, endpointSecurityExtensionsAllowed.
     */
    allowedTypes?: MacOSSystemExtensionType;
    // Gets or sets the team identifier used to sign the system extension.
    teamIdentifier?: string;
}
export interface ManagedDeviceMobileAppConfigurationSettingState {
    // Current value of setting on device
    currentValue?: NullableOption<string>;
    // Error code for the setting
    errorCode?: number;
    // Error description
    errorDescription?: NullableOption<string>;
    // Name of setting instance that is being reported.
    instanceDisplayName?: NullableOption<string>;
    // The setting that is being reported
    setting?: NullableOption<string>;
    // SettingInstanceId
    settingInstanceId?: NullableOption<string>;
    // Localized/user friendly setting name that is being reported
    settingName?: NullableOption<string>;
    // Contributing policies
    sources?: NullableOption<SettingSource[]>;
    /**
     * The compliance state of the setting. Possible values are: unknown, notApplicable, compliant, remediated, nonCompliant,
     * error, conflict, notAssigned.
     */
    state?: ComplianceStatus;
    // UserEmail
    userEmail?: NullableOption<string>;
    // UserId
    userId?: NullableOption<string>;
    // UserName
    userName?: NullableOption<string>;
    // UserPrincipalName.
    userPrincipalName?: NullableOption<string>;
}
export interface ManagedDeviceReportedApp {
    // The application or bundle identifier of the application
    appId?: NullableOption<string>;
}
export interface MediaContentRatingAustralia {
    /**
     * Movies rating selected for Australia. Possible values are: allAllowed, allBlocked, general, parentalGuidance, mature,
     * agesAbove15, agesAbove18.
     */
    movieRating?: RatingAustraliaMoviesType;
    /**
     * TV rating selected for Australia. Possible values are: allAllowed, allBlocked, preschoolers, children, general,
     * parentalGuidance, mature, agesAbove15, agesAbove15AdultViolence.
     */
    tvRating?: RatingAustraliaTelevisionType;
}
export interface MediaContentRatingCanada {
    /**
     * Movies rating selected for Canada. Possible values are: allAllowed, allBlocked, general, parentalGuidance, agesAbove14,
     * agesAbove18, restricted.
     */
    movieRating?: RatingCanadaMoviesType;
    /**
     * TV rating selected for Canada. Possible values are: allAllowed, allBlocked, children, childrenAbove8, general,
     * parentalGuidance, agesAbove14, agesAbove18.
     */
    tvRating?: RatingCanadaTelevisionType;
}
export interface MediaContentRatingFrance {
    /**
     * Movies rating selected for France. Possible values are: allAllowed, allBlocked, agesAbove10, agesAbove12, agesAbove16,
     * agesAbove18.
     */
    movieRating?: RatingFranceMoviesType;
    /**
     * TV rating selected for France. Possible values are: allAllowed, allBlocked, agesAbove10, agesAbove12, agesAbove16,
     * agesAbove18.
     */
    tvRating?: RatingFranceTelevisionType;
}
export interface MediaContentRatingGermany {
    /**
     * Movies rating selected for Germany. Possible values are: allAllowed, allBlocked, general, agesAbove6, agesAbove12,
     * agesAbove16, adults.
     */
    movieRating?: RatingGermanyMoviesType;
    /**
     * TV rating selected for Germany. Possible values are: allAllowed, allBlocked, general, agesAbove6, agesAbove12,
     * agesAbove16, adults.
     */
    tvRating?: RatingGermanyTelevisionType;
}
export interface MediaContentRatingIreland {
    /**
     * Movies rating selected for Ireland. Possible values are: allAllowed, allBlocked, general, parentalGuidance,
     * agesAbove12, agesAbove15, agesAbove16, adults.
     */
    movieRating?: RatingIrelandMoviesType;
    /**
     * TV rating selected for Ireland. Possible values are: allAllowed, allBlocked, general, children, youngAdults,
     * parentalSupervision, mature.
     */
    tvRating?: RatingIrelandTelevisionType;
}
export interface MediaContentRatingJapan {
    /**
     * Movies rating selected for Japan. Possible values are: allAllowed, allBlocked, general, parentalGuidance, agesAbove15,
     * agesAbove18.
     */
    movieRating?: RatingJapanMoviesType;
    // TV rating selected for Japan. Possible values are: allAllowed, allBlocked, explicitAllowed.
    tvRating?: RatingJapanTelevisionType;
}
export interface MediaContentRatingNewZealand {
    /**
     * Movies rating selected for New Zealand. Possible values are: allAllowed, allBlocked, general, parentalGuidance, mature,
     * agesAbove13, agesAbove15, agesAbove16, agesAbove18, restricted, agesAbove16Restricted.
     */
    movieRating?: RatingNewZealandMoviesType;
    // TV rating selected for New Zealand. Possible values are: allAllowed, allBlocked, general, parentalGuidance, adults.
    tvRating?: RatingNewZealandTelevisionType;
}
export interface MediaContentRatingUnitedKingdom {
    /**
     * Movies rating selected for United Kingdom. Possible values are: allAllowed, allBlocked, general, universalChildren,
     * parentalGuidance, agesAbove12Video, agesAbove12Cinema, agesAbove15, adults.
     */
    movieRating?: RatingUnitedKingdomMoviesType;
    // TV rating selected for United Kingdom. Possible values are: allAllowed, allBlocked, caution.
    tvRating?: RatingUnitedKingdomTelevisionType;
}
export interface MediaContentRatingUnitedStates {
    /**
     * Movies rating selected for United States. Possible values are: allAllowed, allBlocked, general, parentalGuidance,
     * parentalGuidance13, restricted, adults.
     */
    movieRating?: RatingUnitedStatesMoviesType;
    /**
     * TV rating selected for United States. Possible values are: allAllowed, allBlocked, childrenAll, childrenAbove7,
     * general, parentalGuidance, childrenAbove14, adults.
     */
    tvRating?: RatingUnitedStatesTelevisionType;
}
export interface NumberRange {
    // Lower number.
    lowerNumber?: number;
    // Upper number.
    upperNumber?: number;
}
export interface OmaSetting {
    // Description.
    description?: NullableOption<string>;
    // Display Name.
    displayName?: string;
    // Indicates whether the value field is encrypted. This property is read-only.
    isEncrypted?: boolean;
    // OMA.
    omaUri?: string;
    // ReferenceId for looking up secret for decryption. This property is read-only.
    secretReferenceValueId?: NullableOption<string>;
}
export interface OmaSettingBase64 extends OmaSetting {
    // File name associated with the Value property (.cer
    fileName?: NullableOption<string>;
    // Value. (Base64 encoded string)
    value?: string;
}
export interface OmaSettingBoolean extends OmaSetting {
    // Value.
    value?: boolean;
}
export interface OmaSettingDateTime extends OmaSetting {
    // Value.
    value?: string;
}
export interface OmaSettingFloatingPoint extends OmaSetting {
    // Value.
    value?: number;
}
export interface OmaSettingInteger extends OmaSetting {
    /**
     * By setting to true, the CSP (configuration service provider) specified in the OMA-URI will perform a get, instead of
     * set
     */
    isReadOnly?: boolean;
    // Value.
    value?: number;
}
export interface OmaSettingString extends OmaSetting {
    // Value.
    value?: string;
}
export interface OmaSettingStringXml extends OmaSetting {
    // File name associated with the Value property (.xml).
    fileName?: NullableOption<string>;
    // Value. (UTF8 encoded byte array)
    value?: number;
}
export interface OperatingSystemVersionRange {
    // The description of this range (e.g. Valid 1702 builds)
    description?: string;
    // The highest inclusive version that this range contains.
    highestVersion?: string;
    // The lowest inclusive version that this range contains.
    lowestVersion?: string;
}
export interface ProxiedDomain {
    // The IP address or FQDN
    ipAddressOrFQDN?: string;
    // Proxy IP or FQDN
    proxy?: NullableOption<string>;
}
export interface RedirectSingleSignOnExtension extends SingleSignOnExtension {
    /**
     * Gets or sets a list of typed key-value pairs used to configure Credential-type profiles. This collection can contain a
     * maximum of 500 elements.
     */
    configurations?: NullableOption<KeyTypedValuePair[]>;
    // Gets or sets the bundle ID of the app extension that performs SSO for the specified URLs.
    extensionIdentifier?: string;
    // Gets or sets the team ID of the app extension that performs SSO for the specified URLs.
    teamIdentifier?: NullableOption<string>;
    /**
     * One or more URL prefixes of identity providers on whose behalf the app extension performs single sign-on. URLs must
     * begin with http:// or https://. All URL prefixes must be unique for all profiles.
     */
    urlPrefixes?: NullableOption<string[]>;
}
export interface Report {
    // Report content; details vary by report type.
    content?: NullableOption<any>;
}
export interface RetireScheduledManagedDevice {
    /**
     * Managed Device ComplianceStatus. Possible values are: unknown, notApplicable, compliant, remediated, nonCompliant,
     * error, conflict, notAssigned.
     */
    complianceState?: ComplianceStatus;
    // Device Compliance PolicyId
    deviceCompliancePolicyId?: NullableOption<string>;
    // Device Compliance Policy Name
    deviceCompliancePolicyName?: NullableOption<string>;
    /**
     * Managed Device Device Type. Possible values are: desktop, windowsRT, winMO6, nokia, windowsPhone, mac, winCE,
     * winEmbedded, iPhone, iPad, iPod, android, iSocConsumer, unix, macMDM, holoLens, surfaceHub, androidForWork,
     * androidEnterprise, windows10x, androidnGMS, cloudPC, blackberry, palm, unknown.
     */
    deviceType?: DeviceType;
    // Key of the entity.
    id?: NullableOption<string>;
    // Managed DeviceId
    managedDeviceId?: NullableOption<string>;
    // Managed Device Name
    managedDeviceName?: NullableOption<string>;
    /**
     * Managed Device ManagementAgentType. Possible values are: eas, mdm, easMdm, intuneClient, easIntuneClient,
     * configurationManagerClient, configurationManagerClientMdm, configurationManagerClientMdmEas, unknown, jamf,
     * googleCloudDevicePolicyController, microsoft365ManagedMdm, windowsManagementCloudApi.
     */
    managementAgent?: ManagementAgentType;
    // Managed Device ManagedDeviceOwnerType. Possible values are: unknown, company, personal.
    ownerType?: ManagedDeviceOwnerType;
    // Managed Device Retire After DateTime
    retireAfterDateTime?: string;
    // List of Scope Tags for this Entity instance.
    roleScopeTagIds?: NullableOption<string[]>;
}
export interface SharedPCAccountManagerPolicy {
    /**
     * Configures when accounts are deleted. Possible values are: immediate, diskSpaceThreshold,
     * diskSpaceThresholdOrInactiveThreshold.
     */
    accountDeletionPolicy?: SharedPCAccountDeletionPolicyType;
    /**
     * Sets the percentage of available disk space a PC should have before it stops deleting cached shared PC accounts. Only
     * applies when AccountDeletionPolicy is DiskSpaceThreshold or DiskSpaceThresholdOrInactiveThreshold. Valid values 0 to
     * 100
     */
    cacheAccountsAboveDiskFreePercentage?: NullableOption<number>;
    /**
     * Specifies when the accounts will start being deleted when they have not been logged on during the specified period,
     * given as number of days. Only applies when AccountDeletionPolicy is DiskSpaceThreshold or
     * DiskSpaceThresholdOrInactiveThreshold.
     */
    inactiveThresholdDays?: NullableOption<number>;
    /**
     * Sets the percentage of disk space remaining on a PC before cached accounts will be deleted to free disk space. Accounts
     * that have been inactive the longest will be deleted first. Only applies when AccountDeletionPolicy is
     * DiskSpaceThresholdOrInactiveThreshold. Valid values 0 to 100
     */
    removeAccountsBelowDiskFreePercentage?: NullableOption<number>;
}
export interface UnsupportedDeviceConfigurationDetail {
    // A message explaining why an entity is unsupported.
    message?: NullableOption<string>;
    // If message is related to a specific property in the original entity, then the name of that property.
    propertyName?: NullableOption<string>;
}
export interface VpnDnsRule {
    // Automatically connect to the VPN when the device connects to this domain: Default False.
    autoTrigger?: NullableOption<boolean>;
    // Name.
    name?: string;
    // Keep this rule active even when the VPN is not connected: Default False
    persistent?: NullableOption<boolean>;
    // Proxy Server Uri.
    proxyServerUri?: NullableOption<string>;
    // Servers.
    servers?: NullableOption<string[]>;
}
export interface VpnOnDemandRule {
    // Action. Possible values are: connect, evaluateConnection, ignore, disconnect.
    action?: VpnOnDemandRuleConnectionAction;
    // DNS Search Domains.
    dnsSearchDomains?: NullableOption<string[]>;
    // Domain Action (Only applicable when Action is evaluate connection). Possible values are: connectIfNeeded, neverConnect.
    domainAction?: VpnOnDemandRuleConnectionDomainAction;
    // Domains (Only applicable when Action is evaluate connection).
    domains?: NullableOption<string[]>;
    // Probe Required Url (Only applicable when Action is evaluate connection and DomainAction is connect if needed).
    probeRequiredUrl?: NullableOption<string>;
    /**
     * A URL to probe. If this URL is successfully fetched (returning a 200 HTTP status code) without redirection, this rule
     * matches.
     */
    probeUrl?: NullableOption<string>;
    // Network Service Set Identifiers (SSIDs).
    ssids?: NullableOption<string[]>;
}
export interface VpnProxyServer {
    // Address.
    address?: NullableOption<string>;
    // Proxy's automatic configuration script url.
    automaticConfigurationScriptUrl?: NullableOption<string>;
    // Port. Valid values 0 to 65535
    port?: NullableOption<number>;
}
export interface VpnRoute {
    // Destination prefix (IPv4/v6 address).
    destinationPrefix?: string;
    // Prefix size. (1-32). Valid values 1 to 32
    prefixSize?: number;
}
export interface VpnServer {
    // Address (IP address, FQDN or URL)
    address?: string;
    // Description.
    description?: NullableOption<string>;
    // Default server.
    isDefaultServer?: boolean;
}
export interface VpnTrafficRule {
    // App identifier, if this traffic rule is triggered by an app.
    appId?: NullableOption<string>;
    // App type, if this traffic rule is triggered by an app. Possible values are: none, desktop, universal.
    appType?: VpnTrafficRuleAppType;
    // Claims associated with this traffic rule.
    claims?: NullableOption<string>;
    // Local address range. This collection can contain a maximum of 500 elements.
    localAddressRanges?: NullableOption<IPv4Range[]>;
    /**
     * Local port range can be set only when protocol is either TCP or UDP (6 or 17). This collection can contain a maximum of
     * 500 elements.
     */
    localPortRanges?: NullableOption<NumberRange[]>;
    // Name.
    name?: string;
    // Protocols (0-255). Valid values 0 to 255
    protocols?: NullableOption<number>;
    // Remote address range. This collection can contain a maximum of 500 elements.
    remoteAddressRanges?: NullableOption<IPv4Range[]>;
    /**
     * Remote port range can be set only when protocol is either TCP or UDP (6 or 17). This collection can contain a maximum
     * of 500 elements.
     */
    remotePortRanges?: NullableOption<NumberRange[]>;
    /**
     * When app triggered, indicates whether to enable split tunneling along this route. Possible values are: none,
     * splitTunnel, forceTunnel.
     */
    routingPolicyType?: VpnTrafficRuleRoutingPolicyType;
}
export interface Windows10AppsForceUpdateSchedule {
    // Recurrence schedule. Possible values are: none, daily, weekly, monthly.
    recurrence?: Windows10AppsUpdateRecurrence;
    // If true, runs the task immediately if StartDateTime is in the past, else, runs at the next recurrence.
    runImmediatelyIfAfterStartDateTime?: boolean;
    // The start time for the force restart.
    startDateTime?: string;
}
export interface Windows10AssociatedApps {
    // Application type. Possible values are: desktop, universal.
    appType?: Windows10AppType;
    // Identifier.
    identifier?: string;
}
export interface Windows10NetworkProxyServer {
    // Address to the proxy server. Specify an address in the format [':']
    address?: string;
    /**
     * Addresses that should not use the proxy server. The system will not use the proxy server for addresses beginning with
     * what is specified in this node.
     */
    exceptions?: NullableOption<string[]>;
    // Specifies whether the proxy server should be used for local (intranet) addresses.
    useForLocalAddresses?: boolean;
}
export interface Windows10VpnProxyServer extends VpnProxyServer {
    // Bypass proxy server for local address.
    bypassProxyServerForLocalAddress?: boolean;
}
export interface Windows81VpnProxyServer extends VpnProxyServer {
    // Automatically detect proxy settings.
    automaticallyDetectProxySettings?: boolean;
    // Bypass proxy server for local address.
    bypassProxyServerForLocalAddress?: boolean;
}
export interface WindowsFirewallNetworkProfile {
    /**
     * Configures the firewall to merge authorized application rules from group policy with those from local store instead of
     * ignoring the local store rules. When AuthorizedApplicationRulesFromGroupPolicyNotMerged and
     * AuthorizedApplicationRulesFromGroupPolicyMerged are both true, AuthorizedApplicationRulesFromGroupPolicyMerged takes
     * priority.
     */
    authorizedApplicationRulesFromGroupPolicyMerged?: boolean;
    /**
     * Configures the firewall to prevent merging authorized application rules from group policy with those from local store
     * instead of ignoring the local store rules. When AuthorizedApplicationRulesFromGroupPolicyNotMerged and
     * AuthorizedApplicationRulesFromGroupPolicyMerged are both true, AuthorizedApplicationRulesFromGroupPolicyMerged takes
     * priority.
     */
    authorizedApplicationRulesFromGroupPolicyNotMerged?: boolean;
    /**
     * Configures the firewall to merge connection security rules from group policy with those from local store instead of
     * ignoring the local store rules. When ConnectionSecurityRulesFromGroupPolicyNotMerged and
     * ConnectionSecurityRulesFromGroupPolicyMerged are both true, ConnectionSecurityRulesFromGroupPolicyMerged takes
     * priority.
     */
    connectionSecurityRulesFromGroupPolicyMerged?: boolean;
    /**
     * Configures the firewall to prevent merging connection security rules from group policy with those from local store
     * instead of ignoring the local store rules. When ConnectionSecurityRulesFromGroupPolicyNotMerged and
     * ConnectionSecurityRulesFromGroupPolicyMerged are both true, ConnectionSecurityRulesFromGroupPolicyMerged takes
     * priority.
     */
    connectionSecurityRulesFromGroupPolicyNotMerged?: boolean;
    /**
     * Configures the host device to allow or block the firewall and advanced security enforcement for the network profile.
     * Possible values are: notConfigured, blocked, allowed.
     */
    firewallEnabled?: StateManagementSetting;
    /**
     * Configures the firewall to merge global port rules from group policy with those from local store instead of ignoring
     * the local store rules. When GlobalPortRulesFromGroupPolicyNotMerged and GlobalPortRulesFromGroupPolicyMerged are both
     * true, GlobalPortRulesFromGroupPolicyMerged takes priority.
     */
    globalPortRulesFromGroupPolicyMerged?: boolean;
    /**
     * Configures the firewall to prevent merging global port rules from group policy with those from local store instead of
     * ignoring the local store rules. When GlobalPortRulesFromGroupPolicyNotMerged and GlobalPortRulesFromGroupPolicyMerged
     * are both true, GlobalPortRulesFromGroupPolicyMerged takes priority.
     */
    globalPortRulesFromGroupPolicyNotMerged?: boolean;
    /**
     * Configures the firewall to block all incoming connections by default. When InboundConnectionsRequired and
     * InboundConnectionsBlocked are both true, InboundConnectionsBlocked takes priority.
     */
    inboundConnectionsBlocked?: boolean;
    /**
     * Configures the firewall to allow all incoming connections by default. When InboundConnectionsRequired and
     * InboundConnectionsBlocked are both true, InboundConnectionsBlocked takes priority.
     */
    inboundConnectionsRequired?: boolean;
    /**
     * Prevents the firewall from displaying notifications when an application is blocked from listening on a port. When
     * InboundNotificationsRequired and InboundNotificationsBlocked are both true, InboundNotificationsBlocked takes priority.
     */
    inboundNotificationsBlocked?: boolean;
    /**
     * Allows the firewall to display notifications when an application is blocked from listening on a port. When
     * InboundNotificationsRequired and InboundNotificationsBlocked are both true, InboundNotificationsBlocked takes priority.
     */
    inboundNotificationsRequired?: boolean;
    /**
     * Configures the firewall to block all incoming traffic regardless of other policy settings. When IncomingTrafficRequired
     * and IncomingTrafficBlocked are both true, IncomingTrafficBlocked takes priority.
     */
    incomingTrafficBlocked?: boolean;
    /**
     * Configures the firewall to allow incoming traffic pursuant to other policy settings. When IncomingTrafficRequired and
     * IncomingTrafficBlocked are both true, IncomingTrafficBlocked takes priority.
     */
    incomingTrafficRequired?: boolean;
    /**
     * Configures the firewall to block all outgoing connections by default. When OutboundConnectionsRequired and
     * OutboundConnectionsBlocked are both true, OutboundConnectionsBlocked takes priority. This setting will get applied to
     * Windows releases version 1809 and above.
     */
    outboundConnectionsBlocked?: boolean;
    /**
     * Configures the firewall to allow all outgoing connections by default. When OutboundConnectionsRequired and
     * OutboundConnectionsBlocked are both true, OutboundConnectionsBlocked takes priority. This setting will get applied to
     * Windows releases version 1809 and above.
     */
    outboundConnectionsRequired?: boolean;
    /**
     * Configures the firewall to merge Firewall Rule policies from group policy with those from local store instead of
     * ignoring the local store rules. When PolicyRulesFromGroupPolicyNotMerged and PolicyRulesFromGroupPolicyMerged are both
     * true, PolicyRulesFromGroupPolicyMerged takes priority.
     */
    policyRulesFromGroupPolicyMerged?: boolean;
    /**
     * Configures the firewall to prevent merging Firewall Rule policies from group policy with those from local store instead
     * of ignoring the local store rules. When PolicyRulesFromGroupPolicyNotMerged and PolicyRulesFromGroupPolicyMerged are
     * both true, PolicyRulesFromGroupPolicyMerged takes priority.
     */
    policyRulesFromGroupPolicyNotMerged?: boolean;
    /**
     * Configures the firewall to allow the host computer to respond to unsolicited network traffic of that traffic is secured
     * by IPSec even when stealthModeBlocked is set to true. When SecuredPacketExemptionBlocked and
     * SecuredPacketExemptionAllowed are both true, SecuredPacketExemptionAllowed takes priority.
     */
    securedPacketExemptionAllowed?: boolean;
    /**
     * Configures the firewall to block the host computer to respond to unsolicited network traffic of that traffic is secured
     * by IPSec even when stealthModeBlocked is set to true. When SecuredPacketExemptionBlocked and
     * SecuredPacketExemptionAllowed are both true, SecuredPacketExemptionAllowed takes priority.
     */
    securedPacketExemptionBlocked?: boolean;
    /**
     * Prevent the server from operating in stealth mode. When StealthModeRequired and StealthModeBlocked are both true,
     * StealthModeBlocked takes priority.
     */
    stealthModeBlocked?: boolean;
    /**
     * Allow the server to operate in stealth mode. When StealthModeRequired and StealthModeBlocked are both true,
     * StealthModeBlocked takes priority.
     */
    stealthModeRequired?: boolean;
    /**
     * Configures the firewall to block unicast responses to multicast broadcast traffic. When
     * UnicastResponsesToMulticastBroadcastsRequired and UnicastResponsesToMulticastBroadcastsBlocked are both true,
     * UnicastResponsesToMulticastBroadcastsBlocked takes priority.
     */
    unicastResponsesToMulticastBroadcastsBlocked?: boolean;
    /**
     * Configures the firewall to allow unicast responses to multicast broadcast traffic. When
     * UnicastResponsesToMulticastBroadcastsRequired and UnicastResponsesToMulticastBroadcastsBlocked are both true,
     * UnicastResponsesToMulticastBroadcastsBlocked takes priority.
     */
    unicastResponsesToMulticastBroadcastsRequired?: boolean;
}
export interface WindowsFirewallRule {
    /**
     * The action the rule enforces. If not specified, the default is Allowed. Possible values are: notConfigured, blocked,
     * allowed.
     */
    action?: StateManagementSetting;
    // The description of the rule.
    description?: NullableOption<string>;
    // The display name of the rule. Does not need to be unique.
    displayName?: string;
    /**
     * Indicates whether edge traversal is enabled or disabled for this rule. The EdgeTraversal setting indicates that
     * specific inbound traffic is allowed to tunnel through NATs and other edge devices using the Teredo tunneling
     * technology. In order for this setting to work correctly, the application or service with the inbound firewall rule
     * needs to support IPv6. The primary application of this setting allows listeners on the host to be globally addressable
     * through a Teredo IPv6 address. New rules have the EdgeTraversal property disabled by default. Possible values are:
     * notConfigured, blocked, allowed.
     */
    edgeTraversal?: StateManagementSetting;
    // The full file path of an app that's affected by the firewall rule.
    filePath?: NullableOption<string>;
    // The interface types of the rule. Possible values are: notConfigured, remoteAccess, wireless, lan.
    interfaceTypes?: WindowsFirewallRuleInterfaceTypes;
    /**
     * List of local addresses covered by the rule. Default is any address. Valid tokens include:'' indicates any local
     * address. If present, this must be the only token included.A subnet can be specified using either the subnet mask or
     * network prefix notation. If neither a subnet mask nor a network prefix is specified, the subnet mask defaults to
     * 255.255.255.255.A valid IPv6 address.An IPv4 address range in the format of 'start address - end address' with no
     * spaces included.An IPv6 address range in the format of 'start address - end address' with no spaces included.
     */
    localAddressRanges?: NullableOption<string[]>;
    // List of local port ranges. For example, '100-120', '200', '300-320'. If not specified, the default is All.
    localPortRanges?: NullableOption<string[]>;
    /**
     * Specifies the list of authorized local users for the app container. This is a string in Security Descriptor Definition
     * Language (SDDL) format.
     */
    localUserAuthorizations?: NullableOption<string>;
    // The package family name of a Microsoft Store application that's affected by the firewall rule.
    packageFamilyName?: NullableOption<string>;
    /**
     * Specifies the profiles to which the rule belongs. If not specified, the default is All. Possible values are:
     * notConfigured, domain, private, public.
     */
    profileTypes?: WindowsFirewallRuleNetworkProfileTypes;
    /**
     * 0-255 number representing the IP protocol (TCP = 6, UDP = 17). If not specified, the default is All. Valid values 0 to
     * 255
     */
    protocol?: NullableOption<number>;
    /**
     * List of tokens specifying the remote addresses covered by the rule. Tokens are case insensitive. Default is any
     * address. Valid tokens include:'' indicates any remote address. If present, this must be the only token
     * included.'Defaultgateway''DHCP''DNS''WINS''Intranet' (supported on Windows versions 1809+)'RmtIntranet' (supported on
     * Windows versions 1809+)'Internet' (supported on Windows versions 1809+)'Ply2Renders' (supported on Windows versions
     * 1809+)'LocalSubnet' indicates any local address on the local subnet.A subnet can be specified using either the subnet
     * mask or network prefix notation. If neither a subnet mask nor a network prefix is specified, the subnet mask defaults
     * to 255.255.255.255.A valid IPv6 address.An IPv4 address range in the format of 'start address - end address' with no
     * spaces included.An IPv6 address range in the format of 'start address - end address' with no spaces included.
     */
    remoteAddressRanges?: NullableOption<string[]>;
    // List of remote port ranges. For example, '100-120', '200', '300-320'. If not specified, the default is All.
    remotePortRanges?: NullableOption<string[]>;
    // The name used in cases when a service, not an application, is sending or receiving traffic.
    serviceName?: NullableOption<string>;
    /**
     * The traffic direction that the rule is enabled for. If not specified, the default is Out. Possible values are:
     * notConfigured, out, in.
     */
    trafficDirection?: WindowsFirewallRuleTrafficDirectionType;
}
// tslint:disable-next-line: no-empty-interface
export interface WindowsKioskUser {}
export interface WindowsKioskActiveDirectoryGroup extends WindowsKioskUser {
    // The name of the AD group that will be locked to this kiosk configuration
    groupName?: string;
}
export interface WindowsKioskAppBase {
    // The app type. Possible values are: unknown, store, desktop, aumId.
    appType?: WindowsKioskAppType;
    // Allow the app to be auto-launched in multi-app kiosk mode
    autoLaunch?: boolean;
    // Represents the friendly name of an app
    name?: NullableOption<string>;
    // The app tile size for the start layout. Possible values are: hidden, small, medium, wide, large.
    startLayoutTileSize?: WindowsAppStartLayoutTileSize;
}
// tslint:disable-next-line: no-empty-interface
export interface WindowsKioskAppConfiguration {}
// tslint:disable-next-line: no-empty-interface
export interface WindowsKioskAutologon extends WindowsKioskUser {}
export interface WindowsKioskAzureADGroup extends WindowsKioskUser {
    // The display name of the AzureAD group that will be locked to this kiosk configuration
    displayName?: NullableOption<string>;
    // The ID of the AzureAD group that will be locked to this kiosk configuration
    groupId?: string;
}
export interface WindowsKioskAzureADUser extends WindowsKioskUser {
    // The ID of the AzureAD user that will be locked to this kiosk configuration
    userId?: NullableOption<string>;
    // The user accounts that will be locked to this kiosk configuration
    userPrincipalName?: string;
}
export interface WindowsKioskDesktopApp extends WindowsKioskAppBase {
    // Define the DesktopApplicationID of the app
    desktopApplicationId?: NullableOption<string>;
    // Define the DesktopApplicationLinkPath of the app
    desktopApplicationLinkPath?: NullableOption<string>;
    // Define the path of a desktop app
    path?: string;
}
export interface WindowsKioskForceUpdateSchedule {
    // Day of month. Valid values 1 to 31
    dayofMonth?: number;
    // Day of week. Possible values are: sunday, monday, tuesday, wednesday, thursday, friday, saturday.
    dayofWeek?: DayOfWeek;
    // Recurrence schedule. Possible values are: none, daily, weekly, monthly.
    recurrence?: Windows10AppsUpdateRecurrence;
    // If true, runs the task immediately if StartDateTime is in the past, else, runs at the next recurrence.
    runImmediatelyIfAfterStartDateTime?: boolean;
    // The start time for the force restart.
    startDateTime?: string;
}
export interface WindowsKioskLocalGroup extends WindowsKioskUser {
    // The name of the local group that will be locked to this kiosk configuration
    groupName?: string;
}
export interface WindowsKioskLocalUser extends WindowsKioskUser {
    // The local user that will be locked to this kiosk configuration
    userName?: string;
}
export interface WindowsKioskMultipleApps extends WindowsKioskAppConfiguration {
    // This setting allows access to Downloads folder in file explorer.
    allowAccessToDownloadsFolder?: boolean;
    /**
     * These are the only Windows Store Apps that will be available to launch from the Start menu. This collection can contain
     * a maximum of 128 elements.
     */
    apps?: WindowsKioskAppBase[];
    // This setting indicates that desktop apps are allowed. Default to true.
    disallowDesktopApps?: boolean;
    // This setting allows the admin to specify whether the Task Bar is shown or not.
    showTaskBar?: boolean;
    /**
     * Allows admins to override the default Start layout and prevents the user from changing it. The layout is modified by
     * specifying an XML file based on a layout modification schema. XML needs to be in Binary format.
     */
    startMenuLayoutXml?: NullableOption<number>;
}
export interface WindowsKioskProfile {
    // The App configuration that will be used for this kiosk configuration.
    appConfiguration?: WindowsKioskAppConfiguration;
    // Key of the entity.
    profileId?: string;
    /**
     * This is a friendly name used to identify a group of applications, the layout of these apps on the start menu and the
     * users to whom this kiosk configuration is assigned.
     */
    profileName?: string;
    /**
     * The user accounts that will be locked to this kiosk configuration. This collection can contain a maximum of 100
     * elements.
     */
    userAccountsConfiguration?: WindowsKioskUser[];
}
export interface WindowsKioskSingleUWPApp extends WindowsKioskAppConfiguration {
    // This is the only Application User Model ID (AUMID) that will be available to launch use while in Kiosk Mode
    uwpApp?: WindowsKioskUWPApp;
}
export interface WindowsKioskUWPApp extends WindowsKioskAppBase {
    // This references an Intune App that will be target to the same assignments as Kiosk configuration
    appId?: NullableOption<string>;
    // This is the only Application User Model ID (AUMID) that will be available to launch use while in Kiosk Mode
    appUserModelId?: string;
    // This references an contained App from an Intune App
    containedAppId?: NullableOption<string>;
}
export interface WindowsKioskSingleWin32App extends WindowsKioskAppConfiguration {
    // This is the win32 app that will be available to launch use while in Kiosk Mode
    win32App?: WindowsKioskWin32App;
}
export interface WindowsKioskWin32App extends WindowsKioskAppBase {
    // This is the classicapppath to be used by v4 Win32 app while in Kiosk Mode
    classicAppPath?: string;
    // Edge kiosk (url) for Edge kiosk mode
    edgeKiosk?: NullableOption<string>;
    // Edge kiosk idle timeout in minutes for Edge kiosk mode. Valid values 0 to 1440
    edgeKioskIdleTimeoutMinutes?: NullableOption<number>;
    // Edge kiosk type for Edge kiosk mode. Possible values are: publicBrowsing, fullScreen.
    edgeKioskType?: WindowsEdgeKioskType;
    // Edge first run flag for Edge kiosk mode
    edgeNoFirstRun?: boolean;
}
// tslint:disable-next-line: no-empty-interface
export interface WindowsKioskVisitor extends WindowsKioskUser {}
export interface WindowsNetworkIsolationPolicy {
    /**
     * Contains a list of enterprise resource domains hosted in the cloud that need to be protected. Connections to these
     * resources are considered enterprise data. If a proxy is paired with a cloud resource, traffic to the cloud resource
     * will be routed through the enterprise network via the denoted proxy server (on Port 80). A proxy server used for this
     * purpose must also be configured using the EnterpriseInternalProxyServers policy. This collection can contain a maximum
     * of 500 elements.
     */
    enterpriseCloudResources?: NullableOption<ProxiedDomain[]>;
    /**
     * This is the comma-separated list of internal proxy servers. For example, '157.54.14.28, 157.54.11.118, 10.202.14.167,
     * 157.53.14.163, 157.69.210.59'. These proxies have been configured by the admin to connect to specific resources on the
     * Internet. They are considered to be enterprise network locations. The proxies are only leveraged in configuring the
     * EnterpriseCloudResources policy to force traffic to the matched cloud resources through these proxies.
     */
    enterpriseInternalProxyServers?: NullableOption<string[]>;
    /**
     * Sets the enterprise IP ranges that define the computers in the enterprise network. Data that comes from those computers
     * will be considered part of the enterprise and protected. These locations will be considered a safe destination for
     * enterprise data to be shared to. This collection can contain a maximum of 500 elements.
     */
    enterpriseIPRanges?: NullableOption<IpRange[]>;
    /**
     * Boolean value that tells the client to accept the configured list and not to use heuristics to attempt to find other
     * subnets. Default is false.
     */
    enterpriseIPRangesAreAuthoritative?: boolean;
    /**
     * This is the list of domains that comprise the boundaries of the enterprise. Data from one of these domains that is sent
     * to a device will be considered enterprise data and protected. These locations will be considered a safe destination for
     * enterprise data to be shared to.
     */
    enterpriseNetworkDomainNames?: NullableOption<string[]>;
    // This is a list of proxy servers. Any server not on this list is considered non-enterprise.
    enterpriseProxyServers?: NullableOption<string[]>;
    /**
     * Boolean value that tells the client to accept the configured list of proxies and not try to detect other work proxies.
     * Default is false
     */
    enterpriseProxyServersAreAuthoritative?: boolean;
    // List of domain names that can used for work or personal resource.
    neutralDomainResources?: NullableOption<string[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface WindowsUpdateInstallScheduleType {}
export interface WindowsUpdateActiveHoursInstall extends WindowsUpdateInstallScheduleType {
    // Active Hours End
    activeHoursEnd?: string;
    // Active Hours Start
    activeHoursStart?: string;
}
export interface WindowsUpdateScheduledInstall extends WindowsUpdateInstallScheduleType {
    /**
     * Scheduled Install Day in week. Possible values are: userDefined, everyday, sunday, monday, tuesday, wednesday,
     * thursday, friday, saturday, noScheduledScan.
     */
    scheduledInstallDay?: WeeklySchedule;
    // Scheduled Install Time during day
    scheduledInstallTime?: string;
}
export interface DeviceManagementConfigurationSettingInstance {
    // Setting Definition Id
    settingDefinitionId?: string;
    // Setting Instance Template Reference
    settingInstanceTemplateReference?: NullableOption<DeviceManagementConfigurationSettingInstanceTemplateReference>;
}
export interface DeviceManagementConfigurationChoiceSettingCollectionInstance extends DeviceManagementConfigurationSettingInstance {
    // Choice setting collection value
    choiceSettingCollectionValue?: DeviceManagementConfigurationChoiceSettingValue[];
}
export interface DeviceManagementConfigurationSettingValue {
    // Setting value template reference
    settingValueTemplateReference?: NullableOption<DeviceManagementConfigurationSettingValueTemplateReference>;
}
export interface DeviceManagementConfigurationChoiceSettingValue extends DeviceManagementConfigurationSettingValue {
    // Child settings.
    children?: NullableOption<DeviceManagementConfigurationSettingInstance[]>;
    // Choice setting value: an OptionDefinition ItemId.
    value?: NullableOption<string>;
}
export interface DeviceManagementConfigurationSettingInstanceTemplate {
    // Indicates if a policy must specify this setting.
    isRequired?: boolean;
    // Setting Definition Id
    settingDefinitionId?: string;
    // Setting Instance Template Id
    settingInstanceTemplateId?: string;
}
export interface DeviceManagementConfigurationChoiceSettingCollectionInstanceTemplate extends DeviceManagementConfigurationSettingInstanceTemplate {
    // Linked policy may append values which are not present in the template.
    allowUnmanagedValues?: boolean;
    // Choice Setting Collection Value Template
    choiceSettingCollectionValueTemplate?: DeviceManagementConfigurationChoiceSettingValueTemplate[];
}
export interface DeviceManagementConfigurationChoiceSettingValueTemplate {
    // Choice Setting Value Default Template.
    defaultValue?: NullableOption<DeviceManagementConfigurationChoiceSettingValueDefaultTemplate>;
    // Recommended definition override.
    recommendedValueDefinition?: NullableOption<DeviceManagementConfigurationChoiceSettingValueDefinitionTemplate>;
    // Required definition override.
    requiredValueDefinition?: NullableOption<DeviceManagementConfigurationChoiceSettingValueDefinitionTemplate>;
    // Setting Value Template Id
    settingValueTemplateId?: string;
}
export interface DeviceManagementConfigurationChoiceSettingInstance extends DeviceManagementConfigurationSettingInstance {
    // Choice setting value
    choiceSettingValue?: DeviceManagementConfigurationChoiceSettingValue;
}
export interface DeviceManagementConfigurationChoiceSettingInstanceTemplate extends DeviceManagementConfigurationSettingInstanceTemplate {
    // Choice Setting Value Template
    choiceSettingValueTemplate?: DeviceManagementConfigurationChoiceSettingValueTemplate;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementConfigurationChoiceSettingValueDefaultTemplate {}
export interface DeviceManagementConfigurationChoiceSettingValueConstantDefaultTemplate extends DeviceManagementConfigurationChoiceSettingValueDefaultTemplate {
    // Option Children
    children?: NullableOption<DeviceManagementConfigurationSettingInstanceTemplate[]>;
    // Default Constant Value
    settingDefinitionOptionId?: NullableOption<string>;
}
export interface DeviceManagementConfigurationChoiceSettingValueDefinitionTemplate {
    // Choice Setting Allowed Options
    allowedOptions?: DeviceManagementConfigurationOptionDefinitionTemplate[];
}
export interface DeviceManagementConfigurationOptionDefinitionTemplate {
    // Option Children
    children?: NullableOption<DeviceManagementConfigurationSettingInstanceTemplate[]>;
    // Option ItemId
    itemId?: NullableOption<string>;
}
export interface DeviceManagementConfigurationDependentOn {
    // Identifier of parent setting/ parent setting option dependent on
    dependentOn?: NullableOption<string>;
    // Identifier of parent setting/ parent setting id dependent on
    parentSettingId?: NullableOption<string>;
}
export interface DeviceManagementConfigurationGroupSettingCollectionInstance extends DeviceManagementConfigurationSettingInstance {
    // A collection of GroupSetting values
    groupSettingCollectionValue?: DeviceManagementConfigurationGroupSettingValue[];
}
export interface DeviceManagementConfigurationGroupSettingValue extends DeviceManagementConfigurationSettingValue {
    // Collection of child setting instances contained within this GroupSetting
    children?: NullableOption<DeviceManagementConfigurationSettingInstance[]>;
}
export interface DeviceManagementConfigurationGroupSettingCollectionInstanceTemplate extends DeviceManagementConfigurationSettingInstanceTemplate {
    // Linked policy may append values which are not present in the template.
    allowUnmanagedValues?: boolean;
    // Group Setting Collection Value Template
    groupSettingCollectionValueTemplate?: DeviceManagementConfigurationGroupSettingValueTemplate[];
}
export interface DeviceManagementConfigurationGroupSettingValueTemplate {
    // Group setting value children
    children?: DeviceManagementConfigurationSettingInstanceTemplate[];
    // Setting Value Template Id
    settingValueTemplateId?: string;
}
export interface DeviceManagementConfigurationGroupSettingInstance extends DeviceManagementConfigurationSettingInstance {
    // GroupSetting value
    groupSettingValue?: DeviceManagementConfigurationGroupSettingValue;
}
export interface DeviceManagementConfigurationGroupSettingInstanceTemplate extends DeviceManagementConfigurationSettingInstanceTemplate {
    // Group Setting Value Template
    groupSettingValueTemplate?: DeviceManagementConfigurationGroupSettingValueTemplate;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementConfigurationSimpleSettingValue extends DeviceManagementConfigurationSettingValue {}
export interface DeviceManagementConfigurationIntegerSettingValue extends DeviceManagementConfigurationSimpleSettingValue {
    // Value of the integer setting.
    value?: number;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementConfigurationIntegerSettingValueDefaultTemplate {}
export interface DeviceManagementConfigurationIntegerSettingValueConstantDefaultTemplate extends DeviceManagementConfigurationIntegerSettingValueDefaultTemplate {
    // Default Constant Value. Valid values -2147483648 to 2147483647
    constantValue?: number;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementConfigurationSettingValueDefinition {}
export interface DeviceManagementConfigurationIntegerSettingValueDefinition extends DeviceManagementConfigurationSettingValueDefinition {
    // Maximum allowed value of the integer
    maximumValue?: NullableOption<number>;
    // Minimum allowed value of the integer
    minimumValue?: NullableOption<number>;
}
export interface DeviceManagementConfigurationIntegerSettingValueDefinitionTemplate {
    // Integer Setting Maximum Value. Valid values -2147483648 to 2147483647
    maxValue?: number;
    // Integer Setting Minimum Value. Valid values -2147483648 to 2147483647
    minValue?: number;
}
export interface DeviceManagementConfigurationSimpleSettingValueTemplate {
    // Setting Value Template Id
    settingValueTemplateId?: string;
}
export interface DeviceManagementConfigurationIntegerSettingValueTemplate extends DeviceManagementConfigurationSimpleSettingValueTemplate {
    // Integer Setting Value Default Template.
    defaultValue?: NullableOption<DeviceManagementConfigurationIntegerSettingValueDefaultTemplate>;
    // Recommended value definition.
    recommendedValueDefinition?: NullableOption<DeviceManagementConfigurationIntegerSettingValueDefinitionTemplate>;
    // Required value definition.
    requiredValueDefinition?: NullableOption<DeviceManagementConfigurationIntegerSettingValueDefinitionTemplate>;
}
export interface DeviceManagementConfigurationOptionDefinition {
    // List of Settings that depends on this option
    dependedOnBy?: NullableOption<DeviceManagementConfigurationSettingDependedOnBy[]>;
    // List of dependent settings for this option
    dependentOn?: NullableOption<DeviceManagementConfigurationDependentOn[]>;
    // Description of the option
    description?: NullableOption<string>;
    // Friendly name of the option
    displayName?: NullableOption<string>;
    // Help text of the option
    helpText?: NullableOption<string>;
    // Identifier of option
    itemId?: NullableOption<string>;
    // Name of the option
    name?: NullableOption<string>;
    // Value of the option
    optionValue?: NullableOption<DeviceManagementConfigurationSettingValue>;
}
export interface DeviceManagementConfigurationSettingDependedOnBy {
    // Identifier of child setting that is dependent on the current setting
    dependedOnBy?: NullableOption<string>;
    // Value that determines if the child setting is required based on the parent setting's selection
    required?: NullableOption<boolean>;
}
export interface DeviceManagementConfigurationPolicyTemplateReference {
    // Template Display Name of the referenced template. This property is read-only.
    templateDisplayName?: NullableOption<string>;
    // Template Display Version of the referenced Template. This property is read-only.
    templateDisplayVersion?: NullableOption<string>;
    /**
     * Template Family of the referenced Template. This property is read-only. Possible values are: none,
     * endpointSecurityAntivirus, endpointSecurityDiskEncryption, endpointSecurityFirewall,
     * endpointSecurityEndpointDetectionAndResponse, endpointSecurityAttackSurfaceReduction,
     * endpointSecurityAccountProtection, endpointSecurityApplicationControl.
     */
    templateFamily?: DeviceManagementConfigurationTemplateFamily;
    // Template id
    templateId?: NullableOption<string>;
}
export interface DeviceManagementConfigurationStringSettingValue extends DeviceManagementConfigurationSimpleSettingValue {
    // Value of the string setting.
    value?: NullableOption<string>;
}
export interface DeviceManagementConfigurationReferenceSettingValue extends DeviceManagementConfigurationStringSettingValue {
    // A note that admin can use to put some contextual information
    note?: NullableOption<string>;
}
export interface DeviceManagementConfigurationReferredSettingInformation {
    // Setting definition id that is being referred to a setting. Applicable for reusable setting
    settingDefinitionId?: NullableOption<string>;
}
export interface DeviceManagementConfigurationSettingApplicability {
    // description of the setting
    description?: NullableOption<string>;
    // Device Mode that setting can be applied on. Possible values are: none, kiosk.
    deviceMode?: DeviceManagementConfigurationDeviceMode;
    // Platform setting can be applied on. Possible values are: none, macOS, windows10X, windows10.
    platform?: DeviceManagementConfigurationPlatforms;
    /**
     * Which technology channels this setting can be deployed through. Possible values are: none, mdm, windows10XManagement,
     * configManager, microsoftSense.
     */
    technologies?: DeviceManagementConfigurationTechnologies;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementConfigurationSettingGroupCollectionInstance extends DeviceManagementConfigurationSettingInstance {}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementConfigurationSettingGroupInstance extends DeviceManagementConfigurationSettingInstance {}
export interface DeviceManagementConfigurationSettingInstanceTemplateReference {
    // Setting instance template id
    settingInstanceTemplateId?: string;
}
export interface DeviceManagementConfigurationSettingOccurrence {
    // Maximum times setting can be set on device.
    maxDeviceOccurrence?: NullableOption<number>;
    // Minimum times setting can be set on device. A MinDeviceOccurrence of 0 means setting is optional
    minDeviceOccurrence?: NullableOption<number>;
}
export interface DeviceManagementConfigurationSettingValueTemplateReference {
    // Setting value template id
    settingValueTemplateId?: string;
    // Indicates whether to update policy setting value to match template setting default value
    useTemplateDefault?: boolean;
}
export interface DeviceManagementConfigurationSimpleSettingCollectionInstance extends DeviceManagementConfigurationSettingInstance {
    // Simple setting collection instance value
    simpleSettingCollectionValue?: DeviceManagementConfigurationSimpleSettingValue[];
}
export interface DeviceManagementConfigurationSimpleSettingCollectionInstanceTemplate extends DeviceManagementConfigurationSettingInstanceTemplate {
    // Linked policy may append values which are not present in the template.
    allowUnmanagedValues?: boolean;
    // Simple Setting Collection Value Template
    simpleSettingCollectionValueTemplate?: DeviceManagementConfigurationSimpleSettingValueTemplate[];
}
export interface DeviceManagementConfigurationSimpleSettingInstance extends DeviceManagementConfigurationSettingInstance {
    // Simple setting instance value
    simpleSettingValue?: DeviceManagementConfigurationSimpleSettingValue;
}
export interface DeviceManagementConfigurationSimpleSettingInstanceTemplate extends DeviceManagementConfigurationSettingInstanceTemplate {
    // Simple Setting Value Template
    simpleSettingValueTemplate?: DeviceManagementConfigurationSimpleSettingValueTemplate;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementConfigurationStringSettingValueDefaultTemplate {}
export interface DeviceManagementConfigurationStringSettingValueConstantDefaultTemplate extends DeviceManagementConfigurationStringSettingValueDefaultTemplate {
    // Default Constant Value
    constantValue?: string;
}
export interface DeviceManagementConfigurationStringSettingValueDefinition extends DeviceManagementConfigurationSettingValueDefinition {
    /**
     * Pre-defined format of the string. Possible values are: none, email, guid, ip, base64, url, version, xml, date, time,
     * binary, regEx, json, dateTime, surfaceHub.
     */
    format?: DeviceManagementConfigurationStringFormat;
    // Regular expression or any xml or json schema that the input string should match
    inputValidationSchema?: NullableOption<string>;
    /**
     * Specifies whether the setting needs to be treated as a secret. Settings marked as yes will be encrypted in transit and
     * at rest and will be displayed as asterisks when represented in the UX.
     */
    isSecret?: boolean;
    // Maximum length of string. Valid values 0 to 87516
    maximumLength?: number;
    // Minimum length of string. Valid values 0 to 87516
    minimumLength?: number;
}
export interface DeviceManagementConfigurationStringSettingValueTemplate extends DeviceManagementConfigurationSimpleSettingValueTemplate {
    // String Setting Value Default Template.
    defaultValue?: NullableOption<DeviceManagementConfigurationStringSettingValueDefaultTemplate>;
}
export interface DeviceManagementConfigurationWindowsSettingApplicability extends DeviceManagementConfigurationSettingApplicability {
    // Version of CSP setting is a part of
    configurationServiceProviderVersion?: NullableOption<string>;
    // Maximum supported version of Windows
    maximumSupportedVersion?: NullableOption<string>;
    // Minimum supported version of Windows
    minimumSupportedVersion?: NullableOption<string>;
    // Required AzureAD trust type. Possible values are: none, azureAdJoined, addWorkAccount, mdmOnly.
    requiredAzureAdTrustType?: DeviceManagementConfigurationAzureAdTrustType;
    // AzureAD setting requirement
    requiresAzureAd?: boolean;
    // List of Windows SKUs that the setting is applicable for
    windowsSkus?: DeviceManagementConfigurationWindowsSkus[];
}
export interface CompanyPortalBlockedAction {
    // Device Action. Possible values are: unknown, remove, reset.
    action?: CompanyPortalAction;
    // Device ownership type. Possible values are: unknown, company, personal.
    ownerType?: OwnerType;
    /**
     * Device OS/Platform. Possible values are: android, androidForWork, iOS, macOS, windowsPhone81, windows81AndLater,
     * windows10AndLater, androidWorkProfile, unknown.
     */
    platform?: DevicePlatformType;
}
export interface ComplianceManagementPartnerAssignment {
    // Group assignment target.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface DeviceAndAppManagementData {
    // Not yet documented
    content?: NullableOption<any>;
}
export interface DeviceEnrollmentPlatformRestriction {
    // Collection of blocked Manufacturers.
    blockedManufacturers?: NullableOption<string[]>;
    // Collection of blocked Skus.
    blockedSkus?: NullableOption<string[]>;
    // Max OS version supported
    osMaximumVersion?: NullableOption<string>;
    // Min OS version supported
    osMinimumVersion?: NullableOption<string>;
    // Block personally owned devices from enrolling
    personalDeviceEnrollmentBlocked?: boolean;
    // Block the platform from enrolling
    platformBlocked?: boolean;
}
export interface DeviceManagementExchangeAccessRule {
    // Access Level for Exchange granted by this rule. Possible values are: none, allow, block, quarantine.
    accessLevel?: DeviceManagementExchangeAccessLevel;
    // Device Class which will be impacted by this rule.
    deviceClass?: NullableOption<DeviceManagementExchangeDeviceClass>;
}
export interface DeviceManagementExchangeDeviceClass {
    // Name of the device class which will be impacted by this rule.
    name?: NullableOption<string>;
    // Type of device which is impacted by this rule e.g. Model, Family. Possible values are: family, model.
    type?: DeviceManagementExchangeAccessRuleType;
}
export interface DeviceManagementPartnerAssignment {
    // User groups targeting for devices to be enrolled through partner.
    target?: NullableOption<DeviceAndAppManagementAssignmentTarget>;
}
export interface RgbColor {
    // Blue value
    b?: number;
    // Green value
    g?: number;
    // Red value
    r?: number;
}
export interface VppTokenActionResult {
    // Action name
    actionName?: NullableOption<string>;
    // State of the action. Possible values are: none, pending, canceled, active, done, failed, notSupported.
    actionState?: ActionState;
    // Time the action state was last updated
    lastUpdatedDateTime?: string;
    // Time the action was initiated
    startDateTime?: string;
}
export interface VppTokenLicenseSummary {
    // The Apple Id associated with the given Apple Volume Purchase Program Token.
    appleId?: NullableOption<string>;
    // The number of VPP licenses available.
    availableLicenseCount?: number;
    // The organization associated with the Apple Volume Purchase Program Token.
    organizationName?: NullableOption<string>;
    // The number of VPP licenses in use.
    usedLicenseCount?: number;
    // Identifier of the VPP token.
    vppTokenId?: NullableOption<string>;
}
export interface VppTokenRevokeLicensesActionResult extends VppTokenActionResult {
    /**
     * The reason for the revoke licenses action failure. Possible values are: none, appleFailure, internalError,
     * expiredVppToken, expiredApplePushNotificationCertificate.
     */
    actionFailureReason?: VppTokenActionFailureReason;
    // A count of the number of licenses that failed to revoke.
    failedLicensesCount?: number;
    // A count of the number of licenses that were attempted to revoke.
    totalLicensesCount?: number;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementConstraint {}
export interface DeviceManagementEnumConstraint extends DeviceManagementConstraint {
    // List of valid values for this string
    values?: DeviceManagementEnumValue[];
}
export interface DeviceManagementEnumValue {
    // Display name for this enum value
    displayName?: NullableOption<string>;
    // The raw enum value text
    value?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementIntentSettingSecretConstraint extends DeviceManagementConstraint {}
export interface DeviceManagementSettingAbstractImplementationConstraint extends DeviceManagementConstraint {
    // List of value which means not configured for the setting
    allowedAbstractImplementationDefinitionIds?: NullableOption<string[]>;
}
export interface DeviceManagementSettingAppConstraint extends DeviceManagementConstraint {
    // Acceptable app types to allow for this setting
    supportedTypes?: NullableOption<string[]>;
}
export interface DeviceManagementSettingBooleanConstraint extends DeviceManagementConstraint {
    // The boolean value to compare against
    value?: boolean;
}
export interface DeviceManagementSettingCollectionConstraint extends DeviceManagementConstraint {
    // The maximum number of elements in the collection
    maximumLength?: NullableOption<number>;
    // The minimum number of elements in the collection
    minimumLength?: NullableOption<number>;
}
export interface DeviceManagementSettingComparison {
    // Setting comparison result. Possible values are: unknown, equal, notEqual, added, removed.
    comparisonResult?: DeviceManagementComparisonResult;
    // JSON representation of current intent (or) template setting's value
    currentValueJson?: NullableOption<string>;
    // The ID of the setting definition for this instance
    definitionId?: NullableOption<string>;
    // The setting's display name
    displayName?: NullableOption<string>;
    // The setting ID
    id?: NullableOption<string>;
    // JSON representation of new template setting's value
    newValueJson?: NullableOption<string>;
}
export interface DeviceManagementSettingDependency {
    // Collection of constraints for the dependency setting value
    constraints?: NullableOption<DeviceManagementConstraint[]>;
    // The setting definition ID of the setting depended on
    definitionId?: string;
}
export interface DeviceManagementSettingEnrollmentTypeConstraint extends DeviceManagementConstraint {
    // List of enrollment types
    enrollmentTypes?: NullableOption<string[]>;
}
export interface DeviceManagementSettingFileConstraint extends DeviceManagementConstraint {
    // Acceptable file extensions to upload for this setting
    supportedExtensions?: NullableOption<string[]>;
}
export interface DeviceManagementSettingIntegerConstraint extends DeviceManagementConstraint {
    // The maximum permitted value
    maximumValue?: NullableOption<number>;
    // The minimum permitted value
    minimumValue?: NullableOption<number>;
}
export interface DeviceManagementSettingProfileConstraint extends DeviceManagementConstraint {
    // The source of the entity
    source?: NullableOption<string>;
    // A collection of types this entity carries
    types?: NullableOption<string[]>;
}
export interface DeviceManagementSettingRegexConstraint extends DeviceManagementConstraint {
    // The RegEx pattern to match against
    regex?: string;
}
export interface DeviceManagementSettingRequiredConstraint extends DeviceManagementConstraint {
    // List of value which means not configured for the setting
    notConfiguredValue?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementSettingSddlConstraint extends DeviceManagementConstraint {}
export interface DeviceManagementSettingStringLengthConstraint extends DeviceManagementConstraint {
    // The maximum permitted string length
    maximumLength?: NullableOption<number>;
    // The minimum permitted string length
    minimumLength?: NullableOption<number>;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceManagementSettingXmlConstraint extends DeviceManagementConstraint {}
export interface SecurityBaselineContributingPolicy {
    // Name of the policy
    displayName?: NullableOption<string>;
    // Unique identifier of the policy
    sourceId?: NullableOption<string>;
    // Authoring source of the policy. Possible values are: deviceConfiguration, deviceIntent.
    sourceType?: SecurityBaselinePolicySourceType;
}
export interface ActivateDeviceEsimActionResult extends DeviceActionResult {
    // Carrier Url to activate the device eSIM
    carrierUrl?: NullableOption<string>;
}
export interface AppLogCollectionDownloadDetails {
    // DecryptionAlgorithm for Content. Possible values are: aes256.
    appLogDecryptionAlgorithm?: AppLogDecryptionAlgorithm;
    // DecryptionKey as string
    decryptionKey?: NullableOption<string>;
    // Download SAS Url for completed AppLogUploadRequest
    downloadUrl?: NullableOption<string>;
}
export interface BulkManagedDeviceActionResult {
    // Failed devices
    failedDeviceIds?: NullableOption<string[]>;
    // Not found devices
    notFoundDeviceIds?: NullableOption<string[]>;
    // Not supported devices
    notSupportedDeviceIds?: NullableOption<string[]>;
    // Successful devices
    successfulDeviceIds?: NullableOption<string[]>;
}
export interface ComanagedDevicesSummary {
    // Number of devices with CompliancePolicy swung-over. This property is read-only.
    compliancePolicyCount?: number;
    // Number of devices with ConfigurationSettings swung-over. This property is read-only.
    configurationSettingsCount?: number;
    // Number of devices with EndpointProtection swung-over. This property is read-only.
    endpointProtectionCount?: number;
    // Number of devices with Inventory swung-over. This property is read-only.
    inventoryCount?: number;
    // Number of devices with ModernApps swung-over. This property is read-only.
    modernAppsCount?: number;
    // Number of devices with OfficeApps swung-over. This property is read-only.
    officeAppsCount?: number;
    // Number of devices with ResourceAccess swung-over. This property is read-only.
    resourceAccessCount?: number;
    // Number of Co-Managed Devices. This property is read-only.
    totalComanagedCount?: number;
    // Number of devices with WindowsUpdateForBusiness swung-over. This property is read-only.
    windowsUpdateForBusinessCount?: number;
}
export interface ComanagementEligibleDevicesSummary {
    // Count of devices already Co-Managed
    comanagedCount?: number;
    // Count of devices eligible for Co-Management but not yet joined to Azure Active Directory
    eligibleButNotAzureAdJoinedCount?: number;
    // Count of devices fully eligible for Co-Management
    eligibleCount?: number;
    // Count of devices ineligible for Co-Management
    ineligibleCount?: number;
    // Count of devices that will be eligible for Co-Management after an OS update
    needsOsUpdateCount?: number;
}
export interface ConfigurationManagerAction {
    /**
     * The action type to trigger on Configuration Manager client. Possible values are: refreshMachinePolicy,
     * refreshUserPolicy, wakeUpClient, appEvaluation.
     */
    action?: ConfigurationManagerActionType;
}
export interface ConfigurationManagerActionResult extends DeviceActionResult {
    /**
     * State of the action being delivered to on-prem server. Possible values are: unknown, pendingDelivery,
     * deliveredToConnectorService, failedToDeliverToConnectorService, deliveredToOnPremisesServer.
     */
    actionDeliveryStatus?: ConfigurationManagerActionDeliveryStatus;
    // Error code of Configuration Manager action from client
    errorCode?: number;
}
export interface DeleteUserFromSharedAppleDeviceActionResult extends DeviceActionResult {
    // User principal name of the user to be deleted
    userPrincipalName?: NullableOption<string>;
}
export interface DeviceExchangeAccessStateSummary {
    // Total count of devices with Exchange Access State: Allowed.
    allowedDeviceCount?: number;
    // Total count of devices with Exchange Access State: Blocked.
    blockedDeviceCount?: number;
    // Total count of devices with Exchange Access State: Quarantined.
    quarantinedDeviceCount?: number;
    // Total count of devices for which no Exchange Access State could be found.
    unavailableDeviceCount?: number;
    // Total count of devices with Exchange Access State: Unknown.
    unknownDeviceCount?: number;
}
export interface DeviceGeoLocation {
    // Altitude, given in meters above sea level
    altitude?: number;
    // Heading in degrees from true north
    heading?: number;
    // Accuracy of longitude and latitude in meters
    horizontalAccuracy?: number;
    // Time at which location was recorded, relative to UTC
    lastCollectedDateTime?: string;
    // Time at which location was recorded, relative to UTC
    lastCollectedDateTimeUtc?: string;
    // Latitude coordinate of the device's location
    latitude?: number;
    // Longitude coordinate of the device's location
    longitude?: number;
    // Speed the device is traveling in meters per second
    speed?: number;
    // Accuracy of altitude in meters
    verticalAccuracy?: number;
}
export interface DeviceHealthScriptParameter {
    // Whether Apply DefaultValue When Not Assigned
    applyDefaultValueWhenNotAssigned?: boolean;
    // The description of the param
    description?: NullableOption<string>;
    // Whether the param is required
    isRequired?: boolean;
    // The name of the param
    name?: NullableOption<string>;
}
export interface DeviceHealthScriptBooleanParameter extends DeviceHealthScriptParameter {
    // The default value of boolean param
    defaultValue?: boolean;
}
export interface DeviceHealthScriptRunSchedule {
    /**
     * The x value of every x hours for hourly schedule, every x days for Daily Schedule, every x weeks for weekly schedule,
     * every x months for Monthly Schedule. Valid values 1 to 23
     */
    interval?: number;
}
export interface DeviceHealthScriptTimeSchedule extends DeviceHealthScriptRunSchedule {
    // At what time the script is scheduled to run. This collection can contain a maximum of 20 elements.
    time?: NullableOption<string>;
    // Indicate if the time is Utc or client local time.
    useUtc?: boolean;
}
// tslint:disable-next-line: no-empty-interface
export interface DeviceHealthScriptDailySchedule extends DeviceHealthScriptTimeSchedule {}
// tslint:disable-next-line: no-empty-interface
export interface DeviceHealthScriptHourlySchedule extends DeviceHealthScriptRunSchedule {}
export interface DeviceHealthScriptIntegerParameter extends DeviceHealthScriptParameter {
    // The default value of Integer param. Valid values -2147483648 to 2147483647
    defaultValue?: number;
}
export interface DeviceHealthScriptRemediationHistory {
    // The number of devices remediated by the device health script on the given date.
    historyData?: NullableOption<DeviceHealthScriptRemediationHistoryData[]>;
    // The date on which the results history is calculated for the healthscript.
    lastModifiedDateTime?: NullableOption<string>;
}
export interface DeviceHealthScriptRemediationHistoryData {
    // The date on which devices were remediated by the device health script.
    date?: string;
    // The number of devices that were found to have no issue by the device health script.
    noIssueDeviceCount?: number;
    // The number of devices remediated by the device health script.
    remediatedDeviceCount?: number;
}
export interface DeviceHealthScriptRemediationSummary {
    // The number of devices remediated by device health scripts.
    remediatedDeviceCount?: NullableOption<number>;
    // The number of device health scripts deployed.
    scriptCount?: NullableOption<number>;
}
export interface DeviceHealthScriptRunOnceSchedule extends DeviceHealthScriptTimeSchedule {
    // The date the script is scheduled to run. This collection can contain a maximum of 20 elements.
    date?: NullableOption<string>;
}
export interface DeviceHealthScriptStringParameter extends DeviceHealthScriptParameter {
    // The default value of string param
    defaultValue?: NullableOption<string>;
}
export interface DeviceLogCollectionRequest {
    // The unique identifier
    id?: NullableOption<string>;
    // The template type that is sent with the collection request. Possible values are: predefined.
    templateType?: DeviceLogCollectionTemplateType;
}
export interface DeviceOperatingSystemSummary {
    /**
     * The count of Corporate work profile Android devices. Also known as Corporate Owned Personally Enabled (COPE). Valid
     * values -1 to 2147483647
     */
    androidCorporateWorkProfileCount?: number;
    // Number of android device count.
    androidCount?: number;
    // Number of dedicated Android devices.
    androidDedicatedCount?: number;
    // Number of device admin Android devices.
    androidDeviceAdminCount?: number;
    // Number of fully managed Android devices.
    androidFullyManagedCount?: number;
    // Number of work profile Android devices.
    androidWorkProfileCount?: number;
    // Number of AOSP user-associated Android devices. Valid values 0 to 2147483647
    aospUserAssociatedCount?: number;
    // Number of AOSP userless Android devices. Valid values 0 to 2147483647
    aospUserlessCount?: number;
    // Number of Chrome OS devices. Valid values 0 to 2147483647
    chromeOSCount?: number;
    // Number of ConfigMgr managed devices.
    configMgrDeviceCount?: number;
    // Number of iOS device count.
    iosCount?: number;
    // Number of Linux OS devices. Valid values 0 to 2147483647
    linuxCount?: number;
    // Number of Mac OS X device count.
    macOSCount?: number;
    // Number of unknown device count.
    unknownCount?: number;
    // Number of Windows device count.
    windowsCount?: number;
    // Number of Windows mobile device count.
    windowsMobileCount?: number;
}
export interface SharedAppleDeviceUser {
    // Data quota
    dataQuota?: NullableOption<number>;
    // Data to sync
    dataToSync?: boolean;
    // Data quota
    dataUsed?: number;
    // User name
    userPrincipalName?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface UserExperienceAnalyticsInsightValue {}
// tslint:disable-next-line: interface-name
export interface InsightValueDouble extends UserExperienceAnalyticsInsightValue {
    // Not yet documented
    value?: number;
}
// tslint:disable-next-line: interface-name
export interface InsightValueInt extends UserExperienceAnalyticsInsightValue {
    // Not yet documented
    value?: number;
}
export interface LocateDeviceActionResult extends DeviceActionResult {
    // device location
    deviceLocation?: NullableOption<DeviceGeoLocation>;
}
export interface ManagedDeviceModelsAndManufacturers {
    // List of Manufactures for managed devices in the account
    deviceManufacturers?: NullableOption<string[]>;
    // List of Models for managed devices in the account
    deviceModels?: NullableOption<string[]>;
}
export interface OsVersionCount {
    // Count of devices with malware for the OS version
    deviceCount?: number;
    // The Timestamp of the last update for the device count in UTC
    lastUpdateDateTime?: string;
    // OS version
    osVersion?: NullableOption<string>;
}
export interface RemoteLockActionResult extends DeviceActionResult {
    // Pin to unlock the client
    unlockPin?: NullableOption<string>;
}
export interface ResetPasscodeActionResult extends DeviceActionResult {
    // RotateBitLockerKeys action error code. Valid values 0 to 2147483647
    errorCode?: number;
    // Newly generated passcode for the device
    passcode?: NullableOption<string>;
}
export interface RevokeAppleVppLicensesActionResult extends DeviceActionResult {
    // Total number of Apple Vpp licenses that failed to revoke
    failedLicensesCount?: number;
    // Total number of Apple Vpp licenses associated
    totalLicensesCount?: number;
}
export interface RotateBitLockerKeysDeviceActionResult extends DeviceActionResult {
    // RotateBitLockerKeys action error code
    errorCode?: number;
}
export interface UpdateWindowsDeviceAccountActionParameter {
    // Not yet documented
    calendarSyncEnabled?: NullableOption<boolean>;
    // Not yet documented
    deviceAccount?: NullableOption<WindowsDeviceAccount>;
    // Not yet documented
    deviceAccountEmail?: NullableOption<string>;
    // Not yet documented
    exchangeServer?: NullableOption<string>;
    // Not yet documented
    passwordRotationEnabled?: NullableOption<boolean>;
    // Not yet documented
    sessionInitiationProtocalAddress?: NullableOption<string>;
}
export interface WindowsDeviceAccount {
    // Not yet documented
    password?: NullableOption<string>;
}
export interface UserExperienceAnalyticsAutopilotDevicesSummary {
    // The count of intune devices that are not autopilot registerd.
    devicesNotAutopilotRegistered?: number;
    // The count of intune devices not autopilot profile assigned.
    devicesWithoutAutopilotProfileAssigned?: number;
}
export interface UserExperienceAnalyticsCloudIdentityDevicesSummary {
    // The count of devices that are not cloud identity.
    deviceWithoutCloudIdentityCount?: number;
}
export interface UserExperienceAnalyticsCloudManagementDevicesSummary {
    // Total number of co-managed devices.
    coManagedDeviceCount?: number;
    // The count of intune devices that are not autopilot registerd.
    intuneDeviceCount?: number;
    // Total count of tenant attach devices.
    tenantAttachDeviceCount?: number;
}
export interface UserExperienceAnalyticsInsight {
    // The unique identifier of the user experience analytics insight.
    insightId?: NullableOption<string>;
    // The value of the user experience analytics insight. Possible values are: none, informational, warning, error.
    severity?: UserExperienceAnalyticsInsightSeverity;
    // The unique identifier of the user experience analytics insight.
    userExperienceAnalyticsMetricId?: NullableOption<string>;
    // The value of the user experience analytics insight.
    values?: NullableOption<UserExperienceAnalyticsInsightValue[]>;
}
export interface UserExperienceAnalyticsWindows10DevicesSummary {
    // The count of Windows 10 devices that have unsupported OS versions.
    unsupportedOSversionDeviceCount?: number;
}
export interface UserExperienceAnalyticsWorkFromAnywhereDevicesSummary {
    // The value of work from anywhere autopilot devices summary.
    autopilotDevicesSummary?: NullableOption<UserExperienceAnalyticsAutopilotDevicesSummary>;
    // The user experience analytics work from anywhere Cloud Identity devices summary.
    cloudIdentityDevicesSummary?: NullableOption<UserExperienceAnalyticsCloudIdentityDevicesSummary>;
    // The user experience work from anywhere Cloud management devices summary.
    cloudManagementDevicesSummary?: NullableOption<UserExperienceAnalyticsCloudManagementDevicesSummary>;
    // The user experience analytics work from anywhere Windows 10 devices summary.
    windows10DevicesSummary?: NullableOption<UserExperienceAnalyticsWindows10DevicesSummary>;
}
export interface WindowsDefenderScanActionResult extends DeviceActionResult {
    // Scan type either full scan or quick scan
    scanType?: NullableOption<string>;
}
export interface WindowsDeviceADAccount extends WindowsDeviceAccount {
    // Not yet documented
    domainName?: NullableOption<string>;
    // Not yet documented
    userName?: NullableOption<string>;
}
export interface WindowsDeviceAzureADAccount extends WindowsDeviceAccount {
    // Not yet documented
    userPrincipalName?: NullableOption<string>;
}
export interface WindowsMalwareCategoryCount {
    // Count of active malware detections for this malware category. Valid values -2147483648 to 2147483647
    activeMalwareDetectionCount?: number;
    /**
     * Malware category. Possible values are: invalid, adware, spyware, passwordStealer, trojanDownloader, worm, backdoor,
     * remoteAccessTrojan, trojan, emailFlooder, keylogger, dialer, monitoringSoftware, browserModifier, cookie,
     * browserPlugin, aolExploit, nuker, securityDisabler, jokeProgram, hostileActiveXControl, softwareBundler,
     * stealthNotifier, settingsModifier, toolBar, remoteControlSoftware, trojanFtp, potentialUnwantedSoftware, icqExploit,
     * trojanTelnet, exploit, filesharingProgram, malwareCreationTool, remote_Control_Software, tool, trojanDenialOfService,
     * trojanDropper, trojanMassMailer, trojanMonitoringSoftware, trojanProxyServer, virus, known, unknown, spp, behavior,
     * vulnerability, policy, enterpriseUnwantedSoftware, ransom, hipsRule.
     */
    category?: WindowsMalwareCategory;
    // Count of devices with malware detections for this malware category
    deviceCount?: number;
    // Count of distinct active malwares for this malware category. Valid values -2147483648 to 2147483647
    distinctActiveMalwareCount?: number;
    // The Timestamp of the last update for the device count in UTC
    lastUpdateDateTime?: string;
}
export interface WindowsMalwareExecutionStateCount {
    // Count of devices with malware detections for this malware execution state
    deviceCount?: number;
    // Malware execution state. Possible values are: unknown, blocked, allowed, running, notRunning.
    executionState?: WindowsMalwareExecutionState;
    // The Timestamp of the last update for the device count in UTC
    lastUpdateDateTime?: string;
}
export interface WindowsMalwareNameCount {
    // Count of devices with malware dectected for this malware
    deviceCount?: number;
    // The Timestamp of the last update for the device count in UTC
    lastUpdateDateTime?: string;
    // The unique identifier. This is malware identifier
    malwareIdentifier?: NullableOption<string>;
    // Malware name
    name?: NullableOption<string>;
}
export interface WindowsMalwareSeverityCount {
    // Count of distinct malwares for this malware State. Valid values -2147483648 to 2147483647
    distinctMalwareCount?: number;
    // The Timestamp of the last update for the WindowsMalwareSeverityCount in UTC
    lastUpdateDateTime?: string;
    // Count of threats detections for this malware severity. Valid values -2147483648 to 2147483647
    malwareDetectionCount?: number;
    // Malware Threat Severity. Possible values are: unknown, low, moderate, high, severe.
    severity?: WindowsMalwareSeverity;
}
export interface WindowsMalwareStateCount {
    // Count of devices with malware detections for this malware State
    deviceCount?: number;
    // Count of distinct malwares for this malware State. Valid values -2147483648 to 2147483647
    distinctMalwareCount?: number;
    // The Timestamp of the last update for the device count in UTC
    lastUpdateDateTime?: string;
    // Count of total malware detections for this malware State. Valid values -2147483648 to 2147483647
    malwareDetectionCount?: number;
    /**
     * Malware Threat State. Possible values are: active, actionFailed, manualStepsRequired, fullScanRequired, rebootRequired,
     * remediatedWithNonCriticalFailures, quarantined, removed, cleaned, allowed, noStatusCleared.
     */
    state?: WindowsMalwareThreatState;
}
export interface MobileAppTroubleshootingHistoryItem {
    // Time when the history item occurred.
    occurrenceDateTime?: string;
    // Object containing detailed information about the error and its remediation.
    troubleshootingErrorDetails?: NullableOption<DeviceManagementTroubleshootingErrorDetails>;
}
export interface Windows10XCustomSubjectAlternativeName {
    // Custom SAN Name
    name?: NullableOption<string>;
    /**
     * Custom SAN Type. Possible values are: none, emailAddress, userPrincipalName, customAzureADAttribute, domainNameService,
     * universalResourceIdentifier.
     */
    sanType?: SubjectAlternativeNameType;
}
export interface AppleOwnerTypeEnrollmentType {
    // The enrollment type. Possible values are: unknown, device, user.
    enrollmentType?: AppleUserInitiatedEnrollmentType;
    // The owner type. Possible values are: unknown, company, personal.
    ownerType?: ManagedDeviceOwnerType;
}
// tslint:disable-next-line: interface-name
export interface ImportedWindowsAutopilotDeviceIdentityState {
    // Device error code reported by Device Directory Service(DDS).
    deviceErrorCode?: number;
    // Device error name reported by Device Directory Service(DDS).
    deviceErrorName?: NullableOption<string>;
    /**
     * Device status reported by Device Directory Service(DDS). Possible values are: unknown, pending, partial, complete,
     * error.
     */
    deviceImportStatus?: ImportedWindowsAutopilotDeviceIdentityImportStatus;
    // Device Registration ID for successfully added device reported by Device Directory Service(DDS).
    deviceRegistrationId?: NullableOption<string>;
}
export interface ManagementCertificateWithThumbprint {
    // The Base 64 encoded management certificate
    certificate?: NullableOption<string>;
    // The thumbprint of the management certificate
    thumbprint?: NullableOption<string>;
}
export interface SuggestedEnrollmentLimit {
    // The suggested enrollment limit within a day
    suggestedDailyLimit?: number;
}
// tslint:disable-next-line: no-empty-interface
export interface ManagementConditionExpression {}
// tslint:disable-next-line: no-empty-interface
export interface ManagementConditionExpressionModel extends ManagementConditionExpression {}
export interface BinaryManagementConditionExpression extends ManagementConditionExpressionModel {
    // The first operand of the binary operation.
    firstOperand?: ManagementConditionExpressionModel;
    // The operator used in the evaluation of the binary operation. Possible values are: or, and.
    operator?: BinaryManagementConditionExpressionOperatorType;
    // The second operand of the binary operation.
    secondOperand?: ManagementConditionExpressionModel;
}
export interface ManagementConditionExpressionString extends ManagementConditionExpression {
    // The management condition statement expression string value.
    value?: string;
}
export interface UnaryManagementConditionExpression extends ManagementConditionExpressionModel {
    // The operand of the unary operation.
    operand?: ManagementConditionExpressionModel;
    // The operator used in the evaluation of the unary operation. Possible values are: not.
    operator?: UnaryManagementConditionExpressionOperatorType;
}
export interface VariableManagementConditionExpression extends ManagementConditionExpressionModel {
    // The management condition id that is used to evaluate the expression.
    managementConditionId?: string;
}
export interface GroupPolicyPresentationDropdownListItem {
    // Localized display name for the drop-down list item.
    displayName?: NullableOption<string>;
    // Associated value for the drop-down list item
    value?: NullableOption<string>;
}
export interface GroupPolicyUploadedLanguageFile {
    // The contents of the uploaded ADML file.
    content?: NullableOption<number>;
    // The file name of the uploaded ADML file.
    fileName?: NullableOption<string>;
    // Key of the entity.
    id?: NullableOption<string>;
    // The language code of the uploaded ADML file.
    languageCode?: NullableOption<string>;
    // The date and time the entity was last modified.
    lastModifiedDateTime?: string;
}
// tslint:disable-next-line: no-empty-interface
export interface MobileAppIdentifier {}
export interface AndroidMobileAppIdentifier extends MobileAppIdentifier {
    // The identifier for an app, as specified in the play store.
    packageId?: string;
}
// tslint:disable-next-line: interface-name
export interface IosMobileAppIdentifier extends MobileAppIdentifier {
    // The identifier for an app, as specified in the app store.
    bundleId?: string;
}
export interface MacAppIdentifier extends MobileAppIdentifier {
    // The identifier for an app, as specified in the app store.
    bundleId?: string;
}
export interface ManagedAppDiagnosticStatus {
    // Instruction on how to mitigate a failed validation
    mitigationInstruction?: NullableOption<string>;
    // The state of the operation
    state?: NullableOption<string>;
    // The validation friendly name
    validationName?: NullableOption<string>;
}
export interface ManagedAppPolicyDeploymentSummaryPerApp {
    // Number of users the policy is applied.
    configurationAppliedUserCount?: number;
    // Deployment of an app.
    mobileAppIdentifier?: NullableOption<MobileAppIdentifier>;
}
export interface WindowsAppIdentifier extends MobileAppIdentifier {
    // The identifier for an app, as specified in the app store.
    windowsAppId?: string;
}
export interface WindowsInformationProtectionApp {
    // If true, app is denied protection or exemption.
    denied?: boolean;
    // The app's description.
    description?: NullableOption<string>;
    // App display name.
    displayName?: string;
    // The product name.
    productName?: NullableOption<string>;
    // The publisher name
    publisherName?: NullableOption<string>;
}
export interface WindowsInformationProtectionDataRecoveryCertificate {
    // Data recovery Certificate
    certificate?: NullableOption<number>;
    // Data recovery Certificate description
    description?: NullableOption<string>;
    // Data recovery Certificate expiration datetime
    expirationDateTime?: string;
    // Data recovery Certificate subject name
    subjectName?: NullableOption<string>;
}
export interface WindowsInformationProtectionDesktopApp extends WindowsInformationProtectionApp {
    // The binary name.
    binaryName?: string;
    // The high binary version.
    binaryVersionHigh?: NullableOption<string>;
    // The lower binary version.
    binaryVersionLow?: NullableOption<string>;
}
export interface WindowsInformationProtectionIPRangeCollection {
    // Display name
    displayName?: string;
    // Collection of ip ranges
    ranges?: IpRange[];
}
export interface WindowsInformationProtectionProxiedDomainCollection {
    // Display name
    displayName?: string;
    // Collection of proxied domains
    proxiedDomains?: ProxiedDomain[];
}
export interface WindowsInformationProtectionResourceCollection {
    // Display name
    displayName?: string;
    // Collection of resources
    resources?: NullableOption<string[]>;
}
// tslint:disable-next-line: no-empty-interface
export interface WindowsInformationProtectionStoreApp extends WindowsInformationProtectionApp {}
export interface KeyLongValuePair {
    // Name for this key long value pair
    name?: string;
    // Value for this key long value pair
    value?: number;
}
export interface MetricTimeSeriesDataPoint {
    // Time of the metric time series data point
    dateTime?: string;
    // Value of the metric time series data point
    value?: number;
}
export interface ConfigManagerPolicySummary {
    // The number of devices evaluated to be compliant by the policy.
    compliantDeviceCount?: number;
    // The number of devices that have have been remediated by the policy.
    enforcedDeviceCount?: number;
    // The number of devices that failed to be evaluated by the policy.
    failedDeviceCount?: number;
    // The number of devices evaluated to be noncompliant by the policy.
    nonCompliantDeviceCount?: number;
    // The number of devices that have acknowledged the policy but are pending evaluation.
    pendingDeviceCount?: number;
    // The number of devices targeted by the policy.
    targetedDeviceCount?: number;
}
export interface UnmanagedDevice {
    // Device name.
    deviceName?: NullableOption<string>;
    // Domain.
    domain?: NullableOption<string>;
    // IP address.
    ipAddress?: NullableOption<string>;
    // Last logged on user.
    lastLoggedOnUser?: NullableOption<string>;
    // Last seen date and time.
    lastSeenDateTime?: string;
    // Location.
    location?: NullableOption<string>;
    // MAC address.
    macAddress?: NullableOption<string>;
    // Manufacturer.
    manufacturer?: NullableOption<string>;
    // Model.
    model?: NullableOption<string>;
    // Operating system.
    os?: NullableOption<string>;
    // Operating system version.
    osVersion?: NullableOption<string>;
}
export interface DeviceAndAppManagementAssignedRoleDetails {
    // Role Assignment IDs for the specifc Role Assignments assigned to a user.
    roleAssignmentIds?: NullableOption<string[]>;
    // Role Definition IDs for the specifc Role Definitions assigned to a user.
    roleDefinitionIds?: NullableOption<string[]>;
}
export interface ResourceAction {
    // Allowed Actions
    allowedResourceActions?: NullableOption<string[]>;
    // Not Allowed Actions.
    notAllowedResourceActions?: NullableOption<string[]>;
}
export interface RolePermission {
    // Allowed Actions - Deprecated
    actions?: NullableOption<string[]>;
    // Resource Actions each containing a set of allowed and not allowed permissions.
    resourceActions?: NullableOption<ResourceAction[]>;
}
export interface EmbeddedSIMActivationCode {
    // The input must match the following regular expression: '^[0-9]{19}[0-9]?$'.
    integratedCircuitCardIdentifier?: string;
    // The input must match the following regular expression: '^[a-zA-Z0-9\-]*$'.
    matchingIdentifier?: string;
    // The input must match the following regular expression: '^([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\.)+[a-zA-Z]{2,}$'.
    smdpPlusServerAddress?: string;
}
export interface DeviceManagementTroubleshootingErrorDetails {
    // Not yet documented
    context?: NullableOption<string>;
    // Not yet documented
    failure?: NullableOption<string>;
    // The detailed description of what went wrong.
    failureDetails?: NullableOption<string>;
    // The detailed description of how to remediate this issue.
    remediation?: NullableOption<string>;
    // Links to helpful documentation about this failure.
    resources?: NullableOption<DeviceManagementTroubleshootingErrorResource[]>;
}
export interface DeviceManagementTroubleshootingErrorResource {
    // The link to the web resource. Can contain any of the following formatters: {{UPN}}, {{DeviceGUID}}, {{UserGUID}}
    link?: NullableOption<string>;
    // Not yet documented
    text?: NullableOption<string>;
}
export interface ManagedDeviceSummarizedAppState {
    // DeviceId of device represented by this object
    deviceId?: NullableOption<string>;
    // runState for the object. Possible values are: unknown, success, fail, scriptError, pending, notApplicable.
    summarizedAppState?: RunState;
}
export interface MobileAppIntentAndStateDetail {
    // MobieApp identifier.
    applicationId?: NullableOption<string>;
    // The admin provided or imported title of the app.
    displayName?: NullableOption<string>;
    // Human readable version of the application
    displayVersion?: NullableOption<string>;
    /**
     * The install state of the app. Possible values are: installed, failed, notInstalled, uninstallFailed, pendingInstall,
     * unknown, notApplicable.
     */
    installState?: ResultantAppState;
    /**
     * Mobile App Intent. Possible values are: available, notAvailable, requiredInstall, requiredUninstall,
     * requiredAndAvailableInstall, availableInstallWithoutEnrollment, exclude.
     */
    mobileAppIntent?: MobileAppIntent;
    // The supported platforms for the app.
    supportedDeviceTypes?: NullableOption<MobileAppSupportedDeviceType[]>;
}
export interface MobileAppSupportedDeviceType {
    // Maximum OS version
    maximumOperatingSystemVersion?: NullableOption<string>;
    // Minimum OS version
    minimumOperatingSystemVersion?: NullableOption<string>;
    /**
     * Device type. Possible values are: desktop, windowsRT, winMO6, nokia, windowsPhone, mac, winCE, winEmbedded, iPhone,
     * iPad, iPod, android, iSocConsumer, unix, macMDM, holoLens, surfaceHub, androidForWork, androidEnterprise, windows10x,
     * androidnGMS, chromeOS, linux, blackberry, palm, unknown, cloudPC.
     */
    type?: DeviceType;
}
export interface MobileAppTroubleshootingAppPolicyCreationHistory extends MobileAppTroubleshootingHistoryItem {
    // Error code for the failure, empty if no failure.
    errorCode?: NullableOption<string>;
    // Status of the item. Possible values are: unknown, success, fail, scriptError, pending, notApplicable.
    runState?: RunState;
}
export interface MobileAppTroubleshootingAppStateHistory extends MobileAppTroubleshootingHistoryItem {
    /**
     * Action type for Intune Application. Possible values are: unknown, installCommandSent, installed, uninstalled,
     * userRequestedInstall.
     */
    actionType?: MobileAppActionType;
    // Error code for the failure, empty if no failure.
    errorCode?: NullableOption<string>;
    // Status of the item. Possible values are: unknown, success, fail, scriptError, pending, notApplicable.
    runState?: RunState;
}
export interface MobileAppTroubleshootingAppTargetHistory extends MobileAppTroubleshootingHistoryItem {
    // Error code for the failure, empty if no failure.
    errorCode?: NullableOption<string>;
    // Status of the item. Possible values are: unknown, success, fail, scriptError, pending, notApplicable.
    runState?: RunState;
    // AAD security group id to which it was targeted.
    securityGroupId?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface MobileAppTroubleshootingAppUpdateHistory extends MobileAppTroubleshootingHistoryItem {}
// tslint:disable-next-line: no-empty-interface
export interface MobileAppTroubleshootingDeviceCheckinHistory extends MobileAppTroubleshootingHistoryItem {}
export interface ExpeditedWindowsQualityUpdateSettings {
    // The number of days after installation that forced reboot will happen.
    daysUntilForcedReboot?: number;
    // The release date to identify a quality update.
    qualityUpdateRelease?: string;
}
// tslint:disable-next-line: interface-name
export interface IosAvailableUpdateVersion {
    // The expiration date of the update.
    expirationDateTime?: string;
    // The posting date of the update.
    postingDateTime?: string;
    // The version of the update.
    productVersion?: string;
    // List of supported devices for the update.
    supportedDevices?: NullableOption<string[]>;
}
export interface ServiceHealthIssuePost {
    // The published time of the post.
    createdDateTime?: string;
    // The content of the service issue post.
    description?: NullableOption<ItemBody>;
    // The post type of the service issue historical post. Possible values are: regular, quick, strategic, unknownFutureValue.
    postType?: NullableOption<PostType>;
}
export interface ServiceUpdateMessageViewpoint {
    // Indicates whether the user archived the message.
    isArchived?: NullableOption<boolean>;
    // Indicates whether the user marked the message as favorite.
    isFavorited?: NullableOption<boolean>;
    // Indicates whether the user read the message.
    isRead?: NullableOption<boolean>;
}
export interface AggregationOption {
    // Specifies the criteria to compute an aggregation. Optional.
    bucketDefinition?: BucketAggregationDefinition;
    // Specifies the field in the schema of the specified entity type that aggregation should be computed on. Required.
    field?: string;
    /**
     * The number of searchBucket resources to be returned. This is not required when the range is provided manually in the
     * search request. Optional.
     */
    size?: NullableOption<number>;
}
export interface BucketAggregationDefinition {
    // True to specify the sort order as descending. The default is false, with the sort order as ascending. Optional.
    isDescending?: NullableOption<boolean>;
    // The minimum number of items that should be present in the aggregation to be returned in a bucket. Optional.
    minimumCount?: NullableOption<number>;
    /**
     * A filter to define a matching criteria. The key should start with the specified prefix to be returned in the response.
     * Optional.
     */
    prefixFilter?: NullableOption<string>;
    /**
     * Specifies the manual ranges to compute the aggregations. This is only valid for non-string refiners of date or numeric
     * type. Optional.
     */
    ranges?: NullableOption<BucketAggregationRange[]>;
    /**
     * The possible values are count to sort by the number of matches in the aggregation, keyAsStringto sort alphabeticaly
     * based on the key in the aggregation, keyAsNumber for numerical sorting based on the key in the aggregation. Required.
     */
    sortBy?: BucketAggregationSortProperty;
}
export interface AlterationResponse {
    // Defines the original user query string.
    originalQueryString?: NullableOption<string>;
    // Defines the details of alteration information for the spelling correction.
    queryAlteration?: NullableOption<SearchAlteration>;
    // Defines the type of the spelling correction. Possible values are suggestion, modification.
    queryAlterationType?: NullableOption<SearchAlterationType>;
}
export interface SearchAlteration {
    /**
     * Defines the altered highlighted query string with spelling correction. The annotation around the corrected segment is
     * (/ue000, /ue001)
     */
    alteredHighlightedQueryString?: NullableOption<string>;
    // Defines the altered query string with spelling correction.
    alteredQueryString?: NullableOption<string>;
    // Represents changed segments with respect to original query.
    alteredQueryTokens?: NullableOption<AlteredQueryToken[]>;
}
export interface AlteredQueryToken {
    // Defines the length of a changed segment.
    length?: NullableOption<number>;
    // Defines the offset of a changed segment.
    offset?: NullableOption<number>;
    // Represents the corrected segment string.
    suggestion?: NullableOption<string>;
}
export interface BucketAggregationRange {
    /**
     * Defines the lower bound from which to compute the aggregation. This can be a numeric value or a string representation
     * of a date using the YYYY-MM-DDTHH:mm:ss.sssZ format. Required.
     */
    from?: string;
    /**
     * Defines the upper bound up to which to compute the aggregation. This can be a numeric value or a string representation
     * of a date using the YYYY-MM-DDTHH:mm:ss.sssZ format. Required.
     */
    to?: string;
}
export interface ResultTemplate {
    // JSON schema of the result template.
    body?: NullableOption<any>;
    // Name of the result template.
    displayName?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface Dictionary {}
// tslint:disable-next-line: no-empty-interface
export interface ResultTemplateDictionary extends Dictionary {}
export interface ResultTemplateOption {
    /**
     * Indicates whether search display layouts are enabled. If enabled, the user will get the result template to render the
     * search results content in the resultTemplates property of the response. The result template is based on Adaptive Cards.
     * This property is optional.
     */
    enableResultTemplate?: NullableOption<boolean>;
}
export interface SearchAggregation {
    // Defines the actual buckets of the computed aggregation.
    buckets?: NullableOption<SearchBucket[]>;
    // Defines on which field the aggregation was computed on.
    field?: NullableOption<string>;
}
export interface SearchBucket {
    /**
     * A token containing the encoded filter to aggregate search matches by the specific key value. To use the filter, pass
     * the token as part of the aggregationFilter property in a searchRequest object, in the format
     * '{field}:/'{aggregationFilterToken}/''. See an example.
     */
    aggregationFilterToken?: NullableOption<string>;
    /**
     * The approximate number of search matches that share the same value specified in the key property. Note that this number
     * is not the exact number of matches.
     */
    count?: NullableOption<number>;
    // The discrete value of the field that an aggregation was computed on.
    key?: NullableOption<string>;
}
export interface SearchAlterationOptions {
    /**
     * Indicates whether spelling modifications are enabled. If enabled, user will get the search results for corrected query
     * when there are no results for the original query with typos and get the spelling modification information in
     * queryAlterationResponse property of the response. Optional.
     */
    enableModification?: NullableOption<boolean>;
    /**
     * Indicates whether spelling suggestions are enabled. If enabled, user will get the search results for original search
     * query and suggesting spelling correction in queryAlterationResponse property of the response for typos in query.
     * Optional.
     */
    enableSuggestion?: NullableOption<boolean>;
}
export interface SearchHit {
    // The name of the content source which the externalItem is part of .
    contentSource?: NullableOption<string>;
    // The internal identifier for the item.
    hitId?: NullableOption<string>;
    // The rank or the order of the result.
    rank?: NullableOption<number>;
    /**
     * ID of the result template for rendering the search result. This ID must map to a display layout in the resultTemplates
     * dictionary, included in the searchresponse as well.
     */
    resultTemplateId?: NullableOption<string>;
    // A summary of the result, if a summary is available.
    summary?: NullableOption<string>;
    _id?: NullableOption<string>;
    _score?: NullableOption<number>;
    _summary?: NullableOption<string>;
    resource?: NullableOption<Entity>;
    _source?: NullableOption<Entity>;
}
export interface SearchHitsContainer {
    // Contains the collection of aggregations computed based on the provided aggregationOption specified in the request.
    aggregations?: NullableOption<SearchAggregation[]>;
    // A collection of the search results.
    hits?: NullableOption<SearchHit[]>;
    /**
     * Provides information if more results are available. Based on this information, you can adjust the from and size
     * properties of the searchRequest accordingly.
     */
    moreResultsAvailable?: NullableOption<boolean>;
    /**
     * The total number of results. Note this is not the number of results on the page, but the total number of results
     * satisfying the query.
     */
    total?: NullableOption<number>;
}
export interface SearchQuery {
    // The search query containing the search terms. Required.
    queryString?: NullableOption<string>;
    query_string?: NullableOption<SearchQueryString>;
}
export interface SearchQueryString {
    // Contains the actual search terms of the request.
    query?: string;
}
export interface SearchRequest {
    /**
     * Contains one or more filters to obtain search results aggregated and filtered to a specific value of a field.
     * Optional.Build this filter based on a prior search that aggregates by the same field. From the response of the prior
     * search, identify the searchBucket that filters results to the specific value of the field, use the string in its
     * aggregationFilterToken property, and build an aggregation filter string in the format
     * '{field}:/'{aggregationFilterToken}/''. If multiple values for the same field need to be provided, use the strings in
     * its aggregationFilterToken property and build an aggregation filter string in the format
     * '{field}:or(/'{aggregationFilterToken1}/',/'{aggregationFilterToken2}/')'. For example, searching and aggregating drive
     * items by file type returns a searchBucket for the file type docx in the response. You can conveniently use the
     * aggregationFilterToken returned for this searchBucket in a subsequent search query and filter matches down to drive
     * items of the docx file type. Example 1 and example 2 show the actual requests and responses.
     */
    aggregationFilters?: NullableOption<string[]>;
    // Specifies aggregations (also known as refiners) to be returned alongside search results. Optional.
    aggregations?: NullableOption<AggregationOption[]>;
    /**
     * Contains the connection to be targeted. Respects the following format : /external/connections/connectionid where
     * connectionid is the ConnectionId defined in the Connectors Administration. Note: contentSource is only applicable when
     * entityType=externalItem. Optional.
     */
    contentSources?: NullableOption<string[]>;
    /**
     * This triggers hybrid sort for messages: the first 3 messages are the most relevant. This property is only applicable to
     * entityType=message. Optional.
     */
    enableTopResults?: NullableOption<boolean>;
    /**
     * One or more types of resources expected in the response. Possible values are: list, site, listItem, message, event,
     * drive, driveItem, person, externalItem. See known limitations for those combinations of two or more entity types that
     * are supported in the same search request. Required.
     */
    entityTypes?: NullableOption<EntityType[]>;
    /**
     * Contains the fields to be returned for each resource object specified in entityTypes, allowing customization of the
     * fields returned by default otherwise, including additional fields such as custom managed properties from SharePoint and
     * OneDrive, or custom fields in externalItem from content that Microsoft Graph connectors bring in. The fields property
     * can be using the semantic labels applied to properties. For example, if a property is label as title, you can retrieve
     * it using the following syntax : label_title.Optional.
     */
    fields?: NullableOption<string[]>;
    // Specifies the offset for the search results. Offset 0 returns the very first result. Optional.
    from?: number;
    // Contains the query terms. Required.
    query?: SearchQuery;
    // Provides the search result templates options for rendering connectors search results.
    resultTemplateOptions?: NullableOption<ResultTemplateOption>;
    // The size of the page to be retrieved. Optional.
    size?: number;
    /**
     * Contains the ordered collection of fields and direction to sort results. There can be at most 5 sort properties in the
     * collection. Optional.
     */
    sortProperties?: NullableOption<SortProperty[]>;
    stored_fields?: NullableOption<string[]>;
}
export interface SortProperty {
    // True if the sort order is descending. Default is false, with the sort order as ascending. Optional.
    isDescending?: NullableOption<boolean>;
    // The name of the property to sort on. Required.
    name?: string;
}
export interface SearchResponse {
    // Provides details of query alteration response for spelling correction.
    queryAlterationResponse?: NullableOption<AlterationResponse>;
    // Represents results from a search query, and the terms used for the query.
    value?: SearchResultSet[];
}
export interface SearchResultSet {
    // A collection of search results.
    hitsContainers?: NullableOption<SearchHitsContainer[]>;
    /**
     * A dictionary of resultTemplateIds and associated values, which include the name and JSON schema of the result
     * templates.
     */
    resultTemplates?: NullableOption<ResultTemplateDictionary>;
    // Contains the search terms sent in the initial search query.
    searchTerms?: NullableOption<string[]>;
}
export interface DateTimeTimeZoneType {
    dateTime?: string;
}
export interface PostalAddressType {
    city?: NullableOption<string>;
    countryLetterCode?: NullableOption<string>;
    postalCode?: NullableOption<string>;
    state?: NullableOption<string>;
    street?: NullableOption<string>;
}
export interface PayloadTypes {
    /**
     * The notification content of a raw user notification that will be delivered to and consumed by the app client on all
     * supported platforms (Windows, iOS, Android or WebPush) receiving this notification. At least one of Payload.RawContent
     * or Payload.VisualContent needs to be valid for a POST Notification request.
     */
    rawContent?: NullableOption<string>;
    /**
     * The visual content of a visual user notification, which will be consumed by the notification platform on each supported
     * platform (Windows, iOS and Android only) and rendered for the user. At least one of Payload.RawContent or
     * Payload.VisualContent needs to be valid for a POST Notification request.
     */
    visualContent?: NullableOption<VisualProperties>;
}
export interface VisualProperties {
    // The body of a visual user notification. Body is optional.
    body?: NullableOption<string>;
    // The title of a visual user notification. This field is required for visual notification payloads.
    title?: NullableOption<string>;
}
export interface TargetPolicyEndpoints {
    /**
     * Use to filter the notification distribution to a specific platform or platforms. Valid values are Windows, iOS, Android
     * and WebPush. By default, all push endpoint types (Windows, iOS, Android and WebPush) are enabled.
     */
    platformTypes?: NullableOption<string[]>;
}
export interface UserActivationCounts {
    // True if the user used the product on a shared computer before.
    activatedOnSharedComputer?: NullableOption<boolean>;
    // The activation count on an Android device.
    android?: NullableOption<number>;
    // The activation count on iOS.
    ios?: NullableOption<number>;
    // The date of the latest activation.
    lastActivatedDate?: NullableOption<string>;
    // The activation count on Mac OS.
    mac?: NullableOption<number>;
    // The product type, such as 'Microsoft 365 ProPlus'or 'Project Client'.
    productType?: NullableOption<string>;
    // The activation count on Windows. This number includes every activation on any Windows computer.
    windows?: NullableOption<number>;
    // The activation count on Windows 10 mobile.
    windows10Mobile?: NullableOption<number>;
}
// tslint:disable-next-line: no-empty-interface
export interface PlannerAppliedCategories {}
export interface PlannerAssignment {
    // The identity of the user that performed the assignment of the task, i.e. the assignor.
    assignedBy?: NullableOption<IdentitySet>;
    /**
     * The time at which the task was assigned. 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 is 2014-01-01T00:00:00Z
     */
    assignedDateTime?: NullableOption<string>;
    // Hint used to order assignees in a task. The format is defined as outlined here.
    orderHint?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface PlannerAssignments {}
export interface PlannerCategoryDescriptions {
    // The label associated with Category 1
    category1?: NullableOption<string>;
    // The label associated with Category 10
    category10?: NullableOption<string>;
    // The label associated with Category 11
    category11?: NullableOption<string>;
    // The label associated with Category 12
    category12?: NullableOption<string>;
    // The label associated with Category 13
    category13?: NullableOption<string>;
    // The label associated with Category 14
    category14?: NullableOption<string>;
    // The label associated with Category 15
    category15?: NullableOption<string>;
    // The label associated with Category 16
    category16?: NullableOption<string>;
    // The label associated with Category 17
    category17?: NullableOption<string>;
    // The label associated with Category 18
    category18?: NullableOption<string>;
    // The label associated with Category 19
    category19?: NullableOption<string>;
    // The label associated with Category 2
    category2?: NullableOption<string>;
    // The label associated with Category 20
    category20?: NullableOption<string>;
    // The label associated with Category 21
    category21?: NullableOption<string>;
    // The label associated with Category 22
    category22?: NullableOption<string>;
    // The label associated with Category 23
    category23?: NullableOption<string>;
    // The label associated with Category 24
    category24?: NullableOption<string>;
    // The label associated with Category 25
    category25?: NullableOption<string>;
    // The label associated with Category 3
    category3?: NullableOption<string>;
    // The label associated with Category 4
    category4?: NullableOption<string>;
    // The label associated with Category 5
    category5?: NullableOption<string>;
    // The label associated with Category 6
    category6?: NullableOption<string>;
    // The label associated with Category 7
    category7?: NullableOption<string>;
    // The label associated with Category 8
    category8?: NullableOption<string>;
    // The label associated with Category 9
    category9?: NullableOption<string>;
}
export interface PlannerChecklistItem {
    // Value is true if the item is checked and false otherwise.
    isChecked?: NullableOption<boolean>;
    // Read-only. User ID by which this is last modified.
    lastModifiedBy?: NullableOption<IdentitySet>;
    /**
     * Read-only. Date and time at which this is last modified. 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 is 2014-01-01T00:00:00Z
     */
    lastModifiedDateTime?: NullableOption<string>;
    // Used to set the relative order of items in the checklist. The format is defined as outlined here.
    orderHint?: NullableOption<string>;
    // Title of the checklist item
    title?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface PlannerChecklistItems {}
export interface PlannerExternalReference {
    // A name alias to describe the reference.
    alias?: NullableOption<string>;
    // Read-only. User ID by which this is last modified.
    lastModifiedBy?: NullableOption<IdentitySet>;
    /**
     * Read-only. Date and time at which this is last modified. 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 is 2014-01-01T00:00:00Z
     */
    lastModifiedDateTime?: NullableOption<string>;
    // Used to set the relative priority order in which the reference will be shown as a preview on the task.
    previewPriority?: NullableOption<string>;
    // Used to describe the type of the reference. Types include: PowerPoint, Word, Excel, Other.
    type?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface PlannerExternalReferences {}
export interface PlannerFavoritePlanReference {
    // Hint used to order items of this type in a list view. The format is defined in Using order hints in Planner.
    orderHint?: NullableOption<string>;
    // Title of the plan at the time the user marked it as a favorite.
    planTitle?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface PlannerFavoritePlanReferenceCollection {}
// tslint:disable-next-line: no-empty-interface
export interface PlannerOrderHintsByAssignee {}
export interface PlannerPlanContainer {
    // The identifier of the resource that contains the plan.
    containerId?: string;
    /**
     * The type of the resource that contains the plan. See the previous table for supported types. Possible values are:
     * group, unknownFutureValue, roster. Note that you must use the Prefer: include-unknown-enum-members request header to
     * get the following value in this evolvable enum: roster.
     */
    type?: PlannerContainerType;
    // The full canonical URL of the container.
    url?: string;
}
export interface PlannerPlanContext {
    /**
     * Nullable. An app-defined type of association between the plannerPlan and the app. The app can use this information to
     * track different kinds of relationships to the same plannerPlan.
     */
    associationType?: NullableOption<string>;
    /**
     * Read-only. The date and time when the plannerPlanContext was 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 is
     * 2014-01-01T00:00:00Z.
     */
    createdDateTime?: NullableOption<string>;
    /**
     * The segments of the name of the external experience. Segments represent a hierarchical structure that allows other apps
     * to display the relationship.
     */
    displayNameSegments?: NullableOption<string[]>;
    /**
     * Read-only. Indicates whether the plan is created from the specified context. Auto-generated based on whether the
     * context is specified as part of plan creation.
     */
    isCreationContext?: NullableOption<boolean>;
    // Read-only. ID of the app that created the plannerPlanContext.
    ownerAppId?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface PlannerPlanContextCollection {}
export interface PlannerPlanContextDetails {
    /**
     * Nullable. Specifies the text to use in a user experience to display a link the the associated plannerPlanContext. If
     * null, applications should display the link with a custom text based on the displayLinkType property.
     */
    customLinkText?: NullableOption<string>;
    /**
     * Specifies how an application should display the link to the associated plannerPlanContext. Applications may choose to
     * provide customized text, description, icons, or other experiences based on the type of the link. Possible values are:
     * teamsTab, sharePointPage, meetingNotes, other, unknownFutureValue.
     */
    displayLinkType?: NullableOption<PlannerPlanContextType>;
    // URL of the user experience represented by the associated plannerPlanContext.
    url?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface PlannerPlanContextDetailsCollection {}
export interface PlannerRecentPlanReference {
    /**
     * The date and time the plan was last viewed by 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 is 2014-01-01T00:00:00Z.
     */
    lastAccessedDateTime?: NullableOption<string>;
    // The title of the plan at the time the user viewed it.
    planTitle?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface PlannerRecentPlanReferenceCollection {}
export interface PlannerTaskCreation {
    /**
     * Information about the publication process that created this task. null value indicates that the task was not created by
     * a publication process.
     */
    teamsPublicationInfo?: NullableOption<PlannerTeamsPublicationInfo>;
}
export interface PlannerTeamsPublicationInfo {
    // The date and time when this task was last modified by the publication process. Read-only.
    lastModifiedDateTime?: NullableOption<string>;
    // The identifier of the publication. Read-only.
    publicationId?: NullableOption<string>;
    // The identifier of the plannerPlan this task was originally placed in. Read-only.
    publishedToPlanId?: NullableOption<string>;
    // The identifier of the team that initiated the publication process. Read-only.
    publishingTeamId?: NullableOption<string>;
    /**
     * The display name of the team that initiated the publication process. This display name is for reference only, and might
     * not represent the most up-to-date name of the team. Read-only.
     */
    publishingTeamName?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface PlannerUserIds {}
// tslint:disable-next-line: interface-name
export interface InsightIdentity {
    // The email address of the user who shared the item.
    address?: NullableOption<string>;
    // The display name of the user who shared the item.
    displayName?: NullableOption<string>;
    // The id of the user who shared the item.
    id?: NullableOption<string>;
}
export interface ResourceReference {
    // The item's unique identifier.
    id?: NullableOption<string>;
    // A string value that can be used to classify the item, such as 'microsoft.graph.driveItem'
    type?: NullableOption<string>;
    // A URL leading to the referenced item.
    webUrl?: NullableOption<string>;
}
export interface ResourceVisualization {
    /**
     * 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.
     */
    containerDisplayName?: NullableOption<string>;
    // Can be used for filtering by the type of container in which the file is stored. Such as Site or OneDriveBusiness.
    containerType?: NullableOption<string>;
    // A path leading to the folder in which the item is stored.
    containerWebUrl?: NullableOption<string>;
    /**
     * 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.
     */
    mediaType?: NullableOption<string>;
    // A URL leading to the preview image for the item.
    previewImageUrl?: NullableOption<string>;
    // A preview text for the item.
    previewText?: NullableOption<string>;
    // The item's title text.
    title?: NullableOption<string>;
    /**
     * 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?: NullableOption<string>;
}
export interface SharingDetail {
    // The user who shared the document.
    sharedBy?: NullableOption<InsightIdentity>;
    /**
     * 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.
     */
    sharedDateTime?: NullableOption<string>;
    sharingReference?: NullableOption<ResourceReference>;
    // The subject with which the document was shared.
    sharingSubject?: NullableOption<string>;
    // Determines the way the document was shared, can be by a 'Link', 'Attachment', 'Group', 'Site'.
    sharingType?: NullableOption<string>;
}
export interface UsageDetails {
    /**
     * 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.
     */
    lastAccessedDateTime?: NullableOption<string>;
    /**
     * 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.
     */
    lastModifiedDateTime?: NullableOption<string>;
}
export interface CopyNotebookModel {
    createdBy?: NullableOption<string>;
    createdByIdentity?: NullableOption<IdentitySet>;
    createdTime?: NullableOption<string>;
    id?: NullableOption<string>;
    isDefault?: NullableOption<boolean>;
    isShared?: NullableOption<boolean>;
    lastModifiedBy?: NullableOption<string>;
    lastModifiedByIdentity?: NullableOption<IdentitySet>;
    lastModifiedTime?: NullableOption<string>;
    links?: NullableOption<NotebookLinks>;
    name?: NullableOption<string>;
    sectionGroupsUrl?: NullableOption<string>;
    sectionsUrl?: NullableOption<string>;
    self?: NullableOption<string>;
    userRole?: NullableOption<OnenoteUserRole>;
}
export interface NotebookLinks {
    // Opens the notebook in the OneNote native client if it's installed.
    oneNoteClientUrl?: NullableOption<ExternalLink>;
    // Opens the notebook in OneNote on the web.
    oneNoteWebUrl?: NullableOption<ExternalLink>;
}
export interface Diagnostic {
    // The message describing the condition that triggered the error or warning.
    message?: NullableOption<string>;
    // The link to the documentation for this issue.
    url?: NullableOption<string>;
}
export interface ExternalLink {
    // The url of the link.
    href?: NullableOption<string>;
}
export interface OnenoteOperationError {
    // The error code.
    code?: NullableOption<string>;
    // The error message.
    message?: NullableOption<string>;
}
export interface OnenotePagePreview {
    links?: NullableOption<OnenotePagePreviewLinks>;
    previewText?: NullableOption<string>;
}
export interface OnenotePagePreviewLinks {
    previewImageUrl?: NullableOption<ExternalLink>;
}
export interface OnenotePatchContentCommand {
    // The action to perform on the target element. Possible values are: replace, append, delete, insert, or prepend.
    action?: OnenotePatchActionType;
    /**
     * A string of well-formed HTML to add to the page, and any image or file binary data. If the content contains binary
     * data, the request must be sent using the multipart/form-data content type with a 'Commands' part.
     */
    content?: NullableOption<string>;
    /**
     * The location to add the supplied content, relative to the target element. Possible values are: after (default) or
     * before.
     */
    position?: NullableOption<OnenotePatchInsertPosition>;
    /**
     * The element to update. Must be the #&amp;lt;data-id&amp;gt; or the generated {id} of the element, or the body or title
     * keyword.
     */
    target?: string;
}
export interface PageLinks {
    // Opens the page in the OneNote native client if it's installed.
    oneNoteClientUrl?: NullableOption<ExternalLink>;
    // Opens the page in OneNote on the web.
    oneNoteWebUrl?: NullableOption<ExternalLink>;
}
export interface RecentNotebook {
    // The name of the notebook.
    displayName?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Read-only.
     */
    lastAccessedTime?: NullableOption<string>;
    /**
     * Links for opening the notebook. The oneNoteClientURL link opens the notebook in the OneNote client, if it's installed.
     * The oneNoteWebURL link opens the notebook in OneNote on the web.
     */
    links?: NullableOption<RecentNotebookLinks>;
    // The backend store where the Notebook resides, either OneDriveForBusiness or OneDrive.
    sourceService?: NullableOption<OnenoteSourceService>;
}
export interface RecentNotebookLinks {
    // Opens the notebook in the OneNote client, if it's installed.
    oneNoteClientUrl?: NullableOption<ExternalLink>;
    // Opens the notebook in OneNote on the web.
    oneNoteWebUrl?: NullableOption<ExternalLink>;
}
export interface SectionLinks {
    // Opens the section in the OneNote native client if it's installed.
    oneNoteClientUrl?: NullableOption<ExternalLink>;
    // Opens the section in OneNote on the web.
    oneNoteWebUrl?: NullableOption<ExternalLink>;
}
export interface CompanyDetail {
    // Address of the company.
    address?: NullableOption<PhysicalAddress>;
    // Department Name within a company.
    department?: NullableOption<string>;
    // Company name.
    displayName?: string;
    // Office Location of the person referred to.
    officeLocation?: NullableOption<string>;
    // Pronunciation guide for the company name.
    pronunciation?: NullableOption<string>;
    // Link to the company home page.
    webUrl?: NullableOption<string>;
}
export interface EducationalActivityDetail {
    // Shortened name of the degree or program (example: PhD, MBA)
    abbreviation?: NullableOption<string>;
    // Extracurricular activities undertaken alongside the program.
    activities?: NullableOption<string[]>;
    // Any awards or honors associated with the program.
    awards?: NullableOption<string[]>;
    // Short description of the program provided by the user.
    description?: NullableOption<string>;
    // Long-form name of the program that the user has provided.
    displayName?: string;
    // Majors and minors associated with the program. (if applicable)
    fieldsOfStudy?: NullableOption<string[]>;
    // The final grade, class, GPA or score.
    grade?: NullableOption<string>;
    // Additional notes the user has provided.
    notes?: NullableOption<string>;
    // Link to the degree or program page.
    webUrl?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface InferenceData {
    // Confidence score reflecting the accuracy of the data inferred about the user.
    confidenceScore?: NullableOption<number>;
    // Records if the user has confirmed this inference as being True or False.
    userHasVerifiedAccuracy?: NullableOption<boolean>;
}
// tslint:disable-next-line: interface-name
export interface InstitutionData {
    // Short description of the institution the user studied at.
    description?: NullableOption<string>;
    // Name of the institution the user studied at.
    displayName?: string;
    // Address or location of the institute.
    location?: NullableOption<PhysicalAddress>;
    // Link to the institution or department homepage.
    webUrl?: NullableOption<string>;
}
export interface PersonDataSources {
    type?: NullableOption<string[]>;
}
export interface PersonNamePronounciation {
    displayName?: NullableOption<string>;
    first?: NullableOption<string>;
    last?: NullableOption<string>;
    maiden?: NullableOption<string>;
    middle?: NullableOption<string>;
}
export interface PositionDetail {
    // Detail about the company or employer.
    company?: NullableOption<CompanyDetail>;
    // Description of the position in question.
    description?: NullableOption<string>;
    // When the position ended.
    endMonthYear?: NullableOption<string>;
    // The title held when in that position.
    jobTitle?: NullableOption<string>;
    // The role the position entailed.
    role?: NullableOption<string>;
    // The start month and year of the position.
    startMonthYear?: NullableOption<string>;
    // Short summary of the position.
    summary?: NullableOption<string>;
}
export interface ProfileCardAnnotation {
    /**
     * If present, the value of this field is used by the profile card as the default property label in the experience (for
     * example, 'Cost Center').
     */
    displayName?: NullableOption<string>;
    /**
     * Each resource in this collection represents the localized value of the attribute name for a given language, used as the
     * default label for that locale. For example, a user with a no-NB client gets 'Kostnads Senter' as the attribute label,
     * rather than 'Cost Center.'
     */
    localizations?: NullableOption<DisplayNameLocalization[]>;
}
export interface RegionalFormatOverrides {
    // The calendar to use, e.g., Gregorian Calendar.Returned by default.
    calendar?: NullableOption<string>;
    // The first day of the week to use, e.g., Sunday.Returned by default.
    firstDayOfWeek?: NullableOption<string>;
    // The long date time format to be used for displaying dates.Returned by default.
    longDateFormat?: NullableOption<string>;
    // The long time format to be used for displaying time.Returned by default.
    longTimeFormat?: NullableOption<string>;
    // The short date time format to be used for displaying dates.Returned by default.
    shortDateFormat?: NullableOption<string>;
    // The short time format to be used for displaying time.Returned by default.
    shortTimeFormat?: NullableOption<string>;
    // The timezone to be used for displaying time.Returned by default.
    timeZone?: NullableOption<string>;
}
export interface RelatedPerson {
    // Name of the person.
    displayName?: NullableOption<string>;
    /**
     * Possible values are: manager, colleague, directReport, dotLineReport, assistant, dotLineManager, alternateContact,
     * friend, spouse, sibling, child, parent, sponsor, emergencyContact, other, unknownFutureValue.
     */
    relationship?: NullableOption<PersonRelationship>;
    // Email address or reference to person within organization.
    userPrincipalName?: NullableOption<string>;
}
export interface ServiceInformation {
    // The name of the cloud service (for example, Twitter, Instagram).
    name?: string;
    // Contains the URL for the service being referenced.
    webUrl?: string;
}
export interface TranslationLanguageOverride {
    // The language to apply the override.Returned by default. Not nullable.
    languageTag?: string;
    // The translation override behavior for the language, if any.Returned by default. Not nullable.
    translationBehavior?: NullableOption<TranslationBehavior>;
}
export interface TranslationPreferences {
    // Translation override behavior for languages, if any.Returned by default.
    languageOverrides?: TranslationLanguageOverride[];
    // The user's preferred translation behavior.Returned by default. Not nullable.
    translationBehavior?: NullableOption<TranslationBehavior>;
    /**
     * The list of languages the user does not need translated. This is computed from the authoringLanguages collection in
     * regionalAndLanguageSettings, and the languageOverrides collection in translationPreferences. The list specifies neutral
     * culture values that include the language code without any country or region association. For example, it would specify
     * 'fr' for the neutral French culture, but not 'fr-FR' for the French culture in France. Returned by default. Read only.
     */
    untranslatedLanguages?: NullableOption<string[]>;
}
export interface GovernancePermission {
    // The access level. Valid values: None, UserRead, AdminRead, and AdminReadWrite.
    accessLevel?: NullableOption<string>;
    // Indicate if the requestor has any active role assignment for the access level.
    isActive?: NullableOption<boolean>;
    // Indicate if the requestor has any eligible role assignment for the access level.
    isEligible?: NullableOption<boolean>;
}
export interface GovernanceRoleAssignmentRequestStatus {
    status?: NullableOption<string>;
    statusDetails?: NullableOption<KeyValue[]>;
    subStatus?: NullableOption<string>;
}
export interface GovernanceRuleSetting {
    // The id of the rule. For example, ExpirationRule and MfaRule.
    ruleIdentifier?: NullableOption<string>;
    /**
     * The settings of the rule. The value is a JSON string with a list of pairs in the format of
     * Parameter_Name:Parameter_Value. For example, {'permanentAssignment':false,'maximumGrantPeriodInMinutes':129600}
     */
    setting?: NullableOption<string>;
}
export interface GovernanceSchedule {
    // The duration of a role assignment. It is in format of a TimeSpan.
    duration?: NullableOption<string>;
    /**
     * The end time of the role assignment. 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 is 2014-01-01T00:00:00Z. Note: if the value is null, it
     * indicates a permanent assignment.
     */
    endDateTime?: NullableOption<string>;
    /**
     * The start time of the role assignment. 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 is 2014-01-01T00:00:00Z
     */
    startDateTime?: NullableOption<string>;
    // The role assignment schedule type. Only Once is supported for now.
    type?: NullableOption<string>;
}
export interface TicketInfo {
    // Ticket number meta data
    ticketNumber?: NullableOption<string>;
    // Ticket system meta data
    ticketSystem?: NullableOption<string>;
}
export interface UnifiedRoleManagementPolicyRuleTarget {
    // The caller for the policy rule target. Allowed values are: None, Admin, EndUser.
    caller?: NullableOption<string>;
    // The list of settings which are enforced and cannot be overridden by child scopes. Use All for all settings.
    enforcedSettings?: NullableOption<string[]>;
    // The list of settings which can be inherited by child scopes. Use All for all settings.
    inheritableSettings?: NullableOption<string[]>;
    // The level for the policy rule target. Allowed values are: Eligibility, Assignment.
    level?: NullableOption<string>;
    /**
     * The operations for policy rule target. Allowed values are: All, Activate, Deactivate, Assign, Update, Remove, Extend,
     * Renew.
     */
    operations?: NullableOption<string[]>;
    targetObjects?: NullableOption<DirectoryObject[]>;
}
export interface RoleSuccessStatistics {
    permanentFail?: NullableOption<number>;
    permanentSuccess?: NullableOption<number>;
    removeFail?: NullableOption<number>;
    removeSuccess?: NullableOption<number>;
    roleId?: NullableOption<string>;
    roleName?: NullableOption<string>;
    temporaryFail?: NullableOption<number>;
    temporarySuccess?: NullableOption<number>;
    unknownFail?: NullableOption<number>;
}
export interface ArchivedPrintJob {
    // True if the job was acquired by a printer; false otherwise. Read-only.
    acquiredByPrinter?: boolean;
    // The dateTimeOffset when the job was acquired by the printer, if any. Read-only.
    acquiredDateTime?: NullableOption<string>;
    // The number of black and white pages that were printed. Read-only.
    blackAndWhitePageCount?: number;
    // The number of color pages that were printed. Read-only.
    colorPageCount?: number;
    // The dateTimeOffset when the job was completed, canceled or aborted. Read-only.
    completionDateTime?: NullableOption<string>;
    // The number of copies that were printed. Read-only.
    copiesPrinted?: number;
    // The user who created the print job. Read-only.
    createdBy?: NullableOption<UserIdentity>;
    // The dateTimeOffset when the job was created. Read-only.
    createdDateTime?: string;
    // The number of duplex (double-sided) pages that were printed. Read-only.
    duplexPageCount?: number;
    // The archived print job's GUID. Read-only.
    id?: string;
    // The total number of pages that were printed. Read-only.
    pageCount?: number;
    // The printer ID that the job was queued for. Read-only.
    printerId?: NullableOption<string>;
    // The print job's final processing state. Read-only.
    processingState?: PrintJobProcessingState;
    // The number of simplex (single-sided) pages that were printed. Read-only.
    simplexPageCount?: number;
}
export interface DeviceHealth {
    // The last time the device was connected.
    lastConnectionTime?: string;
}
export interface GroupPrintUsageSummary {
    completedJobCount?: number;
    group?: NullableOption<Identity>;
    groupDisplayName?: NullableOption<string>;
    groupMail?: NullableOption<string>;
    incompleteJobCount?: number;
}
// tslint:disable-next-line: interface-name
export interface IntegerRange {
    // The inclusive upper bound of the integer range.
    end?: NullableOption<number>;
    maximum?: NullableOption<number>;
    minimum?: NullableOption<number>;
    // The inclusive lower bound of the integer range.
    start?: NullableOption<number>;
}
export interface OverallPrintUsageSummary {
    activePrintersCount?: number;
    activeUsersCount?: number;
    daysInPeriod?: number;
    topPrinters?: NullableOption<PrinterUsageSummary[]>;
    topUsers?: NullableOption<UserPrintUsageSummary[]>;
    totalIncompleteJobs?: number;
    totalJobsProcessed?: number;
}
export interface PrinterUsageSummary {
    completedJobCount?: number;
    incompleteJobCount?: number;
    printerDisplayName?: NullableOption<string>;
    printerId?: NullableOption<string>;
    printerManufacturer?: NullableOption<string>;
    printerModel?: NullableOption<string>;
    printer?: NullableOption<DirectoryObject>;
}
export interface UserPrintUsageSummary {
    completedJobCount?: number;
    incompleteJobCount?: number;
    user?: NullableOption<Identity>;
    userDisplayName?: NullableOption<string>;
    userPrincipalName?: NullableOption<string>;
}
export interface PrintCertificateSigningRequest {
    // A base64-encoded pkcs10 certificate request. Read-only.
    content?: string;
    // The base64-encoded public portion of an asymmetric key that is generated by the client. Read-only.
    transportKey?: string;
}
export interface PrintDocumentUploadProperties {
    // The document's content (MIME) type.
    contentType?: string;
    // The document's name.
    documentName?: string;
    // The document's size in bytes.
    size?: number;
}
export interface PrinterCapabilities {
    // A list of supported bottom margins(in microns) for the printer.
    bottomMargins?: NullableOption<number[]>;
    // True if the printer supports collating when printing muliple copies of a multi-page document; false otherwise.
    collation?: NullableOption<boolean>;
    // The color modes supported by the printer. Valid values are described in the following table.
    colorModes?: NullableOption<PrintColorMode[]>;
    /**
     * A list of supported content (MIME) types that the printer supports. It is not guaranteed that the Universal Print
     * service supports printing all of these MIME types.
     */
    contentTypes?: NullableOption<string[]>;
    // The range of copies per job supported by the printer.
    copiesPerJob?: NullableOption<IntegerRange>;
    // The list of print resolutions in DPI that are supported by the printer.
    dpis?: NullableOption<number[]>;
    // The list of duplex modes that are supported by the printer. Valid values are described in the following table.
    duplexModes?: NullableOption<PrintDuplexMode[]>;
    feedDirections?: NullableOption<PrinterFeedDirection[]>;
    // The list of feed orientations that are supported by the printer.
    feedOrientations?: NullableOption<PrinterFeedOrientation[]>;
    // Finishing processes the printer supports for a printed document.
    finishings?: NullableOption<PrintFinishing[]>;
    // Supported input bins for the printer.
    inputBins?: NullableOption<string[]>;
    // True if color printing is supported by the printer; false otherwise. Read-only.
    isColorPrintingSupported?: NullableOption<boolean>;
    // True if the printer supports printing by page ranges; false otherwise.
    isPageRangeSupported?: NullableOption<boolean>;
    // A list of supported left margins(in microns) for the printer.
    leftMargins?: NullableOption<number[]>;
    // The media (i.e., paper) colors supported by the printer.
    mediaColors?: NullableOption<string[]>;
    /**
     * The media sizes supported by the printer. Supports standard size names for ISO and ANSI media sizes. Valid values are
     * in the following table.
     */
    mediaSizes?: NullableOption<string[]>;
    // The media types supported by the printer.
    mediaTypes?: NullableOption<string[]>;
    // The presentation directions supported by the printer. Supported values are described in the following table.
    multipageLayouts?: NullableOption<PrintMultipageLayout[]>;
    // The print orientations supported by the printer. Valid values are described in the following table.
    orientations?: NullableOption<PrintOrientation[]>;
    // The printer's supported output bins (trays).
    outputBins?: NullableOption<string[]>;
    // Supported number of Input Pages to impose upon a single Impression.
    pagesPerSheet?: NullableOption<number[]>;
    // The print qualities supported by the printer.
    qualities?: NullableOption<PrintQuality[]>;
    // A list of supported right margins(in microns) for the printer.
    rightMargins?: NullableOption<number[]>;
    // Supported print scalings.
    scalings?: NullableOption<PrintScaling[]>;
    supportedColorConfigurations?: PrintColorConfiguration[];
    supportedCopiesPerJob?: NullableOption<IntegerRange>;
    supportedDocumentMimeTypes?: NullableOption<string[]>;
    supportedDuplexConfigurations?: PrintDuplexConfiguration[];
    supportedFinishings?: PrintFinishing[];
    supportedMediaColors?: NullableOption<string[]>;
    supportedMediaSizes?: NullableOption<string[]>;
    supportedMediaTypes?: PrintMediaType[];
    supportedOrientations?: PrintOrientation[];
    supportedOutputBins?: NullableOption<string[]>;
    supportedPagesPerSheet?: NullableOption<IntegerRange>;
    supportedPresentationDirections?: PrintPresentationDirection[];
    supportedPrintQualities?: PrintQuality[];
    // True if the printer supports scaling PDF pages to match the print media size; false otherwise.
    supportsFitPdfToPage?: NullableOption<boolean>;
    // A list of supported top margins(in microns) for the printer.
    topMargins?: NullableOption<number[]>;
}
export interface PrinterDefaults {
    // The default color mode to use when printing the document. Valid values are described in the following table.
    colorMode?: NullableOption<PrintColorMode>;
    // The default content (MIME) type to use when processing documents.
    contentType?: NullableOption<string>;
    // The default number of copies printed per job.
    copiesPerJob?: NullableOption<number>;
    documentMimeType?: NullableOption<string>;
    // The default resolution in DPI to use when printing the job.
    dpi?: NullableOption<number>;
    duplexConfiguration?: NullableOption<PrintDuplexConfiguration>;
    /**
     * The default duplex (double-sided) configuration to use when printing a document. Valid values are described in the
     * following table.
     */
    duplexMode?: NullableOption<PrintDuplexMode>;
    // The default set of finishings to apply to print jobs. Valid values are described in the following table.
    finishings?: NullableOption<PrintFinishing[]>;
    /**
     * The default fitPdfToPage setting. True to fit each page of a PDF document to a physical sheet of media; false to let
     * the printer decide how to lay out impressions.
     */
    fitPdfToPage?: NullableOption<boolean>;
    // The default input bin that serves as the paper source.
    inputBin?: NullableOption<string>;
    // The default media (such as paper) color to print the document on.
    mediaColor?: NullableOption<string>;
    /**
     * The default media size to use. Supports standard size names for ISO and ANSI media sizes. Valid values are listed in
     * the printerCapabilities topic.
     */
    mediaSize?: NullableOption<string>;
    // The default media (such as paper) type to print the document on.
    mediaType?: NullableOption<string>;
    /**
     * The default direction to lay out pages when multiple pages are being printed per sheet. Valid values are described in
     * the following table.
     */
    multipageLayout?: NullableOption<PrintMultipageLayout>;
    // The default orientation to use when printing the document. Valid values are described in the following table.
    orientation?: NullableOption<PrintOrientation>;
    /**
     * The default output bin to place completed prints into. See the printer's capabilities for a list of supported output
     * bins.
     */
    outputBin?: NullableOption<string>;
    // The default number of document pages to print on each sheet.
    pagesPerSheet?: NullableOption<number>;
    pdfFitToPage?: NullableOption<boolean>;
    presentationDirection?: NullableOption<PrintPresentationDirection>;
    printColorConfiguration?: NullableOption<PrintColorConfiguration>;
    printQuality?: NullableOption<PrintQuality>;
    // The default quality to use when printing the document. Valid values are described in the following table.
    quality?: NullableOption<PrintQuality>;
    /**
     * Specifies how the printer scales the document data to fit the requested media. Valid values are described in the
     * following table.
     */
    scaling?: NullableOption<PrintScaling>;
}
export interface PrinterDocumentConfiguration {
    collate?: NullableOption<boolean>;
    colorMode?: NullableOption<PrintColorMode>;
    copies?: NullableOption<number>;
    dpi?: NullableOption<number>;
    duplexMode?: NullableOption<PrintDuplexMode>;
    feedDirection?: NullableOption<PrinterFeedDirection>;
    feedOrientation?: NullableOption<PrinterFeedOrientation>;
    finishings?: NullableOption<PrintFinishing[]>;
    fitPdfToPage?: NullableOption<boolean>;
    inputBin?: NullableOption<string>;
    margin?: NullableOption<PrintMargin>;
    mediaSize?: NullableOption<string>;
    mediaType?: NullableOption<string>;
    multipageLayout?: NullableOption<PrintMultipageLayout>;
    orientation?: NullableOption<PrintOrientation>;
    outputBin?: NullableOption<string>;
    pageRanges?: NullableOption<IntegerRange[]>;
    pagesPerSheet?: NullableOption<number>;
    quality?: NullableOption<PrintQuality>;
    scaling?: NullableOption<PrintScaling>;
}
export interface PrintMargin {
    // The margin in microns from the bottom edge.
    bottom?: NullableOption<number>;
    // The margin in microns from the left edge.
    left?: NullableOption<number>;
    // The margin in microns from the right edge.
    right?: NullableOption<number>;
    // The margin in microns from the top edge.
    top?: NullableOption<number>;
}
export interface PrinterLocation {
    // The altitude, in meters, that the printer is located at.
    altitudeInMeters?: NullableOption<number>;
    // The building that the printer is located in.
    building?: NullableOption<string>;
    // The city that the printer is located in.
    city?: NullableOption<string>;
    // The country or region that the printer is located in.
    countryOrRegion?: NullableOption<string>;
    // The floor that the printer is located on. Only numerical values are supported right now.
    floor?: NullableOption<string>;
    // The description of the floor that the printer is located on.
    floorDescription?: NullableOption<string>;
    floorNumber?: NullableOption<number>;
    // The latitude that the printer is located at.
    latitude?: NullableOption<number>;
    // The longitude that the printer is located at.
    longitude?: NullableOption<number>;
    // The organizational hierarchy that the printer belongs to. The elements should be in hierarchical order.
    organization?: NullableOption<string[]>;
    // The postal code that the printer is located in.
    postalCode?: NullableOption<string>;
    // The description of the room that the printer is located in.
    roomDescription?: NullableOption<string>;
    // The room that the printer is located in. Only numerical values are supported right now.
    roomName?: NullableOption<string>;
    roomNumber?: NullableOption<number>;
    // The site that the printer is located in.
    site?: NullableOption<string>;
    // The state or province that the printer is located in.
    stateOrProvince?: NullableOption<string>;
    // The street address where the printer is located.
    streetAddress?: NullableOption<string>;
    // The subdivision that the printer is located in. The elements should be in hierarchical order.
    subdivision?: NullableOption<string[]>;
    subunit?: NullableOption<string[]>;
}
export interface PrinterStatus {
    // A human-readable description of the printer's current processing state. Read-only.
    description?: NullableOption<string>;
    /**
     * The list of details describing why the printer is in the current state. Valid values are described in the following
     * table. Read-only.
     */
    details?: PrinterProcessingStateDetail[];
    processingState?: PrinterProcessingState;
    processingStateDescription?: NullableOption<string>;
    processingStateReasons?: PrinterProcessingStateReason[];
    // The current processing state. Valid values are described in the following table. Read-only.
    state?: PrinterProcessingState;
}
export interface PrintJobConfiguration {
    // Whether the printer should collate pages wehen printing multiple copies of a multi-page document.
    collate?: NullableOption<boolean>;
    // The color mode the printer should use to print the job. Valid values are described in the table below. Read-only.
    colorMode?: NullableOption<PrintColorMode>;
    // The number of copies that should be printed. Read-only.
    copies?: NullableOption<number>;
    // The resolution to use when printing the job, expressed in dots per inch (DPI). Read-only.
    dpi?: NullableOption<number>;
    // The duplex mode the printer should use when printing the job. Valid values are described in the table below. Read-only.
    duplexMode?: NullableOption<PrintDuplexMode>;
    /**
     * The orientation to use when feeding media into the printer. Valid values are described in the following table.
     * Read-only.
     */
    feedOrientation?: NullableOption<PrinterFeedOrientation>;
    // Finishing processes to use when printing.
    finishings?: NullableOption<PrintFinishing[]>;
    fitPdfToPage?: NullableOption<boolean>;
    // The input bin (tray) to use when printing. See the printer's capabilities for a list of supported input bins.
    inputBin?: NullableOption<string>;
    // The margin settings to use when printing.
    margin?: NullableOption<PrintMargin>;
    /**
     * The media sizeto use when printing. Supports standard size names for ISO and ANSI media sizes. Valid values are listed
     * in the printerCapabilities topic.
     */
    mediaSize?: NullableOption<string>;
    // The default media (such as paper) type to print the document on.
    mediaType?: NullableOption<string>;
    /**
     * The direction to lay out pages when multiple pages are being printed per sheet. Valid values are described in the
     * following table.
     */
    multipageLayout?: NullableOption<PrintMultipageLayout>;
    /**
     * The orientation setting the printer should use when printing the job. Valid values are described in the following
     * table.
     */
    orientation?: NullableOption<PrintOrientation>;
    // The output bin to place completed prints into. See the printer's capabilities for a list of supported output bins.
    outputBin?: NullableOption<string>;
    // The page ranges to print. Read-only.
    pageRanges?: NullableOption<IntegerRange[]>;
    // The number of document pages to print on each sheet.
    pagesPerSheet?: NullableOption<number>;
    // The print quality to use when printing the job. Valid values are described in the table below. Read-only.
    quality?: NullableOption<PrintQuality>;
    /**
     * Specifies how the printer should scale the document data to fit the requested media. Valid values are described in the
     * following table.
     */
    scaling?: NullableOption<PrintScaling>;
}
export interface PrintJobStatus {
    acquiredByPrinter?: boolean;
    // A human-readable description of the print job's current processing state. Read-only.
    description?: NullableOption<string>;
    // Additional details for print job state. Valid values are described in the following table. Read-only.
    details?: NullableOption<PrintJobStateDetail[]>;
    // True if the job was acknowledged by a printer; false otherwise. Read-only.
    isAcquiredByPrinter?: boolean;
    processingState?: PrintJobProcessingState;
    processingStateDescription?: NullableOption<string>;
    // The print job's current processing state. Valid values are described in the following table. Read-only.
    state?: PrintJobProcessingState;
}
export interface PrintOperationStatus {
    // A human-readable description of the printOperation's current processing state. Read-only.
    description?: string;
    // The printOperation's current processing state. Valid values are described in the following table. Read-only.
    state?: PrintOperationProcessingState;
}
export interface PrintSettings {
    /**
     * Specifies whether document conversion is enabled for the tenant. If document conversion is enabled, Universal Print
     * service will automatically convert documents into a format compatible with the printer (xps to pdf) when needed.
     */
    documentConversionEnabled?: boolean;
}
export interface PrintTaskStatus {
    // A human-readable description of the current processing state of the printTask.
    description?: string;
    // The current processing state of the printTask. Valid values are described in the following table.
    state?: PrintTaskProcessingState;
}
export interface PrintUsageSummary {
    completedJobCount?: number;
    incompleteJobCount?: number;
}
// tslint:disable-next-line: interface-name
export interface ImageInfo {
    /**
     * Optional; parameter used to indicate the server is able to render image dynamically in response to parameterization.
     * For example – a high contrast image
     */
    addImageQuery?: NullableOption<boolean>;
    // Optional; alt-text accessible content for the image
    alternateText?: NullableOption<string>;
    alternativeText?: NullableOption<string>;
    // Optional; URI that points to an icon which represents the application used to generate the activity
    iconUrl?: NullableOption<string>;
}
export interface VisualInfo {
    // Optional. JSON object used to represent an icon which represents the application used to generate the activity
    attribution?: NullableOption<ImageInfo>;
    /**
     * 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
     */
    backgroundColor?: NullableOption<string>;
    /**
     * Optional. Custom piece of data - JSON object used to provide custom content to render the activity in the Windows Shell
     * UI
     */
    content?: NullableOption<any>;
    /**
     * Optional. Longer text description of the user's unique activity (example: document name, first sentence, and/or
     * metadata)
     */
    description?: NullableOption<string>;
    /**
     * Required. Short text description of the user's unique activity (for example, document name in cases where an activity
     * refers to document creation)
     */
    displayText?: string;
}
// tslint:disable-next-line: no-empty-interface
export interface PayloadRequest {}
export interface AnswerKeyword {
    keywords?: NullableOption<string[]>;
    matchSimilarKeywords?: NullableOption<boolean>;
    reservedKeywords?: NullableOption<string[]>;
}
export interface AnswerVariant {
    description?: NullableOption<string>;
    displayName?: NullableOption<string>;
    languageTag?: NullableOption<string>;
    platform?: NullableOption<DevicePlatformType>;
    webUrl?: NullableOption<string>;
}
export interface AccountAlias {
    id?: string;
    idType?: NullableOption<string>;
}
export interface AlertDetection {
    detectionType?: NullableOption<string>;
    method?: NullableOption<string>;
    name?: NullableOption<string>;
}
export interface AlertHistoryState {
    /**
     * The Application ID of the calling application that submitted an update (PATCH) to the alert. The appId should be
     * extracted from the auth token and not entered manually by the calling application.
     */
    appId?: NullableOption<string>;
    // UPN of user the alert was assigned to (note: alert.assignedTo only stores the last value/UPN).
    assignedTo?: NullableOption<string>;
    // Comment entered by signed-in user.
    comments?: NullableOption<string[]>;
    /**
     * Analyst feedback on the alert in this update. Possible values are: unknown, truePositive, falsePositive,
     * benignPositive.
     */
    feedback?: NullableOption<AlertFeedback>;
    // Alert status value (if updated). Possible values are: unknown, newAlert, inProgress, resolved, dismissed.
    status?: NullableOption<AlertStatus>;
    /**
     * Date and time of the alert update. 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 is 2014-01-01T00:00:00Z
     */
    updatedDateTime?: NullableOption<string>;
    // UPN of the signed-in user that updated the alert (taken from the bearer token - if in user/delegated auth mode).
    user?: NullableOption<string>;
}
export interface AlertTrigger {
    // Name of the property serving as a detection trigger.
    name?: NullableOption<string>;
    // Type of the property in the key:value pair for interpretation. For example, String, Boolean etc.
    type?: NullableOption<string>;
    // Value of the property serving as a detection trigger.
    value?: NullableOption<string>;
}
export interface AverageComparativeScore {
    // Average score within specified basis.
    averageScore?: NullableOption<number>;
    // Scope type. The possible values are: AllTenants, TotalSeats, IndustryTypes.
    basis?: NullableOption<string>;
}
export interface CertificationControl {
    // Certification control name
    name?: NullableOption<string>;
    // URL for the Microsoft Service Trust Portal
    url?: NullableOption<string>;
}
export interface CloudAppSecurityState {
    // Destination IP Address of the connection to the cloud application/service.
    destinationServiceIp?: NullableOption<string>;
    // Cloud application/service name (for example 'Salesforce', 'DropBox', etc.).
    destinationServiceName?: NullableOption<string>;
    /**
     * Provider-generated/calculated risk score of the Cloud Application/Service. Recommended value range of 0-1, which
     * equates to a percentage.
     */
    riskScore?: NullableOption<string>;
}
export interface ComplianceInformation {
    // Collection of the certification controls associated with certification
    certificationControls?: NullableOption<CertificationControl[]>;
    // Compliance certification name (for example, ISO 27018:2014, GDPR, FedRAMP, NIST 800-171)
    certificationName?: NullableOption<string>;
}
export interface ControlScore {
    // Control action category (Identity, Data, Device, Apps, Infrastructure).
    controlCategory?: NullableOption<string>;
    // Control unique name.
    controlName?: NullableOption<string>;
    // Description of the control.
    description?: NullableOption<string>;
    // Tenant achieved score for the control (it varies day by day depending on tenant operations on the control).
    score?: NullableOption<number>;
}
export interface DomainRegistrant {
    countryOrRegionCode?: NullableOption<string>;
    organization?: NullableOption<string>;
    url?: NullableOption<string>;
    vendor?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface EntitySetNames {}
export interface FileHash {
    // File hash type. Possible values are: unknown, sha1, sha256, md5, authenticodeHash256, lsHash, ctph, peSha1, peSha256.
    hashType?: NullableOption<FileHashType>;
    // Value of the file hash.
    hashValue?: NullableOption<string>;
}
export interface FileSecurityState {
    // Complex type containing file hashes (cryptographic and location-sensitive).
    fileHash?: NullableOption<FileHash>;
    // File name (without path).
    name?: NullableOption<string>;
    // Full file path of the file/imageFile.
    path?: NullableOption<string>;
    /**
     * Provider generated/calculated risk score of the alert file. Recommended value range of 0-1, which equates to a
     * percentage.
     */
    riskScore?: NullableOption<string>;
}
export interface HostSecurityState {
    // Host FQDN (Fully Qualified Domain Name) (for example, machine.company.com).
    fqdn?: NullableOption<string>;
    isAzureAdJoined?: NullableOption<boolean>;
    isAzureAdRegistered?: NullableOption<boolean>;
    // True if the host is domain joined to an on-premises Active Directory domain.
    isHybridAzureDomainJoined?: NullableOption<boolean>;
    // The local host name, without the DNS domain name.
    netBiosName?: NullableOption<string>;
    // Host Operating System. (For example, Windows10, MacOS, RHEL, etc.).
    os?: NullableOption<string>;
    // Private (not routable) IPv4 or IPv6 address (see RFC 1918) at the time of the alert.
    privateIpAddress?: NullableOption<string>;
    // Publicly routable IPv4 or IPv6 address (see RFC 1918) at time of the alert.
    publicIpAddress?: NullableOption<string>;
    // Provider-generated/calculated risk score of the host. Recommended value range of 0-1, which equates to a percentage.
    riskScore?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface InvestigationSecurityState {
    name?: NullableOption<string>;
    status?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IpCategory {
    description?: NullableOption<string>;
    name?: NullableOption<string>;
    vendor?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface IpReferenceData {
    asn?: NullableOption<number>;
    city?: NullableOption<string>;
    countryOrRegionCode?: NullableOption<string>;
    organization?: NullableOption<string>;
    state?: NullableOption<string>;
    vendor?: NullableOption<string>;
}
export interface LogonUser {
    // Domain of user account used to logon.
    accountDomain?: NullableOption<string>;
    // Account name of user account used to logon.
    accountName?: NullableOption<string>;
    // User Account type, per Windows definition. Possible values are: unknown, standard, power, administrator.
    accountType?: NullableOption<UserAccountSecurityType>;
    /**
     * DateTime at which the earliest logon by this user account occurred (provider-determined period). 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 is 2014-01-01T00:00:00Z.
     */
    firstSeenDateTime?: NullableOption<string>;
    /**
     * DateTime at which the latest logon by this user account occurred. 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 is
     * 2014-01-01T00:00:00Z.
     */
    lastSeenDateTime?: NullableOption<string>;
    // User logon ID.
    logonId?: NullableOption<string>;
    /**
     * Collection of the logon types observed for the logged on user from when first to last seen. Possible values are:
     * unknown, interactive, remoteInteractive, network, batch, service.
     */
    logonTypes?: NullableOption<LogonType[]>;
}
export interface MalwareState {
    // Provider-generated malware category (for example, trojan, ransomware, etc.).
    category?: NullableOption<string>;
    // Provider-generated malware family (for example, 'wannacry', 'notpetya', etc.).
    family?: NullableOption<string>;
    // Provider-generated malware variant name (for example, Trojan:Win32/Powessere.H).
    name?: NullableOption<string>;
    // Provider-determined severity of this malware.
    severity?: NullableOption<string>;
    /**
     * Indicates whether the detected file (malware/vulnerability) was running at the time of detection or was detected at
     * rest on the disk.
     */
    wasRunning?: NullableOption<boolean>;
}
export interface MessageSecurityState {
    connectingIP?: NullableOption<string>;
    deliveryAction?: NullableOption<string>;
    deliveryLocation?: NullableOption<string>;
    directionality?: NullableOption<string>;
    internetMessageId?: NullableOption<string>;
    messageFingerprint?: NullableOption<string>;
    messageReceivedDateTime?: NullableOption<string>;
    messageSubject?: NullableOption<string>;
    networkMessageId?: NullableOption<string>;
}
export interface NetworkConnection {
    // Name of the application managing the network connection (for example, Facebook, SMTP, etc.).
    applicationName?: NullableOption<string>;
    // Destination IP address (of the network connection).
    destinationAddress?: NullableOption<string>;
    // Destination domain portion of the destination URL. (for example 'www.contoso.com').
    destinationDomain?: NullableOption<string>;
    // Location (by IP address mapping) associated with the destination of a network connection.
    destinationLocation?: NullableOption<string>;
    // Destination port (of the network connection).
    destinationPort?: NullableOption<string>;
    // Network connection URL/URI string - excluding parameters. (for example 'www.contoso.com/products/default.html')
    destinationUrl?: NullableOption<string>;
    // Network connection direction. Possible values are: unknown, inbound, outbound.
    direction?: NullableOption<ConnectionDirection>;
    /**
     * Date when the destination domain was registered. 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 is 2014-01-01T00:00:00Z
     */
    domainRegisteredDateTime?: NullableOption<string>;
    /**
     * The local DNS name resolution as it appears in the host's local DNS cache (for example, in case the 'hosts' file was
     * tampered with).
     */
    localDnsName?: NullableOption<string>;
    // Network Address Translation destination IP address.
    natDestinationAddress?: NullableOption<string>;
    // Network Address Translation destination port.
    natDestinationPort?: NullableOption<string>;
    // Network Address Translation source IP address.
    natSourceAddress?: NullableOption<string>;
    // Network Address Translation source port.
    natSourcePort?: NullableOption<string>;
    /**
     * Network protocol. Possible values are: unknown, ip, icmp, igmp, ggp, ipv4, tcp, pup, udp, idp, ipv6, ipv6RoutingHeader,
     * ipv6FragmentHeader, ipSecEncapsulatingSecurityPayload, ipSecAuthenticationHeader, icmpV6, ipv6NoNextHeader,
     * ipv6DestinationOptions, nd, raw, ipx, spx, spxII.
     */
    protocol?: NullableOption<SecurityNetworkProtocol>;
    /**
     * Provider generated/calculated risk score of the network connection. Recommended value range of 0-1, which equates to a
     * percentage.
     */
    riskScore?: NullableOption<string>;
    // Source (i.e. origin) IP address (of the network connection).
    sourceAddress?: NullableOption<string>;
    // Location (by IP address mapping) associated with the source of a network connection.
    sourceLocation?: NullableOption<string>;
    // Source (i.e. origin) IP port (of the network connection).
    sourcePort?: NullableOption<string>;
    // Network connection status. Possible values are: unknown, attempted, succeeded, blocked, failed.
    status?: NullableOption<ConnectionStatus>;
    // Parameters (suffix) of the destination URL.
    urlParameters?: NullableOption<string>;
}
export interface NetworkInterface {
    // Description of the NIC (e.g. Ethernet adapter, Wireless LAN adapter Local Area Connection &amp;lt;#&amp;gt;, etc.).
    description?: NullableOption<string>;
    // Last IPv4 address associated with this NIC.
    ipV4Address?: NullableOption<string>;
    // Last Public (aka global) IPv6 address associated with this NIC.
    ipV6Address?: NullableOption<string>;
    // Last local (link-local or site-local) IPv6 address associated with this NIC.
    localIpV6Address?: NullableOption<string>;
    // MAC address of the NIC on this host.
    macAddress?: NullableOption<string>;
}
export interface Process {
    // User account identifier (user account context the process ran under) for example, AccountName, SID, and so on.
    accountName?: NullableOption<string>;
    // The full process invocation commandline including all parameters.
    commandLine?: NullableOption<string>;
    /**
     * Time at which the process was started. 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 is 2014-01-01T00:00:00Z.
     */
    createdDateTime?: NullableOption<string>;
    // Complex type containing file hashes (cryptographic and location-sensitive).
    fileHash?: NullableOption<FileHash>;
    // The integrity level of the process. Possible values are: unknown, untrusted, low, medium, high, system.
    integrityLevel?: NullableOption<ProcessIntegrityLevel>;
    // True if the process is elevated.
    isElevated?: NullableOption<boolean>;
    // The name of the process' Image file.
    name?: NullableOption<string>;
    /**
     * DateTime at which the parent process was started. 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 is 2014-01-01T00:00:00Z.
     */
    parentProcessCreatedDateTime?: NullableOption<string>;
    // The Process ID (PID) of the parent process.
    parentProcessId?: NullableOption<number>;
    // The name of the image file of the parent process.
    parentProcessName?: NullableOption<string>;
    // Full path, including filename.
    path?: NullableOption<string>;
    // The Process ID (PID) of the process.
    processId?: NullableOption<number>;
}
export interface RegistryKeyState {
    /**
     * A Windows registry hive : HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_LOCAL_MACHINE/SAM HKEY_LOCAL_MACHINE/Security
     * HKEY_LOCAL_MACHINE/Software HKEY_LOCAL_MACHINE/System HKEY_USERS/.Default. Possible values are: unknown, currentConfig,
     * currentUser, localMachineSam, localMachineSecurity, localMachineSoftware, localMachineSystem, usersDefault.
     */
    hive?: NullableOption<RegistryHive>;
    // Current (i.e. changed) registry key (excludes HIVE).
    key?: NullableOption<string>;
    // Previous (i.e. before changed) registry key (excludes HIVE).
    oldKey?: NullableOption<string>;
    // Previous (i.e. before changed) registry key value data (contents).
    oldValueData?: NullableOption<string>;
    // Previous (i.e. before changed) registry key value name.
    oldValueName?: NullableOption<string>;
    // Operation that changed the registry key name and/or value. Possible values are: unknown, create, modify, delete.
    operation?: NullableOption<RegistryOperation>;
    /**
     * Process ID (PID) of the process that modified the registry key (process details will appear in the alert 'processes'
     * collection).
     */
    processId?: NullableOption<number>;
    // Current (i.e. changed) registry key value data (contents).
    valueData?: NullableOption<string>;
    // Current (i.e. changed) registry key value name
    valueName?: NullableOption<string>;
    /**
     * Registry key value type REG_BINARY REG_DWORD REG_DWORD_LITTLE_ENDIAN REG_DWORD_BIG_ENDIANREG_EXPAND_SZ REG_LINK
     * REG_MULTI_SZ REG_NONE REG_QWORD REG_QWORD_LITTLE_ENDIAN REG_SZ Possible values are: unknown, binary, dword,
     * dwordLittleEndian, dwordBigEndian, expandSz, link, multiSz, none, qword, qwordlittleEndian, sz.
     */
    valueType?: NullableOption<RegistryValueType>;
}
export interface ReputationCategory {
    description?: NullableOption<string>;
    name?: NullableOption<string>;
    vendor?: NullableOption<string>;
}
export interface SecureScoreControlStateUpdate {
    assignedTo?: NullableOption<string>;
    comment?: NullableOption<string>;
    state?: NullableOption<string>;
    updatedBy?: NullableOption<string>;
    updatedDateTime?: NullableOption<string>;
}
export interface SecurityActionState {
    /**
     * The Application ID of the calling application that submitted an update (PATCH) to the action. The appId should be
     * extracted from the auth token and not entered manually by the calling application.
     */
    appId?: NullableOption<string>;
    // Status of the securityAction in this update. Possible values are: NotStarted, Running, Completed, Failed.
    status?: NullableOption<OperationStatus>;
    /**
     * Timestamp when the actionState was updated. 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 is 2014-01-01T00:00:00Z
     */
    updatedDateTime?: NullableOption<string>;
    /**
     * The user principal name of the signed-in user that submitted an update (PATCH) to the action. The user should be
     * extracted from the auth token and not entered manually by the calling application.
     */
    user?: NullableOption<string>;
}
export interface SecurityProviderStatus {
    enabled?: NullableOption<boolean>;
    endpoint?: NullableOption<string>;
    provider?: NullableOption<string>;
    region?: NullableOption<string>;
    vendor?: NullableOption<string>;
}
export interface SecurityResource {
    // Name of the resource that is related to current alert. Required.
    resource?: NullableOption<string>;
    // Represents type of security resources related to an alert. Possible values are: attacked, related.
    resourceType?: NullableOption<SecurityResourceType>;
}
export interface SecurityVendorInformation {
    // Specific provider (product/service - not vendor company); for example, WindowsDefenderATP.
    provider?: NullableOption<string>;
    // Version of the provider or subprovider, if it exists, that generated the alert. Required
    providerVersion?: NullableOption<string>;
    // Specific subprovider (under aggregating provider); for example, WindowsDefenderATP.SmartScreen.
    subProvider?: NullableOption<string>;
    // Name of the alert vendor (for example, Microsoft, Dell, FireEye). Required
    vendor?: NullableOption<string>;
}
export interface UriClickSecurityState {
    clickAction?: NullableOption<string>;
    clickDateTime?: NullableOption<string>;
    id?: NullableOption<string>;
    sourceId?: NullableOption<string>;
    uriDomain?: NullableOption<string>;
    verdict?: NullableOption<string>;
}
export interface UserAccount {
    displayName?: NullableOption<string>;
    lastSeenDateTime?: NullableOption<string>;
    riskScore?: NullableOption<string>;
    service?: NullableOption<string>;
    signinName?: NullableOption<string>;
    status?: NullableOption<AccountStatus>;
}
export interface UserSecurityState {
    // AAD User object identifier (GUID) - represents the physical/multi-account user entity.
    aadUserId?: NullableOption<string>;
    // Account name of user account (without Active Directory domain or DNS domain) - (also called mailNickName).
    accountName?: NullableOption<string>;
    // NetBIOS/Active Directory domain of user account (that is, domain/account format).
    domainName?: NullableOption<string>;
    // For email-related alerts - user account's email 'role'. Possible values are: unknown, sender, recipient.
    emailRole?: NullableOption<EmailRole>;
    // Indicates whether the user logged on through a VPN.
    isVpn?: NullableOption<boolean>;
    /**
     * Time at which the sign-in occurred. 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 is 2014-01-01T00:00:00Z.
     */
    logonDateTime?: NullableOption<string>;
    // User sign-in ID.
    logonId?: NullableOption<string>;
    // IP Address the sign-in request originated from.
    logonIp?: NullableOption<string>;
    // Location (by IP address mapping) associated with a user sign-in event by this user.
    logonLocation?: NullableOption<string>;
    // Method of user sign in. Possible values are: unknown, interactive, remoteInteractive, network, batch, service.
    logonType?: NullableOption<LogonType>;
    // Active Directory (on-premises) Security Identifier (SID) of the user.
    onPremisesSecurityIdentifier?: NullableOption<string>;
    /**
     * Provider-generated/calculated risk score of the user account. Recommended value range of 0-1, which equates to a
     * percentage.
     */
    riskScore?: NullableOption<string>;
    /**
     * User account type (group membership), per Windows definition. Possible values are: unknown, standard, power,
     * administrator.
     */
    userAccountType?: NullableOption<UserAccountSecurityType>;
    // User sign-in name - internet format: (user account name)@(user account DNS domain name).
    userPrincipalName?: NullableOption<string>;
}
export interface VulnerabilityState {
    // Common Vulnerabilities and Exposures (CVE) for the vulnerability.
    cve?: NullableOption<string>;
    // Base Common Vulnerability Scoring System (CVSS) severity score for this vulnerability.
    severity?: NullableOption<string>;
    /**
     * Indicates whether the detected vulnerability (file) was running at the time of detection or was the file detected at
     * rest on the disk.
     */
    wasRunning?: NullableOption<boolean>;
}
// tslint:disable-next-line: no-empty-interface
export interface ParticipantJoiningResponse {}
// tslint:disable-next-line: no-empty-interface
export interface AcceptJoinResponse extends ParticipantJoiningResponse {}
export interface MediaConfig {
    removeFromDefaultAudioGroup?: NullableOption<boolean>;
}
export interface AppHostedMediaConfig extends MediaConfig {
    // The media configuration blob generated by smart media agent.
    blob?: NullableOption<string>;
}
export interface AttendanceInterval {
    // Duration of the meeting interval in seconds; that is, the difference between joinDateTime and leaveDateTime.
    durationInSeconds?: NullableOption<number>;
    // Time attendee joined in UTC.
    joinDateTime?: NullableOption<string>;
    // Time attendee left in UTC.
    leaveDateTime?: NullableOption<string>;
}
export interface AttendanceRecord {
    // List of time periods between joining and leaving.
    attendanceIntervals?: NullableOption<AttendanceInterval[]>;
    // Email address.
    emailAddress?: NullableOption<string>;
    // Identifier, such as display name.
    identity?: NullableOption<Identity>;
    // Role of the attendee. Possible values are None, Attendee, Presenter, and Organizer.
    role?: NullableOption<string>;
    // Total duration of the attendances in seconds.
    totalAttendanceInSeconds?: NullableOption<number>;
}
export interface AudioConferencing {
    // The conference id of the online meeting.
    conferenceId?: NullableOption<string>;
    // A URL to the externally-accessible web page that contains dial-in information.
    dialinUrl?: NullableOption<string>;
    // The toll-free number that connects to the Audio Conference Provider.
    tollFreeNumber?: NullableOption<string>;
    // List of toll-free numbers that are displayed in the meeting invite.
    tollFreeNumbers?: NullableOption<string[]>;
    // The toll number that connects to the Audio Conference Provider.
    tollNumber?: NullableOption<string>;
    // List of toll numbers that are displayed in the meeting invite.
    tollNumbers?: NullableOption<string[]>;
}
export interface BroadcastMeetingSettings {
    // Defines who can join the live event. Possible values are listed in the following table.
    allowedAudience?: NullableOption<BroadcastMeetingAudience>;
    // Indicates whether attendee report is enabled for this live event. Default value is false.
    isAttendeeReportEnabled?: NullableOption<boolean>;
    // Indicates whether Q&amp;A is enabled for this live event. Default value is false.
    isQuestionAndAnswerEnabled?: NullableOption<boolean>;
    // Indicates whether recording is enabled for this live event. Default value is false.
    isRecordingEnabled?: NullableOption<boolean>;
    // Indicates whether video on demand is enabled for this live event. Default value is false.
    isVideoOnDemandEnabled?: NullableOption<boolean>;
}
export interface CallMediaState {
    // The audio media state. Possible values are: active, inactive, unknownFutureValue.
    audio?: NullableOption<MediaState>;
}
// tslint:disable-next-line: no-empty-interface
export interface CallOptions {}
export interface CallRoute {
    // The identity that was resolved to in the call.
    final?: IdentitySet;
    // The identity that was originally used in the call.
    original?: IdentitySet;
    // Possible values are: forwarded, lookup, selfFork.
    routingType?: RoutingType;
}
export interface CallTranscriptionInfo {
    // The state modified time in UTC.
    lastModifiedDateTime?: NullableOption<string>;
    // Possible values are: notStarted, active, inactive.
    state?: CallTranscriptionState;
}
export interface ChatInfo {
    // The unique identifier for a message in a Microsoft Teams channel.
    messageId?: NullableOption<string>;
    // The ID of the reply message.
    replyChainMessageId?: NullableOption<string>;
    // The unique identifier for a thread in Microsoft Teams.
    threadId?: NullableOption<string>;
}
export interface CommsNotification {
    // Possible values are: created, updated, deleted.
    changeType?: ChangeType;
    // URI of the resource that was changed.
    resourceUrl?: string;
}
export interface CommsNotifications {
    // The notification of a change in the resource.
    value?: NullableOption<CommsNotification[]>;
}
// tslint:disable-next-line: interface-name
export interface IncomingContext {
    // The id of the participant that is under observation. Read-only.
    observedParticipantId?: NullableOption<string>;
    // The identity that the call is happening on behalf of.
    onBehalfOf?: NullableOption<IdentitySet>;
    // The id of the participant that triggered the incoming call. Read-only.
    sourceParticipantId?: NullableOption<string>;
    // The identity that transferred the call.
    transferor?: NullableOption<IdentitySet>;
}
// tslint:disable-next-line: interface-name
export interface InvitationParticipantInfo {
    // The type of endpoint. Possible values are: default, voicemail.
    endpointType?: NullableOption<EndpointType>;
    // The identitySet associated with this invitation.
    identity?: IdentitySet;
    /**
     * Optional. The call which the target idenity is currently a part of. This call will be dropped once the participant is
     * added.
     */
    replacesCallId?: NullableOption<string>;
}
// tslint:disable-next-line: interface-name
export interface InviteNewBotResponse extends ParticipantJoiningResponse {
    // URI to receive new incoming call notification.
    inviteUri?: NullableOption<string>;
}
export interface MediaInfo {
    /**
     * Optional, used to uniquely identity the resource. If passed the prompt uri will be cached against this resourceId as
     * key.
     */
    resourceId?: NullableOption<string>;
    /**
     * Path to the prompt to be played. Currently only Wave file (.wav) format, single-channel, 16-bit samples with a 16,000
     * (16KHz) sampling rate is only supported.
     */
    uri?: string;
}
// tslint:disable-next-line: no-empty-interface
export interface Prompt {}
export interface MediaPrompt extends Prompt {
    loop?: NullableOption<number>;
    // The media information.
    mediaInfo?: MediaInfo;
}
export interface MediaStream {
    // The direction. The possible values are inactive, sendOnly, receiveOnly, sendReceive.
    direction?: MediaDirection;
    // The media stream label.
    label?: NullableOption<string>;
    // The media type. The possible value are unknown, audio, video, videoBasedScreenSharing, data.
    mediaType?: Modality;
    // Indicates whether the media is muted by the server.
    serverMuted?: boolean;
    // The source ID.
    sourceId?: string;
}
export interface MeetingCapability {
    // Indicates whether anonymous users dialout is allowed in a meeting.
    allowAnonymousUsersToDialOut?: boolean;
    // Indicates whether anonymous users are allowed to start a meeting.
    allowAnonymousUsersToStartMeeting?: boolean;
    // Possible values are: everyoneInCompany, everyone.
    autoAdmittedUsers?: AutoAdmittedUsersType;
}
export interface MeetingInfo {
    allowConversationWithoutHost?: NullableOption<boolean>;
}
export interface MeetingParticipantInfo {
    // Identity information of the participant.
    identity?: NullableOption<IdentitySet>;
    /**
     * Specifies the participant's role in the meeting. Possible values are attendee, presenter, producer, and
     * unknownFutureValue.
     */
    role?: NullableOption<OnlineMeetingRole>;
    // User principal name of the participant.
    upn?: NullableOption<string>;
}
export interface MeetingParticipants {
    // Information of the meeting attendees.
    attendees?: NullableOption<MeetingParticipantInfo[]>;
    contributors?: NullableOption<MeetingParticipantInfo[]>;
    // Information of the meeting organizer.
    organizer?: NullableOption<MeetingParticipantInfo>;
    producers?: NullableOption<MeetingParticipantInfo[]>;
}
export interface OrganizerMeetingInfo extends MeetingInfo {
    // The organizer Azure Active Directory identity.
    organizer?: IdentitySet;
}
// tslint:disable-next-line: no-empty-interface
export interface OutgoingCallOptions extends CallOptions {}
export interface OutOfOfficeSettings {
    /**
     * True if either:It is currently in the out of office time window configured on the Outlook or Teams client.There is
     * currently an event on the user's calendar that's marked as Show as Out of OfficeOtherwise, false.
     */
    isOutOfOffice?: NullableOption<boolean>;
    /**
     * The out of office message that the user configured on Outlook client (Automatic Replies (Out of Office)) or the Teams
     * client (Schedule out of office).
     */
    message?: NullableOption<string>;
}
export interface ParticipantInfo {
    /**
     * The ISO 3166-1 Alpha-2 country code of the participant's best estimated physical location at the start of the call.
     * Read-only.
     */
    countryCode?: NullableOption<string>;
    /**
     * The type of endpoint the participant is using. Possible values are: default, skypeForBusiness, or
     * skypeForBusinessVoipPhone. Read-only.
     */
    endpointType?: NullableOption<EndpointType>;
    // The identitySet associated with this participant. Read-only.
    identity?: IdentitySet;
    // The language culture string. Read-only.
    languageId?: NullableOption<string>;
    // The client platform ID of the participant. Read-only.
    platformId?: NullableOption<string>;
    /**
     * The home region of the participant. This can be a country, a continent, or a larger geographic region. This does not
     * change based on the participant's current physical location, unlike countryCode. Read-only.
     */
    region?: NullableOption<string>;
}
export interface RecordingInfo {
    // The participant who initiated the recording.
    initiatedBy?: NullableOption<ParticipantInfo>;
    // The identities of recording initiator.
    initiator?: NullableOption<IdentitySet>;
    // Possible values are: unknown, notRecording, recording, or failed.
    recordingStatus?: RecordingStatus;
}
export interface RejectJoinResponse extends ParticipantJoiningResponse {
    // The rejection reason. Possible values are None, Busy, and Forbidden.
    reason?: RejectReason;
}
export interface ServiceHostedMediaConfig extends MediaConfig {
    // The list of media to pre-fetch.
    preFetchMedia?: NullableOption<MediaInfo[]>;
}
export interface TeleconferenceDeviceMediaQuality {
    // The average inbound stream network jitter.
    averageInboundJitter?: NullableOption<string>;
    // The average inbound stream packet loss rate in percentage (0-100). For example, 0.01 means 0.01%.
    averageInboundPacketLossRateInPercentage?: NullableOption<number>;
    // The average inbound stream network round trip delay.
    averageInboundRoundTripDelay?: NullableOption<string>;
    // The average outbound stream network jitter.
    averageOutboundJitter?: NullableOption<string>;
    // The average outbound stream packet loss rate in percentage (0-100). For example, 0.01 means 0.01%.
    averageOutboundPacketLossRateInPercentage?: NullableOption<number>;
    // The average outbound stream network round trip delay.
    averageOutboundRoundTripDelay?: NullableOption<string>;
    /**
     * The channel index of media. Indexing begins with 1. If a media session contains 3 video modalities, channel indexes
     * will be 1, 2, and 3.
     */
    channelIndex?: number;
    // The total number of the inbound packets.
    inboundPackets?: NullableOption<number>;
    // the local IP address for the media session.
    localIPAddress?: NullableOption<string>;
    // The local media port.
    localPort?: NullableOption<number>;
    // The maximum inbound stream network jitter.
    maximumInboundJitter?: NullableOption<string>;
    // The maximum inbound stream packet loss rate in percentage (0-100). For example, 0.01 means 0.01%.
    maximumInboundPacketLossRateInPercentage?: NullableOption<number>;
    // The maximum inbound stream network round trip delay.
    maximumInboundRoundTripDelay?: NullableOption<string>;
    // The maximum outbound stream network jitter.
    maximumOutboundJitter?: NullableOption<string>;
    // The maximum outbound stream packet loss rate in percentage (0-100). For example, 0.01 means 0.01%.
    maximumOutboundPacketLossRateInPercentage?: NullableOption<number>;
    // The maximum outbound stream network round trip delay.
    maximumOutboundRoundTripDelay?: NullableOption<string>;
    /**
     * The total modality duration. If the media enabled and disabled multiple times, MediaDuration will the summation of all
     * of the durations.
     */
    mediaDuration?: NullableOption<string>;
    // The network link speed in bytes
    networkLinkSpeedInBytes?: NullableOption<number>;
    // The total number of the outbound packets.
    outboundPackets?: NullableOption<number>;
    // The remote IP address for the media session.
    remoteIPAddress?: NullableOption<string>;
    // The remote media port.
    remotePort?: NullableOption<number>;
}
// tslint:disable-next-line: no-empty-interface
export interface TeleconferenceDeviceAudioQuality extends TeleconferenceDeviceMediaQuality {}
export interface TeleconferenceDeviceQuality {
    /**
     * A unique identifier for all the participant calls in a conference or a unique identifier for two participant calls in
     * P2P call. This needs to be copied over from Microsoft.Graph.Call.CallChainId.
     */
    callChainId?: string;
    // A geo-region where the service is deployed, such as ProdNoam.
    cloudServiceDeploymentEnvironment?: NullableOption<string>;
    // A unique deployment identifier assigned by Azure.
    cloudServiceDeploymentId?: NullableOption<string>;
    // The Azure deployed cloud service instance name, such as FrontEnd_IN_3.
    cloudServiceInstanceName?: NullableOption<string>;
    // The Azure deployed cloud service name, such as contoso.cloudapp.net.
    cloudServiceName?: NullableOption<string>;
    // Any additional description, such as VTC Bldg 30/21.
    deviceDescription?: string;
    // The user media agent name, such as Cisco SX80.
    deviceName?: string;
    /**
     * A unique identifier for a specific media leg of a participant in a conference. One participant can have multiple media
     * leg identifiers if retargeting happens. CVI partner assigns this value.
     */
    mediaLegId?: string;
    /**
     * The list of media qualities in a media session (call), such as audio quality, video quality, and/or screen sharing
     * quality.
     */
    mediaQualityList?: TeleconferenceDeviceMediaQuality[];
    /**
     * A unique identifier for a specific participant in a conference. The CVI partner needs to copy over Call.MyParticipantId
     * to this property.
     */
    participantId?: string;
}
export interface TeleconferenceDeviceVideoQuality extends TeleconferenceDeviceMediaQuality {
    // The average inbound stream video bit rate per second.
    averageInboundBitRate?: NullableOption<number>;
    // The average inbound stream video frame rate per second.
    averageInboundFrameRate?: NullableOption<number>;
    // The average outbound stream video bit rate per second.
    averageOutboundBitRate?: NullableOption<number>;
    // The average outbound stream video frame rate per second.
    averageOutboundFrameRate?: NullableOption<number>;
}
// tslint:disable-next-line: no-empty-interface
export interface TeleconferenceDeviceScreenSharingQuality extends TeleconferenceDeviceVideoQuality {}
export interface TokenMeetingInfo extends MeetingInfo {
    // The token used to join the call.
    token?: string;
}
export interface ToneInfo {
    // An incremental identifier used for ordering DTMF events.
    sequenceId?: number;
    /**
     * Possible values are: tone0, tone1, tone2, tone3, tone4, tone5, tone6, tone7, tone8, tone9, star, pound, a, b, c, d,
     * flash.
     */
    tone?: Tone;
}
export interface PasswordResetResponse {
    newPassword?: NullableOption<string>;
}
export interface ChangeNotification {
    /**
     * Indicates the type of change that will raise the change notification. The supported values are: created, updated,
     * deleted. Required.
     */
    changeType?: ChangeType;
    /**
     * Value of the clientState property sent specified in the subscription request (if any). The maximum length is 255
     * characters. The client can check whether the change notification came from the service by comparing the values of the
     * clientState property. The value of the clientState property sent with the subscription is compared with the value of
     * the clientState property received with each change notification. Optional.
     */
    clientState?: NullableOption<string>;
    /**
     * (Preview) Encrypted content attached with the change notification. Only provided if encryptionCertificate and
     * includeResourceData were defined during the subscription request and if the resource supports it. Optional.
     */
    encryptedContent?: NullableOption<ChangeNotificationEncryptedContent>;
    // Unique ID for the notification. Optional.
    id?: NullableOption<string>;
    /**
     * The type of lifecycle notification if the current notification is a lifecycle notification. Optional. Supported values
     * are missed, subscriptionRemoved, reauthorizationRequired.
     */
    lifecycleEvent?: NullableOption<LifecycleEventType>;
    // The URI of the resource that emitted the change notification relative to https://graph.microsoft.com. Required.
    resource?: string;
    // The content of this property depends on the type of resource being subscribed to. Required.
    resourceData?: NullableOption<ResourceData>;
    // The expiration time for the subscription. Required.
    subscriptionExpirationDateTime?: string;
    // The unique identifier of the subscription that generated the notification.
    subscriptionId?: string;
    // The unique identifier of the tenant from which the change notification originated.
    tenantId?: string;
}
export interface ChangeNotificationEncryptedContent {
    /**
     * Base64-encoded encrypted data that produces a full resource respresented as JSON. The data has been encrypted with the
     * provided dataKey using an AES/CBC/PKCS5PADDING cipher suite.
     */
    data?: string;
    /**
     * Base64-encoded symmetric key generated by Microsoft Graph to encrypt the data value and to generate the data signature.
     * This key is encrypted with the certificate public key that was provided during the subscription. It must be decrypted
     * with the certificate private key before it can be used to decrypt the data or verify the signature. This key has been
     * encrypted with the following cipher suite: RSA/ECB/OAEPWithSHA1AndMGF1Padding.
     */
    dataKey?: string;
    // Base64-encoded HMAC-SHA256 hash of the data for validation purposes.
    dataSignature?: string;
    // ID of the certificate used to encrypt the dataKey.
    encryptionCertificateId?: string;
    // Hexadecimal representation of the thumbprint of the certificate used to encrypt the dataKey.
    encryptionCertificateThumbprint?: string;
}
// tslint:disable-next-line: no-empty-interface
export interface ResourceData {}
export interface ChangeNotificationCollection {
    /**
     * Contains an array of JWT tokens generated by Microsoft Graph for the application to validate the origin of the
     * notifications. Microsoft Graph generates a single token for each distinct app and tenant pair for an item if it exists
     * in the value array. Keep in mind that notifications can contain a mix of items for various apps and tenants that
     * subscribed using the same notification URL. Only provided for change notifications with resource data Optional.
     */
    validationTokens?: NullableOption<string[]>;
    // The set of notifications being sent to the notification URL. Required.
    value?: ChangeNotification[];
}
export interface Acl {
    accessType?: AccessType;
    identitySource?: NullableOption<IdentitySourceType>;
    type?: AclType;
    value?: string;
}
export interface Configuration {
    authorizedAppIds?: NullableOption<string[]>;
    authorizedApps?: NullableOption<string[]>;
}
export interface ExternalItemContent {
    type?: ExternalItemContentType;
    value?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface Properties {}
export interface Property {
    aliases?: NullableOption<string[]>;
    isQueryable?: NullableOption<boolean>;
    isRefinable?: NullableOption<boolean>;
    isRetrievable?: NullableOption<boolean>;
    isSearchable?: NullableOption<boolean>;
    labels?: NullableOption<Label[]>;
    name?: string;
    type?: PropertyType;
}
export interface ActionResultPart {
    // The error that occurred, if any, during the course of the bulk operation.
    error?: NullableOption<PublicError>;
}
export interface AadUserConversationMemberResult extends ActionResultPart {
    // The user object ID of the Azure AD user that was being added as part of the bulk operation.
    userId?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface TeamworkNotificationRecipient {}
export interface AadUserNotificationRecipient extends TeamworkNotificationRecipient {
    // Azure AD user identifier. Use the List users method to get this ID.
    userId?: string;
}
// tslint:disable-next-line: no-empty-interface
export interface EventMessageDetail {}
export interface CallEndedEventMessageDetail extends EventMessageDetail {
    // Duration of the call.
    callDuration?: NullableOption<string>;
    // Represents the call event type. Possible values are: call, meeting, screenShare, unknownFutureValue.
    callEventType?: NullableOption<TeamworkCallEventType>;
    // Unique identifier of the call.
    callId?: NullableOption<string>;
    // List of call participants.
    callParticipants?: NullableOption<CallParticipantInfo[]>;
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
}
export interface CallParticipantInfo {
    // Identity of the call participant.
    participant?: NullableOption<IdentitySet>;
}
export interface CallRecordingEventMessageDetail extends EventMessageDetail {
    // Unique identifier of the call.
    callId?: NullableOption<string>;
    // Display name for the call recording.
    callRecordingDisplayName?: NullableOption<string>;
    // Duration of the call recording.
    callRecordingDuration?: NullableOption<string>;
    // Status of the call recording. Possible values are: success, failure, initial, chunkFinished, unknownFutureValue.
    callRecordingStatus?: NullableOption<CallRecordingStatus>;
    // Call recording URL.
    callRecordingUrl?: NullableOption<string>;
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // Organizer of the meeting.
    meetingOrganizer?: NullableOption<IdentitySet>;
}
export interface CallStartedEventMessageDetail extends EventMessageDetail {
    // Represents the call event type. Possible values are: call, meeting, screenShare, unknownFutureValue.
    callEventType?: NullableOption<TeamworkCallEventType>;
    // Unique identifier of the call.
    callId?: NullableOption<string>;
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
}
export interface CallTranscriptEventMessageDetail extends EventMessageDetail {
    // Unique identifier of the call.
    callId?: NullableOption<string>;
    // Unique identifier for a call transcript.
    callTranscriptICalUid?: NullableOption<string>;
    // The organizer of the meeting.
    meetingOrganizer?: NullableOption<IdentitySet>;
}
export interface ChannelAddedEventMessageDetail extends EventMessageDetail {
    // Display name of the channel.
    channelDisplayName?: NullableOption<string>;
    // Unique identifier of the channel.
    channelId?: NullableOption<string>;
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
}
export interface ChannelDeletedEventMessageDetail extends EventMessageDetail {
    // Display name of the channel.
    channelDisplayName?: NullableOption<string>;
    // Unique identifier of the channel.
    channelId?: NullableOption<string>;
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
}
export interface ChannelDescriptionUpdatedEventMessageDetail extends EventMessageDetail {
    // The updated description of the channel.
    channelDescription?: NullableOption<string>;
    // Unique identifier of the channel.
    channelId?: NullableOption<string>;
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
}
export interface ChannelIdentity {
    // The identity of the channel in which the message was posted.
    channelId?: NullableOption<string>;
    // The identity of the team in which the message was posted.
    teamId?: NullableOption<string>;
}
export interface ChannelMembersNotificationRecipient extends TeamworkNotificationRecipient {
    // The channel's identifier.
    channelId?: string;
    // The team's identifier under which the channel resides.
    teamId?: string;
}
export interface ChannelModerationSettings {
    // Indicates whether bots are allowed to post messages.
    allowNewMessageFromBots?: NullableOption<boolean>;
    // Indicates whether connectors are allowed to post messages.
    allowNewMessageFromConnectors?: NullableOption<boolean>;
    /**
     * Indicates who is allowed to reply to the teams channel. Possible values are: everyone, authorAndModerators,
     * unknownFutureValue.
     */
    replyRestriction?: NullableOption<ReplyRestriction>;
    /**
     * Indicates who is allowed to post messages to teams channel. Possible values are: everyone, everyoneExceptGuests,
     * moderators, unknownFutureValue.
     */
    userNewMessageRestriction?: NullableOption<UserNewMessageRestriction>;
}
export interface ChannelRenamedEventMessageDetail extends EventMessageDetail {
    // The updated name of the channel.
    channelDisplayName?: NullableOption<string>;
    // Unique identifier of the channel.
    channelId?: NullableOption<string>;
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
}
export interface ChannelSetAsFavoriteByDefaultEventMessageDetail extends EventMessageDetail {
    // Unique identifier of the channel.
    channelId?: NullableOption<string>;
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
}
export interface ChannelUnsetAsFavoriteByDefaultEventMessageDetail extends EventMessageDetail {
    // Unique identifier of the channel.
    channelId?: NullableOption<string>;
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
}
export interface ChatMembersNotificationRecipient extends TeamworkNotificationRecipient {
    // The chat's identifier.
    chatId?: string;
}
export interface ChatMessageAttachment {
    /**
     * 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.
     */
    content?: NullableOption<string>;
    /**
     * 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.Any contentTypes supported by the Bot Framework's Attachment
     * objectapplication/vnd.microsoft.card.codesnippet: A code snippet. application/vnd.microsoft.card.announcement: An
     * announcement header.
     */
    contentType?: NullableOption<string>;
    // URL for the content of the attachment. Supported protocols: http, https, file and data.
    contentUrl?: NullableOption<string>;
    // Read-only. Unique id of the attachment.
    id?: NullableOption<string>;
    // Name of the attachment.
    name?: NullableOption<string>;
    /**
     * 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.
     */
    thumbnailUrl?: NullableOption<string>;
}
// tslint:disable-next-line: no-empty-interface
export interface ChatMessageFromIdentitySet extends IdentitySet {}
export interface ChatMessageMention {
    /**
     * Index of an entity being mentioned in the specified chatMessage. Matches the {index} value in the corresponding
     * &amp;lt;at id='{index}'&amp;gt; tag in the message body.
     */
    id?: NullableOption<number>;
    // The entity (user, application, team, or channel) that was @mentioned.
    mentioned?: NullableOption<ChatMessageMentionedIdentitySet>;
    // String used to represent the mention. For example, a user's display name, a team name.
    mentionText?: NullableOption<string>;
}
export interface ChatMessageMentionedIdentitySet extends IdentitySet {
    // If present, represents a conversation (for example, team or channel) @mentioned in a message.
    conversation?: NullableOption<TeamworkConversationIdentity>;
    // If present, represents a tag @mentioned in a team message.
    tag?: NullableOption<TeamworkTagIdentity>;
}
export interface TeamworkConversationIdentity extends Identity {
    // Type of conversation. Possible values are: team, channel, and chat.
    conversationIdentityType?: NullableOption<TeamworkConversationIdentityType>;
}
// tslint:disable-next-line: no-empty-interface
export interface TeamworkTagIdentity extends Identity {}
export interface ChatMessagePolicyViolation {
    /**
     * The action taken by the DLP provider on the message with sensitive content. Supported values are: NoneNotifySender --
     * Inform the sender of the violation but allow readers to read the message.BlockAccess -- Block readers from reading the
     * message.BlockAccessExternal -- Block users outside the organization from reading the message, while allowing users
     * within the organization to read the message.
     */
    dlpAction?: NullableOption<ChatMessagePolicyViolationDlpActionTypes>;
    // Justification text provided by the sender of the message when overriding a policy violation.
    justificationText?: NullableOption<string>;
    // Information to display to the message sender about why the message was flagged as a violation.
    policyTip?: NullableOption<ChatMessagePolicyViolationPolicyTip>;
    /**
     * Indicates the action taken by the user on a message blocked by the DLP provider. Supported values are:
     * NoneOverrideReportFalsePositiveWhen the DLP provider is updating the message for blocking sensitive content, userAction
     * is not required.
     */
    userAction?: NullableOption<ChatMessagePolicyViolationUserActionTypes>;
    /**
     * Indicates what actions the sender may take in response to the policy violation. Supported values are:
     * NoneAllowFalsePositiveOverride -- Allows the sender to declare the policyViolation to be an error in the DLP app and
     * its rules, and allow readers to see the message again if the dlpAction had hidden it.AllowOverrideWithoutJustification
     * -- Allows the sender to overriide the DLP violation and allow readers to see the message again if the dlpAction had
     * hidden it, without needing to provide an explanation for doing so. AllowOverrideWithJustification -- Allows the sender
     * to overriide the DLP violation and allow readers to see the message again if the dlpAction had hidden it, after
     * providing an explanation for doing so.AllowOverrideWithoutJustification and AllowOverrideWithJustification are mutually
     * exclusive.
     */
    verdictDetails?: NullableOption<ChatMessagePolicyViolationVerdictDetailsTypes>;
}
export interface ChatMessagePolicyViolationPolicyTip {
    /**
     * The URL a user can visit to read about the data loss prevention policies for the organization. (ie, policies about what
     * users shouldn't say in chats)
     */
    complianceUrl?: NullableOption<string>;
    // Explanatory text shown to the sender of the message.
    generalText?: NullableOption<string>;
    /**
     * The list of improper data in the message that was detected by the data loss prevention app. Each DLP app defines its
     * own conditions, examples include 'Credit Card Number' and 'Social Security Number'.
     */
    matchedConditionDescriptions?: NullableOption<string[]>;
}
export interface ChatMessageReaction {
    /**
     * 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 is 2014-01-01T00:00:00Z
     */
    createdDateTime?: string;
    // Supported values are like, angry, sad, laugh, heart, surprised.
    reactionType?: string;
    // The user who reacted to the message.
    user?: ChatMessageReactionIdentitySet;
}
// tslint:disable-next-line: no-empty-interface
export interface ChatMessageReactionIdentitySet extends IdentitySet {}
export interface ChatRenamedEventMessageDetail extends EventMessageDetail {
    // The updated name of the chat.
    chatDisplayName?: NullableOption<string>;
    // Unique identifier of the chat.
    chatId?: NullableOption<string>;
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
}
export interface ChatViewpoint {
    // Represents the dateTime up until which the calling user has read chatMessages in a specific chat.
    lastMessageReadDateTime?: NullableOption<string>;
}
export interface ConversationMemberRoleUpdatedEventMessageDetail extends EventMessageDetail {
    // Roles for the coversation member user.
    conversationMemberRoles?: NullableOption<string[]>;
    // Identity of the conversation member user.
    conversationMemberUser?: NullableOption<TeamworkUserIdentity>;
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
}
export interface TeamworkUserIdentity extends Identity {
    /**
     * Type of user. Possible values are: aadUser, onPremiseAadUser, anonymousGuest, federatedUser,
     * personalMicrosoftAccountUser, skypeUser, and phoneUser.
     */
    userIdentityType?: NullableOption<TeamworkUserIdentityType>;
}
export interface MeetingPolicyUpdatedEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // Represents whether the meeting chat is enabled or not.
    meetingChatEnabled?: NullableOption<boolean>;
    // Unique identifier of the meeting chat.
    meetingChatId?: NullableOption<string>;
}
export interface MembersAddedEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // List of members added.
    members?: NullableOption<TeamworkUserIdentity[]>;
    visibleHistoryStartDateTime?: NullableOption<string>;
}
export interface MembersDeletedEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // List of members deleted.
    members?: NullableOption<TeamworkUserIdentity[]>;
}
export interface MembersJoinedEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // List of members who joined the chat.
    members?: NullableOption<TeamworkUserIdentity[]>;
}
export interface MembersLeftEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // List of members who left the chat.
    members?: NullableOption<TeamworkUserIdentity[]>;
}
export interface OperationError {
    // Operation error code.
    code?: NullableOption<string>;
    // Operation error message.
    message?: NullableOption<string>;
}
export interface ProvisionChannelEmailResult {
    // Represents the provisioned email address.
    email?: NullableOption<string>;
}
export interface TabUpdatedEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // Unique identifier of the tab.
    tabId?: NullableOption<string>;
}
export interface TeamArchivedEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // Unique identifier of the team.
    teamId?: NullableOption<string>;
}
export interface TeamClassSettings {
    /**
     * If set to true, enables sending of weekly assignments digest emails to parents/guardians, provided the tenant admin has
     * enabled the setting globally.
     */
    notifyGuardiansAboutAssignments?: NullableOption<boolean>;
}
export interface TeamCreatedEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // Description for the team.
    teamDescription?: NullableOption<string>;
    // Display name of the team.
    teamDisplayName?: NullableOption<string>;
    // Unique identifier of the team.
    teamId?: NullableOption<string>;
}
export interface TeamDescriptionUpdatedEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // The updated description for the team.
    teamDescription?: NullableOption<string>;
    // Unique identifier of the team.
    teamId?: NullableOption<string>;
}
export interface TeamJoiningDisabledEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // Unique identifier of the team.
    teamId?: NullableOption<string>;
}
export interface TeamJoiningEnabledEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // Unique identifier of the team.
    teamId?: NullableOption<string>;
}
export interface TeamMembersNotificationRecipient extends TeamworkNotificationRecipient {
    // The team's identifier.
    teamId?: string;
}
export interface TeamRenamedEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // The updated name of the team.
    teamDisplayName?: NullableOption<string>;
    // Unique identifier of the team.
    teamId?: NullableOption<string>;
}
export interface TeamsAppInstalledEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // Display name of the teamsApp.
    teamsAppDisplayName?: NullableOption<string>;
    // Unique identifier of the teamsApp.
    teamsAppId?: NullableOption<string>;
}
export interface TeamsAppRemovedEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // Display name of the teamApp.
    teamsAppDisplayName?: NullableOption<string>;
    // Unique identifier of the teamsApp.
    teamsAppId?: NullableOption<string>;
}
export interface TeamsAppUpgradedEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // Display name of the teamsApp.
    teamsAppDisplayName?: NullableOption<string>;
    // Unique identifier of the teamsApp.
    teamsAppId?: NullableOption<string>;
}
export interface TeamsTabConfiguration {
    // Url used for rendering tab contents in Teams. Required.
    contentUrl?: NullableOption<string>;
    // Identifier for the entity hosted by the tab provider.
    entityId?: NullableOption<string>;
    // Url called by Teams client when a Tab is removed using the Teams Client.
    removeUrl?: NullableOption<string>;
    // Url for showing tab contents outside of Teams.
    websiteUrl?: NullableOption<string>;
}
export interface TeamUnarchivedEventMessageDetail extends EventMessageDetail {
    // Initiator of the event.
    initiator?: NullableOption<IdentitySet>;
    // Unique identifier of the team.
    teamId?: NullableOption<string>;
}
export interface TeamworkActivityTopic {
    /**
     * Type of source. Possible values are: entityUrl, text. For supported Microsoft Graph URLs, use entityUrl. For custom
     * text, use text.
     */
    source?: NullableOption<TeamworkActivityTopicSource>;
    /**
     * The topic value. If the value of the source property is entityUrl, this must be a Microsoft Graph URL. If the vaule is
     * text, this must be a plain text value.
     */
    value?: string;
    /**
     * The link the user clicks when they select the notification. Optional when source is entityUrl; required when source is
     * text.
     */
    webUrl?: NullableOption<string>;
}
export interface TeamworkApplicationIdentity extends Identity {
    /**
     * Type of application that is referenced. Possible values are: aadApplication, bot, tenantBot, office365Connector, and
     * outgoingWebhook.
     */
    applicationIdentityType?: NullableOption<TeamworkApplicationIdentityType>;
}
export interface ScheduleEntity {
    endDateTime?: NullableOption<string>;
    startDateTime?: NullableOption<string>;
    theme?: ScheduleEntityTheme;
}
export interface ShiftItem extends ScheduleEntity {
    /**
     * 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.
     */
    activities?: NullableOption<ShiftActivity[]>;
    // The shift label of the shiftItem.
    displayName?: NullableOption<string>;
    // The shift notes for the shiftItem.
    notes?: NullableOption<string>;
}
export interface OpenShiftItem extends ShiftItem {
    // Count of the number of slots for the given open shift.
    openSlotCount?: number;
}
export interface ShiftActivity {
    // Customer defined code for the shiftActivity. Required.
    code?: NullableOption<string>;
    // The name of the shiftActivity. Required.
    displayName?: NullableOption<string>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Required.
     */
    endDateTime?: NullableOption<string>;
    // Indicates whether the microsoft.graph.user should be paid for the activity during their shift. Required.
    isPaid?: NullableOption<boolean>;
    /**
     * 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 is 2014-01-01T00:00:00Z. Required.
     */
    startDateTime?: NullableOption<string>;
    theme?: ScheduleEntityTheme;
}
export interface ShiftAvailability {
    // Specifies the pattern for recurrence
    recurrence?: NullableOption<PatternedRecurrence>;
    // The time slot(s) preferred by the user.
    timeSlots?: NullableOption<TimeRange[]>;
    // Specifies the time zone for the indicated time.
    timeZone?: NullableOption<string>;
}
export interface TimeRange {
    // End time for the time range.
    endTime?: NullableOption<string>;
    // Start time for the time range.
    startTime?: NullableOption<string>;
}
export interface TimeCardBreak {
    // ID of the timeCardBreak.
    breakId?: NullableOption<string>;
    // The start event of the timeCardBreak.
    end?: NullableOption<TimeCardEvent>;
    // Notes about the timeCardBreak.
    notes?: NullableOption<ItemBody>;
    // The start event of the timeCardBreak.
    start?: TimeCardEvent;
}
export interface TimeCardEvent {
    // Indicates whether the entry was recorded at the approved location.
    atApprovedLocation?: NullableOption<boolean>;
    // The time the entry is recorded.
    dateTime?: string;
    // Notes about the timeCardEvent.
    notes?: NullableOption<ItemBody>;
}
export interface TimeCardEntry {
    // The list of breaks associated with the timeCard.
    breaks?: NullableOption<TimeCardBreak[]>;
    // The clock-in event of the timeCard.
    clockInEvent?: NullableOption<TimeCardEvent>;
    // The clock-out event of the timeCard.
    clockOutEvent?: NullableOption<TimeCardEvent>;
}
export interface TimeClockSettings {
    // The aprroved location of the timeClock.
    approvedLocation?: NullableOption<GeoCoordinates>;
}
export interface TimeOffItem extends ScheduleEntity {
    // ID of the timeOffReason for this timeOffItem. Required.
    timeOffReasonId?: NullableOption<string>;
}
export interface WorkforceIntegrationEncryption {
    // Possible values are: sharedSecret, unknownFutureValue.
    protocol?: NullableOption<WorkforceIntegrationEncryptionProtocol>;
    // Encryption shared secret.
    secret?: NullableOption<string>;
}
export interface ThreatAssessmentRequestsCount {
    count?: NullableOption<number>;
    createdDateTime?: NullableOption<string>;
    pivotValue?: NullableOption<string>;
}

export namespace Ediscovery {
    type AdditionalDataOptions = "allVersions" | "linkedFiles" | "unknownFutureValue";
    type CaseAction =
        | "contentExport"
        | "applyTags"
        | "convertToPdf"
        | "index"
        | "estimateStatistics"
        | "addToReviewSet"
        | "unknownFutureValue";
    type CaseOperationStatus = "notStarted" | "submissionFailed" | "running" | "succeeded" | "partiallySucceeded" | "failed";
    type CaseStatus = "unknown" | "active" | "pendingDelete" | "closing" | "closed" | "closedWithError";
    type ChildSelectability = "One" | "Many";
    type CustodianStatus = "active" | "released";
    type DataSourceContainerStatus = "Active" | "Released" | "UnknownFutureValue";
    type DataSourceScopes =
        | "none"
        | "allTenantMailboxes"
        | "allTenantSites"
        | "allCaseCustodians"
        | "allCaseNoncustodialDataSources"
        | "unknownFutureValue";
    type ExportFileStructure = "none" | "directory" | "pst" | "unknownFutureValue";
    type ExportOptions = "originalFiles" | "text" | "pdfReplacement" | "fileInfo" | "tags" | "unknownFutureValue";
    type LegalHoldStatus = "Pending" | "Error" | "Success" | "UnknownFutureValue";
    type SourceType = "mailbox" | "site";
    interface Ediscoveryroot extends microsoftgraphbeta.Entity {
        cases?: NullableOption<Case[]>;
    }
    interface CaseOperation extends microsoftgraphbeta.Entity {
        /**
         * The type of action the operation represents. Possible values are:
         * addToReviewSet,applyTags,contentExport,convertToPdf,estimateStatistics
         */
        action?: NullableOption<CaseAction>;
        // The date and time the operation was completed.
        completedDateTime?: NullableOption<string>;
        // The user that created the operation.
        createdBy?: NullableOption<microsoftgraphbeta.IdentitySet>;
        // The date and time the operation was created.
        createdDateTime?: NullableOption<string>;
        // The progress of the operation.
        percentProgress?: NullableOption<number>;
        // Contains success and failure-specific result information.
        resultInfo?: NullableOption<microsoftgraphbeta.ResultInfo>;
        /**
         * The status of the case operation. Possible values are: notStarted, submissionFailed, running, succeeded,
         * partiallySucceeded, failed.
         */
        status?: NullableOption<CaseOperationStatus>;
    }
    interface AddToReviewSetOperation extends CaseOperation {
        // The review set to which items matching the source collection query are added to.
        reviewSet?: NullableOption<ReviewSet>;
        // The sourceCollection that items are being added from.
        sourceCollection?: NullableOption<SourceCollection>;
    }
    interface ReviewSet extends microsoftgraphbeta.Entity {
        // The user who created the review set. Read-only.
        createdBy?: NullableOption<microsoftgraphbeta.IdentitySet>;
        /**
         * The datetime when the review set was 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 is 2014-01-01T00:00:00Z. Read-only.
         */
        createdDateTime?: NullableOption<string>;
        // The review set name. The name is unique with a maximum limit of 64 characters.
        displayName?: NullableOption<string>;
        // Read-only. Nullable.
        queries?: NullableOption<ReviewSetQuery[]>;
    }
    interface SourceCollection extends microsoftgraphbeta.Entity {
        /**
         * The query string in KQL (Keyword Query Language) query. For details, see Keyword queries and search conditions for
         * Content Search and eDiscovery. You can refine searches by using fields paired with values; for example,
         * subject:'Quarterly Financials' AND Date&amp;gt;=06/01/2016 AND Date&amp;lt;=07/01/2016
         */
        contentQuery?: NullableOption<string>;
        // The user who created the sourceCollection.
        createdBy?: NullableOption<microsoftgraphbeta.IdentitySet>;
        // The date and time the sourceCollection was created.
        createdDateTime?: NullableOption<string>;
        /**
         * When specified, the collection will span across a service for an entire workload. Possible values are:
         * none,allTenantMailboxes,allTenantSites,allCaseCustodians,allCaseNoncustodialDataSources.
         */
        dataSourceScopes?: NullableOption<DataSourceScopes>;
        // The description of the sourceCollection
        description?: NullableOption<string>;
        // The display name of the sourceCollection
        displayName?: NullableOption<string>;
        // The last user who modified the sourceCollection.
        lastModifiedBy?: NullableOption<microsoftgraphbeta.IdentitySet>;
        // The last date and time the sourceCollection was modified.
        lastModifiedDateTime?: NullableOption<string>;
        // Adds an additional source to the sourceCollection.
        additionalSources?: NullableOption<DataSource[]>;
        // Adds the results of the sourceCollection to the specified reviewSet.
        addToReviewSetOperation?: NullableOption<AddToReviewSetOperation>;
        // Custodian sources that are included in the sourceCollection.
        custodianSources?: NullableOption<DataSource[]>;
        // The last estimate operation associated with the sourceCollection.
        lastEstimateStatisticsOperation?: NullableOption<EstimateStatisticsOperation>;
        // noncustodialDataSource sources that are included in the sourceCollection
        noncustodialSources?: NullableOption<NoncustodialDataSource[]>;
    }
    interface Case extends microsoftgraphbeta.Entity {
        // The user who closed the case.
        closedBy?: NullableOption<microsoftgraphbeta.IdentitySet>;
        /**
         * The date and time when the case was closed. 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 is 2014-01-01T00:00:00Z
         */
        closedDateTime?: NullableOption<string>;
        /**
         * The date and time when the entity was 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 is 2014-01-01T00:00:00Z
         */
        createdDateTime?: NullableOption<string>;
        // The case description.
        description?: NullableOption<string>;
        // The case name.
        displayName?: NullableOption<string>;
        // The external case number for customer reference.
        externalId?: NullableOption<string>;
        // The last user who modified the entity.
        lastModifiedBy?: NullableOption<microsoftgraphbeta.IdentitySet>;
        /**
         * The latest date and time when the case was modified. 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 is 2014-01-01T00:00:00Z
         */
        lastModifiedDateTime?: NullableOption<string>;
        /**
         * The case status. Possible values are unknown, active, pendingDelete, closing, closed, and closedWithError. For details,
         * see the following table.
         */
        status?: NullableOption<CaseStatus>;
        // Returns a list of case custodian objects for this case. Nullable.
        custodians?: NullableOption<Custodian[]>;
        // Returns a list of case legalHold objects for this case. Nullable.
        legalHolds?: NullableOption<LegalHold[]>;
        // Returns a list of case noncustodialDataSource objects for this case. Nullable.
        noncustodialDataSources?: NullableOption<NoncustodialDataSource[]>;
        // Returns a list of case operation objects for this case. Nullable.
        operations?: NullableOption<CaseOperation[]>;
        // Returns a list of reviewSet objects in the case. Read-only. Nullable.
        reviewSets?: NullableOption<ReviewSet[]>;
        settings?: NullableOption<Settings>;
        // Returns a list of sourceCollection objects associated with this case.
        sourceCollections?: NullableOption<SourceCollection[]>;
        // Returns a list of tag objects associated to this case.
        tags?: NullableOption<Tag[]>;
    }
    interface DataSourceContainer extends microsoftgraphbeta.Entity {
        // Created date and time of the dataSourceContainer entity.
        createdDateTime?: NullableOption<string>;
        // Display name of the dataSourceContainer entity.
        displayName?: NullableOption<string>;
        // Last modified date and time of the dataSourceContainer.
        lastModifiedDateTime?: NullableOption<string>;
        // Date and time that the dataSourceContainer was released from the case.
        releasedDateTime?: NullableOption<string>;
        // Latest status of the dataSourceContainer. Possible values are: Active, Released.
        status?: NullableOption<DataSourceContainerStatus>;
        lastIndexOperation?: NullableOption<CaseIndexOperation>;
    }
    interface Custodian extends DataSourceContainer {
        // Date and time the custodian acknowledged a hold notification.
        acknowledgedDateTime?: NullableOption<string>;
        // Identifies whether a custodian's sources were placed on hold during creation.
        applyHoldToSources?: NullableOption<boolean>;
        // Email address of the custodian.
        email?: string;
        // Data source entity for SharePoint sites associated with the custodian.
        siteSources?: NullableOption<SiteSource[]>;
        // Data source entity for groups associated with the custodian.
        unifiedGroupSources?: NullableOption<UnifiedGroupSource[]>;
        // Data source entity for a the custodian. This is the container for a custodian's mailbox and OneDrive for Business site.
        userSources?: NullableOption<UserSource[]>;
    }
    interface LegalHold extends microsoftgraphbeta.Entity {
        /**
         * KQL query that specifies content to be held in the specified locations. To learn more, see Keyword queries and search
         * conditions for Content Search and eDiscovery. To hold all content in the specified locations, leave contentQuery blank.
         */
        contentQuery?: NullableOption<string>;
        // The user who created the legal hold.
        createdBy?: NullableOption<microsoftgraphbeta.IdentitySet>;
        // The date and time the legal hold was created.
        createdDateTime?: NullableOption<string>;
        // The legal hold description.
        description?: NullableOption<string>;
        // The display name of the legal hold.
        displayName?: NullableOption<string>;
        // Lists any errors that happened while placing the hold.
        errors?: NullableOption<string[]>;
        // Indicates whether the hold is enabled and actively holding content.
        isEnabled?: NullableOption<boolean>;
        // the user who last modified the legal hold.
        lastModifiedBy?: NullableOption<microsoftgraphbeta.IdentitySet>;
        // The date and time the legal hold was last modified.
        lastModifiedDateTime?: NullableOption<string>;
        // The status of the legal hold. Possible values are: Pending, Error, Success, UnknownFutureValue.
        status?: NullableOption<LegalHoldStatus>;
        // Data source entity for SharePoint sites associated with the legal hold.
        siteSources?: NullableOption<SiteSource[]>;
        unifiedGroupSources?: NullableOption<UnifiedGroupSource[]>;
        // Data source entity for a the legal hold. This is the container for a mailbox and OneDrive for Business site.
        userSources?: NullableOption<UserSource[]>;
    }
    interface NoncustodialDataSource extends DataSourceContainer {
        // Indicates if hold is applied to non-custodial data source (such as mailbox or site).
        applyHoldToSource?: NullableOption<boolean>;
        // User source or SharePoint site data source as non-custodial data source.
        dataSource?: NullableOption<DataSource>;
    }
    interface Settings extends microsoftgraphbeta.Entity {
        // The OCR (Optical Character Recognition) settings for the case.
        ocr?: NullableOption<OcrSettings>;
        // The redundancy (near duplicate and email threading) detection settings for the case.
        redundancyDetection?: NullableOption<RedundancyDetectionSettings>;
        // The Topic Modeling (Themes) settings for the case.
        topicModeling?: NullableOption<TopicModelingSettings>;
    }
    interface Tag extends microsoftgraphbeta.Entity {
        /**
         * Indicates whether a single or multiple child tags can be associated with a document. Possible values are: One, Many.
         * This value controls whether the UX presents the tags as checkboxes or a radio button group.
         */
        childSelectability?: NullableOption<ChildSelectability>;
        // The user who created the tag.
        createdBy?: NullableOption<microsoftgraphbeta.IdentitySet>;
        // The description for the tag.
        description?: NullableOption<string>;
        // Display name of the tag.
        displayName?: NullableOption<string>;
        // The date and time the tag was last modified.
        lastModifiedDateTime?: NullableOption<string>;
        // Returns the tags that are a child of a tag.
        childTags?: NullableOption<Tag[]>;
        // Returns the parent tag of the specified tag.
        parent?: NullableOption<Tag>;
    }
    interface CaseExportOperation extends CaseOperation {
        /**
         * The name of the Azure storage location where the export will be stored. This only applies to exports stored in your own
         * Azure storage location.
         */
        azureBlobContainer?: NullableOption<string>;
        // The SAS token for the Azure storage location. This only applies to exports stored in your own Azure storage location.
        azureBlobToken?: NullableOption<string>;
        // The description provided for the export.
        description?: NullableOption<string>;
        /**
         * The options provided for the export. See reviewSet: export for more details. Possible values are: originalFiles, text,
         * pdfReplacement, fileInfo, tags.
         */
        exportOptions?: NullableOption<ExportOptions>;
        /**
         * The options provided that specify the structure of the export. See reviewSet: export for more details. Possible values
         * are: none, directory, pst.
         */
        exportStructure?: NullableOption<ExportFileStructure>;
        outputFolderId?: NullableOption<string>;
        // The name provided for the export.
        outputName?: NullableOption<string>;
        // The review set the content is being exported from.
        reviewSet?: NullableOption<ReviewSet>;
    }
// tslint:disable-next-line: no-empty-interface
    interface CaseIndexOperation extends CaseOperation {}
    interface DataSource extends microsoftgraphbeta.Entity {
        // The user who created the dataSource.
        createdBy?: NullableOption<microsoftgraphbeta.IdentitySet>;
        // The date and time the dataSource was created.
        createdDateTime?: NullableOption<string>;
        // The display name of the dataSource. This will be the name of the SharePoint site.
        displayName?: NullableOption<string>;
    }
    interface SiteSource extends DataSource {
        // The SharePoint site associated with the siteSource.
        site?: microsoftgraphbeta.Site;
    }
    interface UnifiedGroupSource extends DataSource {
        // Specifies which sources are included in this group. Possible values are: mailbox, site.
        includedSources?: NullableOption<SourceType>;
        // The group associated with the unifiedGroupSource.
        group?: microsoftgraphbeta.Group;
    }
    interface UserSource extends DataSource {
        // Email address of the user's mailbox.
        email?: string;
        // Specifies which sources are included in this group. Possible values are: mailbox, site.
        includedSources?: NullableOption<SourceType>;
    }
    interface EstimateStatisticsOperation extends CaseOperation {
        // The estimated count of items for the sourceCollection that matched the content query.
        indexedItemCount?: NullableOption<number>;
        // The estimated size of items for the sourceCollection that matched the content query.
        indexedItemsSize?: NullableOption<number>;
        // The number of mailboxes that had search hits.
        mailboxCount?: NullableOption<number>;
        // The number of mailboxes that had search hits.
        siteCount?: NullableOption<number>;
        // The estimated count of unindexed items for the collection.
        unindexedItemCount?: NullableOption<number>;
        // The estimated size of unindexed items for the collection.
        unindexedItemsSize?: NullableOption<number>;
        // eDiscovery collection, commonly known as a search.
        sourceCollection?: NullableOption<SourceCollection>;
    }
    interface ReviewSetQuery extends microsoftgraphbeta.Entity {
        // The user who created the query.
        createdBy?: NullableOption<microsoftgraphbeta.IdentitySet>;
        /**
         * The time and date when the query was 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 is 2014-01-01T00:00:00Z
         */
        createdDateTime?: NullableOption<string>;
        // The name of the query.
        displayName?: NullableOption<string>;
        // The user who last modified the query.
        lastModifiedBy?: NullableOption<microsoftgraphbeta.IdentitySet>;
        /**
         * The date and time the query was last modified. 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 is 2014-01-01T00:00:00Z
         */
        lastModifiedDateTime?: NullableOption<string>;
        /**
         * The query string in KQL (Keyword Query Language) query. For details, see Document metadata fields in Advanced
         * eDiscovery. This field maps directly to the keywords condition. You can refine searches by using fields listed in the
         * searchable field name paired with values; for example, subject:'Quarterly Financials' AND Date&amp;gt;=06/01/2016 AND
         * Date&amp;lt;=07/01/2016.
         */
        query?: NullableOption<string>;
    }
// tslint:disable-next-line: no-empty-interface
    interface TagOperation extends CaseOperation {}
    interface OcrSettings {
        // Indicates whether or not OCR is enabled for the case.
        isEnabled?: NullableOption<boolean>;
        // Maximum image size that will be processed in KB).
        maxImageSize?: NullableOption<number>;
        /**
         * The timeout duration for the OCR engine. A longer timeout may increase success of OCR, but may add to the total
         * processing time.
         */
        timeout?: NullableOption<string>;
    }
    interface RedundancyDetectionSettings {
        // Indicates whether email threading and near duplicate detection are enabled.
        isEnabled?: NullableOption<boolean>;
        // See Minimum/maximum number of words to learn more.
        maxWords?: NullableOption<number>;
        // See Minimum/maximum number of words to learn more.
        minWords?: NullableOption<number>;
        // See Document and email similarity threshold to learn more.
        similarityThreshold?: NullableOption<number>;
    }
    interface TopicModelingSettings {
        // To learn more, see Adjust maximum number of themes dynamically.
        dynamicallyAdjustTopicCount?: NullableOption<boolean>;
        // To learn more, see Include numbers in themes.
        ignoreNumbers?: NullableOption<boolean>;
        // Indicates whether themes is enabled for the case.
        isEnabled?: NullableOption<boolean>;
        // To learn more, see Maximum number of themes.
        topicCount?: NullableOption<number>;
    }
}
export namespace TermStore {
    type RelationType = "pin" | "reuse";
    type TermGroupScope = "global" | "system" | "siteCollection";
    interface Store extends microsoftgraphbeta.Entity {
        // Default language of the term store.
        defaultLanguageTag?: string;
        // List of languages for the term store.
        languageTags?: string[];
        // Collection of all groups available in the term store.
        groups?: NullableOption<Group[]>;
        // Collection of all sets available in the term store.
        sets?: NullableOption<Set[]>;
    }
    interface Group extends microsoftgraphbeta.Entity {
        // Date and time of group creation. Read-only.
        createdDateTime?: NullableOption<string>;
        // Description giving details on the term usage.
        description?: NullableOption<string>;
        // Name of group.
        displayName?: NullableOption<string>;
        // Id of the parent site of this group.
        parentSiteId?: NullableOption<string>;
        // Returns type of group. Possible values are 'global', 'system' and 'siteCollection'.
        scope?: NullableOption<TermGroupScope>;
        // All sets under the group in a term [store].
        sets?: NullableOption<Set[]>;
    }
    interface Set extends microsoftgraphbeta.Entity {
        // Date and time of set creation. Read-only.
        createdDateTime?: NullableOption<string>;
        // Description giving details on the term usage.
        description?: NullableOption<string>;
        // Name of the set for each languageTag.
        localizedNames?: NullableOption<LocalizedName[]>;
        // Custom properties for the set.
        properties?: NullableOption<microsoftgraphbeta.KeyValue[]>;
        // Children terms of set in term [store].
        children?: NullableOption<Term[]>;
        // The parent [group] that contains the set.
        parentGroup?: Group;
        // Indicates which terms have been pinned or reused directly under the set.
        relations?: NullableOption<Relation[]>;
        // All the terms under the set.
        terms?: NullableOption<Term[]>;
    }
    interface Relation extends microsoftgraphbeta.Entity {
        // The type of relation. Possible values are: pin, reuse.
        relationship?: NullableOption<RelationType>;
        /**
         * The from [term] of the relation. The term from which the relationship is defined. A null value would indicate the
         * relation is directly with the [set].
         */
        fromTerm?: NullableOption<Term>;
        // The [set] in which the relation is relevant.
        set?: NullableOption<Set>;
        // The to [term] of the relation. The term to which the relationship is defined.
        toTerm?: NullableOption<Term>;
    }
    interface Term extends microsoftgraphbeta.Entity {
        // Date and time of term creation. Read-only
        createdDateTime?: NullableOption<string>;
        // Description about term that is dependent on the languageTag
        descriptions?: NullableOption<LocalizedDescription[]>;
        // Label metadata for a term
        labels?: NullableOption<LocalizedLabel[]>;
        // Last date and time of term modification. Read-only
        lastModifiedDateTime?: NullableOption<string>;
        // Collection of properties on the term
        properties?: NullableOption<microsoftgraphbeta.KeyValue[]>;
        // Children of current term
        children?: NullableOption<Term[]>;
        // To indicate which terms are related to the current term as either pinned or reused
        relations?: NullableOption<Relation[]>;
        // The [set] in which the term is created
        set?: NullableOption<Set>;
    }
    interface LocalizedDescription {
        // The description in the localized language.
        description?: NullableOption<string>;
        // The language tag for the label.
        languageTag?: NullableOption<string>;
    }
    interface LocalizedLabel {
        // Indicates whether the label is the default label.
        isDefault?: NullableOption<boolean>;
        // The language tag for the label.
        languageTag?: NullableOption<string>;
        // The name of the label.
        name?: NullableOption<string>;
    }
    interface LocalizedName {
        // The language tag for the label.
        languageTag?: NullableOption<string>;
        // The name in the localized language.
        name?: NullableOption<string>;
    }
}
export namespace CallRecords {
    type CallType = "unknown" | "groupCall" | "peerToPeer" | "unknownFutureValue";
    type ClientPlatform =
        | "unknown"
        | "windows"
        | "macOS"
        | "iOS"
        | "android"
        | "web"
        | "ipPhone"
        | "roomSystem"
        | "surfaceHub"
        | "holoLens"
        | "unknownFutureValue";
    type FailureStage = "unknown" | "callSetup" | "midcall" | "unknownFutureValue";
    type MediaStreamDirection = "callerToCallee" | "calleeToCaller";
    type Modality = "audio" | "video" | "videoBasedScreenSharing" | "data" | "screenSharing" | "unknownFutureValue";
    type NetworkConnectionType = "unknown" | "wired" | "wifi" | "mobile" | "tunnel" | "unknownFutureValue";
    type ProductFamily = "unknown" | "teams" | "skypeForBusiness" | "lync" | "unknownFutureValue";
    type PstnCallDurationSource = "microsoft" | "operator";
    type ServiceRole =
        | "unknown"
        | "customBot"
        | "skypeForBusinessMicrosoftTeamsGateway"
        | "skypeForBusinessAudioVideoMcu"
        | "skypeForBusinessApplicationSharingMcu"
        | "skypeForBusinessCallQueues"
        | "skypeForBusinessAutoAttendant"
        | "mediationServer"
        | "mediationServerCloudConnectorEdition"
        | "exchangeUnifiedMessagingService"
        | "mediaController"
        | "conferencingAnnouncementService"
        | "conferencingAttendant"
        | "audioTeleconferencerController"
        | "skypeForBusinessUnifiedCommunicationApplicationPlatform"
        | "responseGroupServiceAnnouncementService"
        | "gateway"
        | "skypeTranslator"
        | "skypeForBusinessAttendant"
        | "responseGroupService"
        | "voicemail"
        | "unknownFutureValue";
    type UserFeedbackRating = "notRated" | "bad" | "poor" | "fair" | "good" | "excellent" | "unknownFutureValue";
    type WifiBand = "unknown" | "frequency24GHz" | "frequency50GHz" | "frequency60GHz" | "unknownFutureValue";
    type WifiRadioType =
        | "unknown"
        | "wifi80211a"
        | "wifi80211b"
        | "wifi80211g"
        | "wifi80211n"
        | "wifi80211ac"
        | "wifi80211ax"
        | "unknownFutureValue";
    interface CallRecord extends microsoftgraphbeta.Entity {
        /**
         * UTC time when the last user left the call. 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 is 2014-01-01T00:00:00Z
         */
        endDateTime?: string;
        // Meeting URL associated to the call. May not be available for a peerToPeer call record type.
        joinWebUrl?: NullableOption<string>;
        /**
         * UTC time when the call record was created. 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 is 2014-01-01T00:00:00Z
         */
        lastModifiedDateTime?: string;
        /**
         * List of all the modalities used in the call. Possible values are: unknown, audio, video, videoBasedScreenSharing, data,
         * screenSharing, unknownFutureValue.
         */
        modalities?: Modality[];
        // The organizing party's identity.
        organizer?: NullableOption<microsoftgraphbeta.IdentitySet>;
        // List of distinct identities involved in the call.
        participants?: NullableOption<microsoftgraphbeta.IdentitySet[]>;
        /**
         * UTC time when the first user joined the call. 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 is 2014-01-01T00:00:00Z
         */
        startDateTime?: string;
        // Indicates the type of the call. Possible values are: unknown, groupCall, peerToPeer, unknownFutureValue.
        type?: CallType;
        /**
         * Monotonically increasing version of the call record. Higher version call records with the same ID includes additional
         * data compared to the lower version.
         */
        version?: number;
        /**
         * List of sessions involved in the call. Peer-to-peer calls typically only have one session, whereas group calls
         * typically have at least one session per participant. Read-only. Nullable.
         */
        sessions?: NullableOption<Session[]>;
    }
    interface Session extends microsoftgraphbeta.Entity {
        // Endpoint that answered the session.
        callee?: NullableOption<Endpoint>;
        // Endpoint that initiated the session.
        caller?: NullableOption<Endpoint>;
        /**
         * UTC time when the last user left the session. 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 is 2014-01-01T00:00:00Z
         */
        endDateTime?: string;
        // Failure information associated with the session if the session failed.
        failureInfo?: NullableOption<FailureInfo>;
        /**
         * List of modalities present in the session. Possible values are: unknown, audio, video, videoBasedScreenSharing, data,
         * screenSharing, unknownFutureValue.
         */
        modalities?: Modality[];
        /**
         * UTC fime when the first user joined the session. 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 is 2014-01-01T00:00:00Z
         */
        startDateTime?: string;
        // The list of segments involved in the session. Read-only. Nullable.
        segments?: NullableOption<Segment[]>;
    }
    interface Segment extends microsoftgraphbeta.Entity {
        // Endpoint that answered this segment.
        callee?: NullableOption<Endpoint>;
        // Endpoint that initiated this segment.
        caller?: NullableOption<Endpoint>;
        /**
         * UTC time when the segment ended. 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 is 2014-01-01T00:00:00Z
         */
        endDateTime?: string;
        // Failure information associated with the segment if it failed.
        failureInfo?: NullableOption<FailureInfo>;
        // Media associated with this segment.
        media?: NullableOption<Media[]>;
        /**
         * UTC time when the segment started. 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 is 2014-01-01T00:00:00Z
         */
        startDateTime?: string;
    }
    interface UserAgent {
        // Identifies the version of application software used by this endpoint.
        applicationVersion?: NullableOption<string>;
        // User-agent header value reported by this endpoint.
        headerValue?: NullableOption<string>;
    }
    interface ClientUserAgent extends UserAgent {
        /**
         * Identifies the platform used by this endpoint. Possible values are: unknown, windows, macOS, iOS, android, web,
         * ipPhone, roomSystem, surfaceHub, holoLens, unknownFutureValue.
         */
        platform?: ClientPlatform;
        /**
         * Identifies the family of application software used by this endpoint. Possible values are: unknown, teams,
         * skypeForBusiness, lync, unknownFutureValue.
         */
        productFamily?: ProductFamily;
    }
    interface DeviceInfo {
        // Name of the capture device driver used by the media endpoint.
        captureDeviceDriver?: NullableOption<string>;
        // Name of the capture device used by the media endpoint.
        captureDeviceName?: NullableOption<string>;
        // Fraction of the call that the media endpoint detected the capture device was not working properly.
        captureNotFunctioningEventRatio?: NullableOption<number>;
        /**
         * Fraction of the call that the media endpoint detected the CPU resources available were insufficient and caused poor
         * quality of the audio sent and received.
         */
        cpuInsufficentEventRatio?: NullableOption<number>;
        /**
         * Fraction of the call that the media endpoint detected clipping in the captured audio that caused poor quality of the
         * audio being sent.
         */
        deviceClippingEventRatio?: NullableOption<number>;
        /**
         * Fraction of the call that the media endpoint detected glitches or gaps in the audio played or captured that caused poor
         * quality of the audio being sent or received.
         */
        deviceGlitchEventRatio?: NullableOption<number>;
        // Number of times during the call that the media endpoint detected howling or screeching audio.
        howlingEventCount?: NullableOption<number>;
        // The root mean square (RMS) of the incoming signal of up to the first 30 seconds of the call.
        initialSignalLevelRootMeanSquare?: NullableOption<number>;
        /**
         * Fraction of the call that the media endpoint detected low speech level that caused poor quality of the audio being
         * sent.
         */
        lowSpeechLevelEventRatio?: NullableOption<number>;
        /**
         * Fraction of the call that the media endpoint detected low speech to noise level that caused poor quality of the audio
         * being sent.
         */
        lowSpeechToNoiseEventRatio?: NullableOption<number>;
        // Glitches per 5 minute interval for the media endpoint's microphone.
        micGlitchRate?: NullableOption<number>;
        /**
         * Average energy level of received audio for audio classified as mono noise or left channel of stereo noise by the media
         * endpoint.
         */
        receivedNoiseLevel?: NullableOption<number>;
        /**
         * Average energy level of received audio for audio classified as mono speech, or left channel of stereo speech by the
         * media endpoint.
         */
        receivedSignalLevel?: NullableOption<number>;
        // Name of the render device driver used by the media endpoint.
        renderDeviceDriver?: NullableOption<string>;
        // Name of the render device used by the media endpoint.
        renderDeviceName?: NullableOption<string>;
        // Fraction of the call that media endpoint detected device render is muted.
        renderMuteEventRatio?: NullableOption<number>;
        // Fraction of the call that the media endpoint detected the render device was not working properly.
        renderNotFunctioningEventRatio?: NullableOption<number>;
        // Fraction of the call that media endpoint detected device render volume is set to 0.
        renderZeroVolumeEventRatio?: NullableOption<number>;
        /**
         * Average energy level of sent audio for audio classified as mono noise or left channel of stereo noise by the media
         * endpoint.
         */
        sentNoiseLevel?: NullableOption<number>;
        /**
         * Average energy level of sent audio for audio classified as mono speech, or left channel of stereo speech by the media
         * endpoint.
         */
        sentSignalLevel?: NullableOption<number>;
        // Glitches per 5 minute internal for the media endpoint's loudspeaker.
        speakerGlitchRate?: NullableOption<number>;
    }
    interface DirectRoutingLogRow {
        calleeNumber?: NullableOption<string>;
        callEndSubReason?: NullableOption<number>;
        callerNumber?: NullableOption<string>;
        callType?: NullableOption<string>;
        correlationId?: NullableOption<string>;
        duration?: NullableOption<number>;
        endDateTime?: NullableOption<string>;
        failureDateTime?: NullableOption<string>;
        finalSipCode?: NullableOption<number>;
        finalSipCodePhrase?: NullableOption<string>;
        id?: NullableOption<string>;
        inviteDateTime?: NullableOption<string>;
        mediaBypassEnabled?: NullableOption<boolean>;
        mediaPathLocation?: NullableOption<string>;
        signalingLocation?: NullableOption<string>;
        startDateTime?: NullableOption<string>;
        successfulCall?: NullableOption<boolean>;
        trunkFullyQualifiedDomainName?: NullableOption<string>;
        userDisplayName?: NullableOption<string>;
        userId?: NullableOption<string>;
        userPrincipalName?: NullableOption<string>;
    }
    interface Endpoint {
        // User-agent reported by this endpoint.
        userAgent?: NullableOption<UserAgent>;
    }
    interface FailureInfo {
        // Classification of why a call or portion of a call failed.
        reason?: NullableOption<string>;
        // The stage when the failure occurred. Possible values are: unknown, callSetup, midcall, unknownFutureValue.
        stage?: FailureStage;
    }
// tslint:disable-next-line: no-empty-interface
    interface FeedbackTokenSet {}
    interface Media {
        // Device information associated with the callee endpoint of this media.
        calleeDevice?: NullableOption<DeviceInfo>;
        // Network information associated with the callee endpoint of this media.
        calleeNetwork?: NullableOption<NetworkInfo>;
        // Device information associated with the caller endpoint of this media.
        callerDevice?: NullableOption<DeviceInfo>;
        // Network information associated with the caller endpoint of this media.
        callerNetwork?: NullableOption<NetworkInfo>;
        // How the media was identified during media negotiation stage.
        label?: NullableOption<string>;
        // Network streams associated with this media.
        streams?: NullableOption<MediaStream[]>;
    }
    interface NetworkInfo {
        /**
         * Fraction of the call that the media endpoint detected the available bandwidth or bandwidth policy was low enough to
         * cause poor quality of the audio sent.
         */
        bandwidthLowEventRatio?: NullableOption<number>;
        // The wireless LAN basic service set identifier of the media endpoint used to connect to the network.
        basicServiceSetIdentifier?: NullableOption<string>;
        /**
         * Type of network used by the media endpoint. Possible values are: unknown, wired, wifi, mobile, tunnel,
         * unknownFutureValue.
         */
        connectionType?: NetworkConnectionType;
        /**
         * Fraction of the call that the media endpoint detected the network delay was significant enough to impact the ability to
         * have real-time two-way communication.
         */
        delayEventRatio?: NullableOption<number>;
        // DNS suffix associated with the network adapter of the media endpoint.
        dnsSuffix?: NullableOption<string>;
        // IP address of the media endpoint.
        ipAddress?: NullableOption<string>;
        // Link speed in bits per second reported by the network adapter used by the media endpoint.
        linkSpeed?: NullableOption<number>;
        // The media access control (MAC) address of the media endpoint's network device.
        macAddress?: NullableOption<string>;
        // Network port number used by media endpoint.
        port?: NullableOption<number>;
        // Fraction of the call that the media endpoint detected the network was causing poor quality of the audio received.
        receivedQualityEventRatio?: NullableOption<number>;
        /**
         * IP address of the media endpoint as seen by the media relay server. This is typically the public internet IP address
         * associated to the endpoint.
         */
        reflexiveIPAddress?: NullableOption<string>;
        // IP address of the media relay server allocated by the media endpoint.
        relayIPAddress?: NullableOption<string>;
        // Network port number allocated on the media relay server by the media endpoint.
        relayPort?: NullableOption<number>;
        // Fraction of the call that the media endpoint detected the network was causing poor quality of the audio sent.
        sentQualityEventRatio?: NullableOption<number>;
        // Subnet used for media stream by the media endpoint.
        subnet?: NullableOption<string>;
        /**
         * WiFi band used by the media endpoint. Possible values are: unknown, frequency24GHz, frequency50GHz, frequency60GHz,
         * unknownFutureValue.
         */
        wifiBand?: WifiBand;
        // Estimated remaining battery charge in percentage reported by the media endpoint.
        wifiBatteryCharge?: NullableOption<number>;
        // WiFi channel used by the media endpoint.
        wifiChannel?: NullableOption<number>;
        /**
         * Name of the Microsoft WiFi driver used by the media endpoint. Value may be localized based on the language used by
         * endpoint.
         */
        wifiMicrosoftDriver?: NullableOption<string>;
        // Version of the Microsoft WiFi driver used by the media endpoint.
        wifiMicrosoftDriverVersion?: NullableOption<string>;
        /**
         * Type of WiFi radio used by the media endpoint. Possible values are: unknown, wifi80211a, wifi80211b, wifi80211g,
         * wifi80211n, wifi80211ac, wifi80211ax, unknownFutureValue.
         */
        wifiRadioType?: WifiRadioType;
        // WiFi signal strength in percentage reported by the media endpoint.
        wifiSignalStrength?: NullableOption<number>;
        // Name of the WiFi driver used by the media endpoint. Value may be localized based on the language used by endpoint.
        wifiVendorDriver?: NullableOption<string>;
        // Version of the WiFi driver used by the media endpoint.
        wifiVendorDriverVersion?: NullableOption<string>;
    }
    interface MediaStream {
        /**
         * Average Network Mean Opinion Score degradation for stream. Represents how much the network loss and jitter has impacted
         * the quality of received audio.
         */
        averageAudioDegradation?: NullableOption<number>;
        /**
         * Average jitter for the stream computed as specified in [RFC 3550][], denoted in [ISO 8601][] format. For example, 1
         * second is denoted as 'PT1S', where 'P' is the duration designator, 'T' is the time designator, and 'S' is the second
         * designator.
         */
        averageAudioNetworkJitter?: NullableOption<string>;
        // Average estimated bandwidth available between two endpoints in bits per second.
        averageBandwidthEstimate?: NullableOption<number>;
        /**
         * Average jitter for the stream computed as specified in [RFC 3550][], denoted in [ISO 8601][] format. For example, 1
         * second is denoted as 'PT1S', where 'P' is the duration designator, 'T' is the time designator, and 'S' is the second
         * designator.
         */
        averageJitter?: NullableOption<string>;
        // Average packet loss rate for stream.
        averagePacketLossRate?: NullableOption<number>;
        /**
         * Ratio of the number of audio frames with samples generated by packet loss concealment to the total number of audio
         * frames.
         */
        averageRatioOfConcealedSamples?: NullableOption<number>;
        // Average frames per second received for all video streams computed over the duration of the session.
        averageReceivedFrameRate?: NullableOption<number>;
        /**
         * Average network propagation round-trip time computed as specified in [RFC 3550][], denoted in [ISO 8601][] format. For
         * example, 1 second is denoted as 'PT1S', where 'P' is the duration designator, 'T' is the time designator, and 'S' is
         * the second designator.
         */
        averageRoundTripTime?: NullableOption<string>;
        // Average percentage of video frames lost as displayed to the user.
        averageVideoFrameLossPercentage?: NullableOption<number>;
        // Average frames per second received for a video stream, computed over the duration of the session.
        averageVideoFrameRate?: NullableOption<number>;
        // Average fraction of packets lost, as specified in [RFC 3550][], computed over the duration of the session.
        averageVideoPacketLossRate?: NullableOption<number>;
        /**
         * UTC time when the stream ended. 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 is 2014-01-01T00:00:00Z
         */
        endDateTime?: NullableOption<string>;
        // Fraction of the call where frame rate is less than 7.5 frames per second.
        lowFrameRateRatio?: NullableOption<number>;
        // Fraction of the call that the client is running less than 70% expected video processing capability.
        lowVideoProcessingCapabilityRatio?: NullableOption<number>;
        /**
         * Maximum of audio network jitter computed over each of the 20 second windows during the session, denoted in [ISO 8601][]
         * format. For example, 1 second is denoted as 'PT1S', where 'P' is the duration designator, 'T' is the time designator,
         * and 'S' is the second designator.
         */
        maxAudioNetworkJitter?: NullableOption<string>;
        /**
         * Maximum jitter for the stream computed as specified in RFC 3550, denoted in [ISO 8601][] format. For example, 1 second
         * is denoted as 'PT1S', where 'P' is the duration designator, 'T' is the time designator, and 'S' is the second
         * designator.
         */
        maxJitter?: NullableOption<string>;
        // Maximum packet loss rate for the stream.
        maxPacketLossRate?: NullableOption<number>;
        // Maximum ratio of packets concealed by the healer.
        maxRatioOfConcealedSamples?: NullableOption<number>;
        /**
         * Maximum network propagation round-trip time computed as specified in [RFC 3550][], denoted in [ISO 8601][] format. For
         * example, 1 second is denoted as 'PT1S', where 'P' is the duration designator, 'T' is the time designator, and 'S' is
         * the second designator.
         */
        maxRoundTripTime?: NullableOption<string>;
        // Packet count for the stream.
        packetUtilization?: NullableOption<number>;
        // Packet loss rate after FEC has been applied aggregated across all video streams and codecs.
        postForwardErrorCorrectionPacketLossRate?: NullableOption<number>;
        /**
         * UTC time when the stream started. 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 is 2014-01-01T00:00:00Z
         */
        startDateTime?: NullableOption<string>;
        // Indicates the direction of the media stream. Possible values are: callerToCallee, calleeToCaller.
        streamDirection?: MediaStreamDirection;
        // Unique identifier for the stream.
        streamId?: NullableOption<string>;
        /**
         * True if the media stream bypassed the Mediation Server and went straight between client and PSTN Gateway/PBX, false
         * otherwise.
         */
        wasMediaBypassed?: NullableOption<boolean>;
    }
    interface ParticipantEndpoint extends Endpoint {
        // The feedback provided by the user of this endpoint about the quality of the session.
        feedback?: NullableOption<UserFeedback>;
        // Identity associated with the endpoint.
        identity?: NullableOption<microsoftgraphbeta.IdentitySet>;
    }
    interface UserFeedback {
        /**
         * The rating provided by the user of this endpoint about the quality of this Session. Possible values are: notRated, bad,
         * poor, fair, good, excellent, unknownFutureValue.
         */
        rating?: UserFeedbackRating;
        // The feedback text provided by the user of this endpoint for the session.
        text?: NullableOption<string>;
        /**
         * The set of feedback tokens provided by the user of this endpoint for the session. This is a set of Boolean properties.
         * The property names should not be relied upon since they may change depending on what tokens are offered to the user.
         */
        tokens?: NullableOption<FeedbackTokenSet>;
    }
    interface PstnCallLogRow {
        callDurationSource?: NullableOption<PstnCallDurationSource>;
        calleeNumber?: NullableOption<string>;
        callerNumber?: NullableOption<string>;
        callId?: NullableOption<string>;
        callType?: NullableOption<string>;
        charge?: NullableOption<number>;
        conferenceId?: NullableOption<string>;
        connectionCharge?: NullableOption<number>;
        currency?: NullableOption<string>;
        destinationContext?: NullableOption<string>;
        destinationName?: NullableOption<string>;
        duration?: NullableOption<number>;
        endDateTime?: NullableOption<string>;
        id?: NullableOption<string>;
        inventoryType?: NullableOption<string>;
        licenseCapability?: NullableOption<string>;
        operator?: NullableOption<string>;
        startDateTime?: NullableOption<string>;
        tenantCountryCode?: NullableOption<string>;
        usageCountryCode?: NullableOption<string>;
        userDisplayName?: NullableOption<string>;
        userId?: NullableOption<string>;
        userPrincipalName?: NullableOption<string>;
    }
// tslint:disable-next-line: no-empty-interface
    interface ServiceEndpoint extends Endpoint {}
    interface ServiceUserAgent extends UserAgent {
        /**
         * Identifies the role of the service used by this endpoint. Possible values are: unknown, customBot,
         * skypeForBusinessMicrosoftTeamsGateway, skypeForBusinessAudioVideoMcu, skypeForBusinessApplicationSharingMcu,
         * skypeForBusinessCallQueues, skypeForBusinessAutoAttendant, mediationServer, mediationServerCloudConnectorEdition,
         * exchangeUnifiedMessagingService, mediaController, conferencingAnnouncementService, conferencingAttendant,
         * audioTeleconferencerController, skypeForBusinessUnifiedCommunicationApplicationPlatform,
         * responseGroupServiceAnnouncementService, gateway, skypeTranslator, skypeForBusinessAttendant, responseGroupService,
         * voicemail, unknownFutureValue.
         */
        role?: ServiceRole;
    }
}
export namespace ManagedTenants {
    type DelegatedPrivilegeStatus = "none" | "delegatedAdminPrivileges" | "unknownFutureValue";
    type ManagementActionStatus =
        | "toAddress"
        | "completed"
        | "error"
        | "timeOut"
        | "inProgress"
        | "planned"
        | "resolvedBy3rdParty"
        | "resolvedThroughAlternateMitigation"
        | "riskAccepted"
        | "unknownFutureValue";
    type ManagementCategory = "custom" | "devices" | "identity" | "unknownFutureValue";
    type ManagementParameterValueType =
        | "string"
        | "integer"
        | "boolean"
        | "guid"
        | "stringCollection"
        | "integerCollection"
        | "booleanCollection"
        | "guidCollection"
        | "unknownFutureValue";
    type TenantOnboardingStatus = "ineligible" | "inProcess" | "active" | "inactive" | "unknownFutureValue";
    type WorkloadActionCategory = "automated" | "manual" | "unknownFutureValue";
    type WorkloadActionStatus = "toAddress" | "completed" | "error" | "timeOut" | "inProgress" | "unknownFutureValue";
    type WorkloadOnboardingStatus = "notOnboarded" | "onboarded" | "unknownFutureValue";
    interface ManagedTenant extends microsoftgraphbeta.Entity {
        // Aggregate view of device compliance policies across managed tenants.
        aggregatedPolicyCompliances?: NullableOption<AggregatedPolicyCompliance[]>;
        // The collection of cloud PC connections across managed tenants.
        cloudPcConnections?: NullableOption<CloudPcConnection[]>;
        // The collection of cloud PC devices across managed tenants.
        cloudPcDevices?: NullableOption<CloudPcDevice[]>;
        // Overview of cloud PC information across managed tenants.
        cloudPcsOverview?: NullableOption<CloudPcOverview[]>;
        // Aggregate view of conditional access policy coverage across managed tenants.
        conditionalAccessPolicyCoverages?: NullableOption<ConditionalAccessPolicyCoverage[]>;
        /**
         * Summary information for user registration for multi-factor authentication and self service password reset across
         * managed tenants.
         */
        credentialUserRegistrationsSummaries?: NullableOption<CredentialUserRegistrationsSummary[]>;
        // Summary information for device compliance policy setting states across managed tenants.
        deviceCompliancePolicySettingStateSummaries?: NullableOption<DeviceCompliancePolicySettingStateSummary[]>;
        // The collection of compliance for managed devices across managed tenants.
        managedDeviceCompliances?: NullableOption<ManagedDeviceCompliance[]>;
        // Trend insights for device compliance across managed tenants.
        managedDeviceComplianceTrends?: NullableOption<ManagedDeviceComplianceTrend[]>;
        // The collection of baseline management actions across managed tenants.
        managementActions?: NullableOption<ManagementAction[]>;
        // The tenant level status of management actions across managed tenants.
        managementActionTenantDeploymentStatuses?: NullableOption<ManagementActionTenantDeploymentStatus[]>;
        // The collection of baseline management intents across managed tenants.
        managementIntents?: NullableOption<ManagementIntent[]>;
        // The collection of baseline management templates across managed tenants.
        managementTemplates?: NullableOption<ManagementTemplate[]>;
        // The collection of users flagged for risk across managed tenants.
        riskyUsers?: NullableOption<RiskyUser[]>;
        // The collection of a logical grouping of managed tenants used by the multi-tenant management platform.
        tenantGroups?: NullableOption<TenantGroup[]>;
        // The collection of tenants associated with the managing entity.
        tenants?: NullableOption<Tenant[]>;
        // The collection of tenant level customized information across managed tenants.
        tenantsCustomizedInformation?: NullableOption<TenantCustomizedInformation[]>;
        // The collection tenant level detailed information across managed tenants.
        tenantsDetailedInformation?: NullableOption<TenantDetailedInformation[]>;
        // The collection of tenant tags across managed tenants.
        tenantTags?: NullableOption<TenantTag[]>;
        // The state of malware for Windows devices, registered with Microsoft Endpoint Manager, across managed tenants.
        windowsDeviceMalwareStates?: NullableOption<WindowsDeviceMalwareState[]>;
        // The protection state for Windows devices, registered with Microsoft Endpoint Manager, across managed tenants.
        windowsProtectionStates?: NullableOption<WindowsProtectionState[]>;
    }
    interface AggregatedPolicyCompliance extends microsoftgraphbeta.Entity {
        // Identifier for the device compliance policy. Optional. Read-only.
        compliancePolicyId?: NullableOption<string>;
        // Name of the device compliance policy. Optional. Read-only.
        compliancePolicyName?: NullableOption<string>;
        /**
         * Platform for the device compliance policy. Possible values are: android, androidForWork, iOS, macOS, windowsPhone81,
         * windows81AndLater, windows10AndLater, androidWorkProfile, androidAOSP, all. Optional. Read-only.
         */
        compliancePolicyPlatform?: NullableOption<string>;
        // The type of compliance policy. Optional. Read-only.
        compliancePolicyType?: NullableOption<string>;
        // Date and time the entity was last updated in the multi-tenant management platform. Optional. Read-only.
        lastRefreshedDateTime?: NullableOption<string>;
        // The number of devices that are in a compliant status. Optional. Read-only.
        numberOfCompliantDevices?: NullableOption<number>;
        // The number of devices that are in an error status. Optional. Read-only.
        numberOfErrorDevices?: NullableOption<number>;
        // The number of device that are in a non-compliant status. Optional. Read-only.
        numberOfNonCompliantDevices?: NullableOption<number>;
        // The date and time the device policy was last modified. Optional. Read-only.
        policyModifiedDateTime?: NullableOption<string>;
        // The display name for the managed tenant. Optional. Read-only.
        tenantDisplayName?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Optional. Read-only.
        tenantId?: NullableOption<string>;
    }
    interface CloudPcConnection extends microsoftgraphbeta.Entity {
        // The display name of the cloud PC connection. Required. Read-only.
        displayName?: NullableOption<string>;
        /**
         * The health status of the cloud PC connection. Possible values are: pending, running, passed, failed,
         * unknownFutureValue. Required. Read-only.
         */
        healthCheckStatus?: NullableOption<string>;
        // Date and time the entity was last updated in the multi-tenant management platform. Required. Read-only.
        lastRefreshedDateTime?: NullableOption<string>;
        // The display name for the managed tenant. Required. Read-only.
        tenantDisplayName?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Required. Read-only.
        tenantId?: NullableOption<string>;
    }
    interface CloudPcDevice extends microsoftgraphbeta.Entity {
        /**
         * The status of the cloud PC. Possible values are: notProvisioned, provisioning, provisioned, upgrading, inGracePeriod,
         * deprovisioning, failed. Required. Read-only.
         */
        cloudPcStatus?: NullableOption<string>;
        // The display name for the cloud PC. Required. Read-only.
        displayName?: NullableOption<string>;
        // Date and time the entity was last updated in the multi-tenant management platform. Required. Read-only.
        lastRefreshedDateTime?: NullableOption<string>;
        // The managed device identifier for the cloud PC. Optional. Read-only.
        managedDeviceId?: NullableOption<string>;
        // The managed device display name for the cloud PC. Optional. Read-only.
        managedDeviceName?: NullableOption<string>;
        // The provisioning policy identifier for the cloud PC. Required. Read-only.
        provisioningPolicyId?: NullableOption<string>;
        // The service plan name for the cloud PC. Required. Read-only.
        servicePlanName?: NullableOption<string>;
        // The display name for the managed tenant. Required. Read-only.
        tenantDisplayName?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Required. Read-only.
        tenantId?: NullableOption<string>;
        // The user principal name (UPN) of the user assigned to the cloud PC. Required. Read-only.
        userPrincipalName?: NullableOption<string>;
    }
    interface CloudPcOverview extends microsoftgraphbeta.Entity {
        // Date and time the entity was last updated in the multi-tenant management platform. Optional. Read-only.
        lastRefreshedDateTime?: NullableOption<string>;
        // The number of cloud PC connections that have a status of failed. Optional. Read-only.
        numberOfCloudPcConnectionStatusFailed?: NullableOption<number>;
        // The number of cloud PC connections that have a status of passed. Optional. Read-only.
        numberOfCloudPcConnectionStatusPassed?: NullableOption<number>;
        // The number of cloud PC connections that have a status of pending. Optional. Read-only.
        numberOfCloudPcConnectionStatusPending?: NullableOption<number>;
        // The number of cloud PC connections that have a status of running. Optional. Read-only.
        numberOfCloudPcConnectionStatusRunning?: NullableOption<number>;
        // The number of cloud PC connections that have a status of unknownFutureValue. Optional. Read-only.
        numberOfCloudPcConnectionStatusUnkownFutureValue?: NullableOption<number>;
        // The number of cloud PCs that have a status of deprovisioning. Optional. Read-only.
        numberOfCloudPcStatusDeprovisioning?: NullableOption<number>;
        // The number of cloud PCs that have a status of failed. Optional. Read-only.
        numberOfCloudPcStatusFailed?: NullableOption<number>;
        // The number of cloud PCs that have a status of inGracePeriod. Optional. Read-only.
        numberOfCloudPcStatusInGracePeriod?: NullableOption<number>;
        // The number of cloud PCs that have a status of notProvisioned. Optional. Read-only.
        numberOfCloudPcStatusNotProvisioned?: NullableOption<number>;
        // The number of cloud PCs that have a status of provisioned. Optional. Read-only.
        numberOfCloudPcStatusProvisioned?: NullableOption<number>;
        // The number of cloud PCs that have a status of provisioning. Optional. Read-only.
        numberOfCloudPcStatusProvisioning?: NullableOption<number>;
        // The number of cloud PCs that have a status of unknown. Optional. Read-only.
        numberOfCloudPcStatusUnknown?: NullableOption<number>;
        // The number of cloud PCs that have a status of upgrading. Optional. Read-only.
        numberOfCloudPcStatusUpgrading?: NullableOption<number>;
        // The display name for the managed tenant. Optional. Read-only.
        tenantDisplayName?: NullableOption<string>;
        tenantId?: string;
        // The total number of cloud PC connection statuses for the given managed tenant. Optional. Read-only.
        totalCloudPcConnectionStatus?: NullableOption<number>;
        // The total number of cloud PC statues for the given managed tenant. Optional. Read-only.
        totalCloudPcStatus?: NullableOption<number>;
    }
    interface ConditionalAccessPolicyCoverage extends microsoftgraphbeta.Entity {
        /**
         * The state for the conditional access policy. Possible values are: enabled, disabled, enabledForReportingButNotEnforced.
         * Required. Read-only.
         */
        conditionalAccessPolicyState?: NullableOption<string>;
        // The date and time the conditional access policy was last modified. Required. Read-only.
        latestPolicyModifiedDateTime?: NullableOption<string>;
        // A flag indicating whether the conditional access policy requires device compliance. Required. Read-only.
        requiresDeviceCompliance?: NullableOption<boolean>;
        // The display name for the managed tenant. Required. Read-only.
        tenantDisplayName?: NullableOption<string>;
    }
    interface CredentialUserRegistrationsSummary extends microsoftgraphbeta.Entity {
        // Date and time the entity was last updated in the multi-tenant management platform. Optional. Read-only.
        lastRefreshedDateTime?: NullableOption<string>;
        /**
         * The number of users that are capable of performing multi-factor authentication or self service password reset.
         * Optional. Read-only.
         */
        mfaAndSsprCapableUserCount?: NullableOption<number>;
        // The state of a conditional access policy that enforces multi-factor authentication. Optional. Read-only.
        mfaConditionalAccessPolicyState?: NullableOption<string>;
        // The number of users registered for multi-factor authentication. Optional. Read-only.
        mfaRegisteredUserCount?: NullableOption<number>;
        // A flag indicating whether Identity Security Defaults is enabled. Optional. Read-only.
        securityDefaultsEnabled?: NullableOption<boolean>;
        // The number of users enabled for self service password reset. Optional. Read-only.
        ssprEnabledUserCount?: NullableOption<number>;
        // The number of users registered for self service password reset. Optional. Read-only.
        ssprRegisteredUserCount?: NullableOption<number>;
        // The display name for the managed tenant. Required. Read-only.
        tenantDisplayName?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Required. Read-only.
        tenantId?: NullableOption<string>;
        // The total number of users in the given managed tenant. Optional. Read-only.
        totalUserCount?: NullableOption<number>;
    }
    interface DeviceCompliancePolicySettingStateSummary extends microsoftgraphbeta.Entity {
        // The number of devices in a conflict state. Optional. Read-only.
        conflictDeviceCount?: NullableOption<number>;
        // The number of devices in an error state. Optional. Read-only.
        errorDeviceCount?: NullableOption<number>;
        // The number of devices in a failed state. Optional. Read-only.
        failedDeviceCount?: NullableOption<number>;
        // The identifer for the Microsoft Intune account. Required. Read-only.
        intuneAccountId?: NullableOption<string>;
        // The identifier for the Intune setting. Optional. Read-only.
        intuneSettingId?: NullableOption<string>;
        // Date and time the entity was last updated in the multi-tenant management platform. Optional. Read-only.
        lastRefreshedDateTime?: NullableOption<string>;
        // The number of devices in a not applicable state. Optional. Read-only.
        notApplicableDeviceCount?: NullableOption<number>;
        // The number of devices in a pending state. Optional. Read-only.
        pendingDeviceCount?: NullableOption<number>;
        // The type for the device compliance policy. Optional. Read-only.
        policyType?: NullableOption<string>;
        // The name for the setting within the device compliance policy. Optional. Read-only.
        settingName?: NullableOption<string>;
        // The number of devices in a succeeded state. Optional. Read-only.
        succeededDeviceCount?: NullableOption<number>;
        // The display name for the managed tenant. Required. Read-only.
        tenantDisplayName?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Required. Read-only.
        tenantId?: NullableOption<string>;
    }
    interface ManagedDeviceCompliance extends microsoftgraphbeta.Entity {
        /**
         * Compliance state of the device. This property is read-only. Possible values are: unknown, compliant, noncompliant,
         * conflict, error, inGracePeriod, configManager. Optional. Read-only.
         */
        complianceStatus?: NullableOption<string>;
        /**
         * Platform of the device. This property is read-only. Possible values are: desktop, windowsRT, winMO6, nokia,
         * windowsPhone, mac, winCE, winEmbedded, iPhone, iPad, iPod, android, iSocConsumer, unix, macMDM, holoLens, surfaceHub,
         * androidForWork, androidEnterprise, windows10x, androidnGMS, chromeOS, linux, blackberry, palm, unknown, cloudPC.
         * Optional. Read-only.
         */
        deviceType?: NullableOption<string>;
        // The date and time when the grace period will expire. Optional. Read-only.
        inGracePeriodUntilDateTime?: NullableOption<string>;
        // Date and time the entity was last updated in the multi-tenant management platform. Optional. Read-only.
        lastRefreshedDateTime?: NullableOption<string>;
        /**
         * The date and time that the device last completed a successful sync with Microsoft Endpoint Manager. Optional.
         * Read-only.
         */
        lastSyncDateTime?: NullableOption<string>;
        // The identifier for the managed device in Microsoft Endpoint Manager. Optional. Read-only.
        managedDeviceId?: NullableOption<string>;
        // The display name for the managed device. Optional. Read-only.
        managedDeviceName?: NullableOption<string>;
        // The manufacture for the device. Optional. Read-only.
        manufacturer?: NullableOption<string>;
        // The model for the device. Optional. Read-only.
        model?: NullableOption<string>;
        // The description of the operating system for the managed device. Optional. Read-only.
        osDescription?: NullableOption<string>;
        // The version of the operating system for the managed device. Optional. Read-only.
        osVersion?: NullableOption<string>;
        // The type of owner for the managed device. Optional. Read-only.
        ownerType?: NullableOption<string>;
        // The display name for the managed tenant. Optional. Read-only.
        tenantDisplayName?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Optional. Read-only.
        tenantId?: NullableOption<string>;
    }
    interface ManagedDeviceComplianceTrend extends microsoftgraphbeta.Entity {
        // The number of devices with a compliant status. Required. Read-only.
        compliantDeviceCount?: NullableOption<number>;
        // The number of devices manged by Configuration Manager. Required. Read-only.
        configManagerDeviceCount?: NullableOption<number>;
        // The date and time compliance snapshot was performed. Required. Read-only.
        countDateTime?: NullableOption<string>;
        // The number of devices with an error status. Required. Read-only.
        errorDeviceCount?: NullableOption<number>;
        // The number of devices that are in a grace period status. Required. Read-only.
        inGracePeriodDeviceCount?: NullableOption<number>;
        // The number of devices that are in a non-compliant status. Required. Read-only.
        noncompliantDeviceCount?: NullableOption<number>;
        // The display name for the managed tenant. Optional. Read-only.
        tenantDisplayName?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Optional. Read-only.
        tenantId?: NullableOption<string>;
        // The number of devices in an unknown status. Required. Read-only.
        unknownDeviceCount?: NullableOption<number>;
    }
    interface ManagementAction extends microsoftgraphbeta.Entity {
        /**
         * The category for the management action. Possible values are: custom, devices, identity, unknownFutureValue. Optional.
         * Read-only.
         */
        category?: NullableOption<ManagementCategory>;
        // The description for the management action. Optional. Read-only.
        description?: NullableOption<string>;
        // The display name for the management action. Optional. Read-only.
        displayName?: NullableOption<string>;
        // The reference for the management template used to generate the management action. Required. Read-only.
        referenceTemplateId?: NullableOption<string>;
        // The collection of workload actions associated with the management action. Required. Read-only.
        workloadActions?: NullableOption<WorkloadAction[]>;
    }
    interface ManagementActionTenantDeploymentStatus extends microsoftgraphbeta.Entity {
        // The collection of deployment status for each instance of a management action. Optional.
        statuses?: NullableOption<ManagementActionDeploymentStatus[]>;
        // The identifier for the tenant group that is associated with the management action. Required. Read-only.
        tenantGroupId?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Required. Read-only.
        tenantId?: NullableOption<string>;
    }
    interface ManagementIntent extends microsoftgraphbeta.Entity {
        // The display name for the management intent. Optional. Read-only.
        displayName?: NullableOption<string>;
        // A flag indicating whether the management intent is global. Required. Read-only.
        isGlobal?: boolean;
        // The collection of management templates associated with the management intent. Optional. Read-only.
        managementTemplates?: NullableOption<ManagementTemplateDetailedInfo[]>;
    }
    interface ManagementTemplate extends microsoftgraphbeta.Entity {
        /**
         * The management category for the management template. Possible values are: custom, devices, identity,
         * unknownFutureValue. Required. Read-only.
         */
        category?: NullableOption<ManagementCategory>;
        // The description for the management template. Optional. Read-only.
        description?: NullableOption<string>;
        // The display name for the management template. Required. Read-only.
        displayName?: NullableOption<string>;
        // The collection of parameters used by the management template. Optional. Read-only.
        parameters?: NullableOption<TemplateParameter[]>;
        // The collection of workload actions associated with the management template. Optional. Read-only.
        workloadActions?: NullableOption<WorkloadAction[]>;
    }
    interface RiskyUser extends microsoftgraphbeta.Entity {
        // A flag indicating whether the account has been deleted. Optional. Read-only.
        isDeleted?: NullableOption<boolean>;
        // Date and time the entity was last updated in the multi-tenant management platform. Optional. Read-only.
        lastRefreshedDateTime?: NullableOption<string>;
        // The risk details for the account flagged for risk. Optional. Read-only.
        riskDetail?: NullableOption<string>;
        // The date and time when the risk information was last updated. Optional. Read-only.
        riskLastUpdatedDateTime?: NullableOption<string>;
        /**
         * The level of risk that was detected. Possible values are: low, medium, high, hidden, none, unknownFutureValue.
         * Optional. Read-only.
         */
        riskLevel?: NullableOption<string>;
        /**
         * The state of risk that was detected. Possible values are: none, confirmedSafe, remediated, dismissed, atRisk,
         * confirmedCompromised, unknownFutureValue. Optional. Read-only.
         */
        riskState?: NullableOption<string>;
        // The display name for the managed tenant. Optional. Read-only.
        tenantDisplayName?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Required. Read-only.
        tenantId?: NullableOption<string>;
        // The display name for the account where risk was detected. Optional. Read-only.
        userDisplayName?: NullableOption<string>;
        // The identifier for the user account where risk was detected. Required. Read-only.
        userId?: NullableOption<string>;
        // The user principal name (UPN) for the account where risk was detected. Optional. Read-only.
        userPrincipalName?: NullableOption<string>;
    }
    interface TenantGroup extends microsoftgraphbeta.Entity {
        // A flag indicating whether all managed tenant are included in the tenant group. Required. Read-only.
        allTenantsIncluded?: boolean;
        // The display name for the tenant group. Optional. Read-only.
        displayName?: NullableOption<string>;
        // The collection of management action associated with the tenant group. Optional. Read-only.
        managementActions?: NullableOption<ManagementActionInfo[]>;
        // The collection of management intents associated with the tenant group. Optional. Read-only.
        managementIntents?: NullableOption<ManagementIntentInfo[]>;
        // The collection of managed tenant identifiers include in the tenant group. Optional. Read-only.
        tenantIds?: NullableOption<string[]>;
    }
    interface Tenant extends microsoftgraphbeta.Entity {
        // The relationship details for the tenant with the managing entity.
        contract?: NullableOption<TenantContract>;
        // The date and time the tenant was created in the multi-tenant management platform. Optional. Read-only.
        createdDateTime?: NullableOption<string>;
        // The display name for the tenant. Required. Read-only.
        displayName?: NullableOption<string>;
        // The date and time the tenant was last updated within the multi-tenant management platform. Optional. Read-only.
        lastUpdatedDateTime?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Optional. Read-only.
        tenantId?: NullableOption<string>;
        // The onboarding status information for the tenant. Optional. Read-only.
        tenantStatusInformation?: NullableOption<TenantStatusInformation>;
    }
    interface TenantCustomizedInformation extends microsoftgraphbeta.Entity {
        // The collection of contacts for the managed tenant. Optional.
        contacts?: NullableOption<TenantContactInformation[]>;
        // The display name for the managed tenant. Required. Read-only.
        displayName?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Optional. Read-only.
        tenantId?: string;
        // The website for the managed tenant. Required.
        website?: NullableOption<string>;
    }
    interface TenantDetailedInformation extends microsoftgraphbeta.Entity {
        // The city where the managed tenant is located. Optional. Read-only.
        city?: NullableOption<string>;
        // The code for the country where the managed tenant is located. Optional. Read-only.
        countryCode?: NullableOption<string>;
        // The name for the country where the managed tenant is located. Optional. Read-only.
        countryName?: NullableOption<string>;
        // The default domain name for the managed tenant. Optional. Read-only.
        defaultDomainName?: NullableOption<string>;
        // The display name for the managed tenant.
        displayName?: NullableOption<string>;
        // The business industry associated with the managed tenant. Optional. Read-only.
        industryName?: NullableOption<string>;
        // The region where the managed tenant is located. Optional. Read-only.
        region?: NullableOption<string>;
        // The business segment associated with the managed tenant. Optional. Read-only.
        segmentName?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant.
        tenantId?: NullableOption<string>;
        // The vertical associated with the managed tenant. Optional. Read-only.
        verticalName?: NullableOption<string>;
    }
    interface TenantTag extends microsoftgraphbeta.Entity {
        // The identifier for the account that created the tenant tag. Required. Read-only.
        createdByUserId?: NullableOption<string>;
        // The date and time when the tenant tag was created. Required. Read-only.
        createdDateTime?: NullableOption<string>;
        // The date and time when the tenant tag was deleted. Required. Read-only.
        deletedDateTime?: NullableOption<string>;
        // The description for the tenant tag. Optional. Read-only.
        description?: NullableOption<string>;
        // The display name for the tenant tag. Required. Read-only.
        displayName?: NullableOption<string>;
        // The identifier for the account that lasted on the tenant tag. Optional. Read-only.
        lastActionByUserId?: NullableOption<string>;
        // The date and time the last action was performed against the tenant tag. Optional. Read-only.
        lastActionDateTime?: NullableOption<string>;
        // The collection of managed tenants associated with the tenant tag. Optional.
        tenants?: NullableOption<TenantInfo[]>;
    }
    interface WindowsDeviceMalwareState extends microsoftgraphbeta.Entity {
        // The additional information URL for the discovered malware. Optional. Read-only.
        additionalInformationUrl?: NullableOption<string>;
        // The number of times the piece of malware has been detected. Optional. Read-only.
        detectionCount?: NullableOption<number>;
        // A flag indicating whether the device has been deleted. Optional. Read-only.
        deviceDeleted?: NullableOption<boolean>;
        // The date and time the piece of malware was initially detected. Optional. Read-only.
        initialDetectionDateTime?: NullableOption<string>;
        // Date and time the entity was last updated in the multi-tenant management platform. Optional. Read-only.
        lastRefreshedDateTime?: NullableOption<string>;
        // The date and time the malware state was last changed. Optional. Read-only.
        lastStateChangeDateTime?: NullableOption<string>;
        // The category for the detected malware. Optional. Read-only.
        malwareCategory?: NullableOption<string>;
        // The display name for the detected malware. Optional. Read-only.
        malwareDisplayName?: NullableOption<string>;
        // The execution state for the detected malware. Optional. Read-only.
        malwareExecutionState?: NullableOption<string>;
        // The unique identifier for the detected malware. Optional. Read-only.
        malwareId?: NullableOption<string>;
        // The severity for the detected malware. Optional. Read-only.
        malwareSeverity?: NullableOption<string>;
        // The threat state for the detected malware. Optional. Read-only.
        malwareThreatState?: NullableOption<string>;
        // The identifier for the managed device where the malware was detected. Optional. Read-only.
        managedDeviceId?: NullableOption<string>;
        // The display name for the managed device where the malware was detected. Optional. Read-only.
        managedDeviceName?: NullableOption<string>;
        // The display name for the managed tenant. Optional. Read-only.
        tenantDisplayName?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Optional. Read-only.
        tenantId?: NullableOption<string>;
    }
    interface WindowsProtectionState extends microsoftgraphbeta.Entity {
        // The anti-malware version for the managed device. Optional. Read-only.
        antiMalwareVersion?: NullableOption<string>;
        // A flag indicating whether attention is required for the managed device. Optional. Read-only.
        attentionRequired?: NullableOption<boolean>;
        // A flag indicating whether the managed device has been deleted. Optional. Read-only.
        deviceDeleted?: NullableOption<boolean>;
        // The date and time the device property has been refreshed. Optional. Read-only.
        devicePropertyRefreshDateTime?: NullableOption<string>;
        // The anti-virus engine version for the managed device. Optional. Read-only.
        engineVersion?: NullableOption<string>;
        // A flag indicating whether quick scan is overdue for the managed device. Optional. Read-only.
        fullScanOverdue?: NullableOption<boolean>;
        // A flag indicating whether full scan is overdue for the managed device. Optional. Read-only.
        fullScanRequired?: NullableOption<boolean>;
        // The date and time a full scan was completed. Optional. Read-only.
        lastFullScanDateTime?: NullableOption<string>;
        // The version anti-malware version used to perform the last full scan. Optional. Read-only.
        lastFullScanSignatureVersion?: NullableOption<string>;
        // The date and time a quick scan was completed. Optional. Read-only.
        lastQuickScanDateTime?: NullableOption<string>;
        // The version anti-malware version used to perform the last full scan. Optional. Read-only.
        lastQuickScanSignatureVersion?: NullableOption<string>;
        // Date and time the entity was last updated in the multi-tenant management platform. Optional. Read-only.
        lastRefreshedDateTime?: NullableOption<string>;
        // The date and time the protection state was last reported for the managed device. Optional. Read-only.
        lastReportedDateTime?: NullableOption<string>;
        // A flag indicating whether malware protection is enabled for the managed device. Optional. Read-only.
        malwareProtectionEnabled?: NullableOption<boolean>;
        // The health state for the managed device. Optional. Read-only.
        managedDeviceHealthState?: NullableOption<string>;
        // The unique identifier for the managed device. Optional. Read-only.
        managedDeviceId?: NullableOption<string>;
        // The display name for the managed device. Optional. Read-only.
        managedDeviceName?: NullableOption<string>;
        // A flag indicating whether the network inspection system is enabled. Optional. Read-only.
        networkInspectionSystemEnabled?: NullableOption<boolean>;
        // A flag indicating weather a quick scan is overdue. Optional. Read-only.
        quickScanOverdue?: NullableOption<boolean>;
        // A flag indicating whether real time protection is enabled. Optional. Read-only.
        realTimeProtectionEnabled?: NullableOption<boolean>;
        // A flag indicating whether a reboot is required. Optional. Read-only.
        rebootRequired?: NullableOption<boolean>;
        // A flag indicating whether an signature update is overdue. Optional. Read-only.
        signatureUpdateOverdue?: NullableOption<boolean>;
        // The signature version for the managed device. Optional. Read-only.
        signatureVersion?: NullableOption<string>;
        // The display name for the managed tenant. Optional. Read-only.
        tenantDisplayName?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant. Optional. Read-only.
        tenantId?: NullableOption<string>;
    }
    interface ManagedTenantOperationError {
        // The error message for the exception.
        error?: NullableOption<string>;
        // The Azure Active Directory tenant identifier for the managed tenant.
        tenantId?: string;
    }
    interface ManagedTenantExecutionError extends ManagedTenantOperationError {
        // Additional error information for the exception. Optional. Read-only.
        errorDetails?: NullableOption<string>;
        // The node identifier where the exception occurred. Required. Read-only.
        nodeId?: number;
        // The token for the exception. Optional. Read-only.
        rawToken?: NullableOption<string>;
        // The statement index for the exception. Required. Read-only.
        statementIndex?: number;
    }
// tslint:disable-next-line: no-empty-interface
    interface ManagedTenantGenericError extends ManagedTenantOperationError {}
    interface ManagementActionDeploymentStatus {
        // The identifier for the management action. Required. Read-only.
        managementActionId?: NullableOption<string>;
        // The management template identifier that was used to generate the management action. Required. Read-only.
        managementTemplateId?: NullableOption<string>;
        /**
         * The status of the management action. Possible values are: toAddress, completed, error, timeOut, inProgress, planned,
         * resolvedBy3rdParty, resolvedThroughAlternateMitigation, riskAccepted, unknownFutureValue. Required.
         */
        status?: NullableOption<ManagementActionStatus>;
        // The collection of workload action deployment statues for the given management action. Optional.
        workloadActionDeploymentStatuses?: NullableOption<WorkloadActionDeploymentStatus[]>;
    }
    interface WorkloadActionDeploymentStatus {
        // The unique identifier for the workload action. Required. Read-only.
        actionId?: NullableOption<string>;
        // The identifier of any policy that was created by applying the workload action. Optional. Read-only.
        deployedPolicyId?: NullableOption<string>;
        // The detailed information for exceptions that occur when deploying the workload action. Optional. Required.
        error?: NullableOption<microsoftgraphbeta.GenericError>;
        // The date and time the workload action was last deployed. Optional.
        lastDeploymentDateTime?: string;
        /**
         * The status of the workload action deployment. Possible values are: toAddress, completed, error, timeOut, inProgress,
         * unknownFutureValue. Required. Read-only.
         */
        status?: NullableOption<WorkloadActionStatus>;
    }
    interface ManagementActionInfo {
        // The identifier for the management action. Required. Read-only.
        managementActionId?: string;
        // The identifier for the management template. Required. Read-only.
        managementTemplateId?: NullableOption<string>;
    }
    interface ManagementIntentInfo {
        // The display name for the management intent. Optional. Read-only.
        managementIntentDisplayName?: NullableOption<string>;
        // The identifier for the management intent. Required. Read-only.
        managementIntentId?: NullableOption<string>;
        // The collection of management template information associated with the management intent. Optional. Read-only.
        managementTemplates?: NullableOption<ManagementTemplateDetailedInfo[]>;
    }
    interface ManagementTemplateDetailedInfo {
        /**
         * The management category for the management template. Possible values are: custom, devices, identity,
         * unknownFutureValue. Required. Read-only.
         */
        category?: NullableOption<ManagementCategory>;
        // The display name for the management template. Required. Read-only.
        displayName?: NullableOption<string>;
        // The unique identifier for the management template. Required. Read-only.
        managementTemplateId?: NullableOption<string>;
    }
    interface Setting {
        // The display name for the setting. Required. Read-only.
        displayName?: NullableOption<string>;
        // The value for the setting serialized as string of JSON. Required. Read-only.
        jsonValue?: NullableOption<string>;
        // A flag indicating whether the setting can be override existing configurations when applied. Required. Read-only.
        overwriteAllowed?: boolean;
        /**
         * The data type for the setting. Possible values are: string, integer, boolean, guid, stringCollection,
         * integerCollection, booleanCollection, guidCollection, unknownFutureValue. Required. Read-only.
         */
        valueType?: ManagementParameterValueType;
    }
    interface TemplateParameter {
        // The description for the template parameter. Optional. Read-only.
        description?: NullableOption<string>;
        // The display name for the template parameter. Required. Read-only.
        displayName?: NullableOption<string>;
        // The allowed values for the template parameter represented by a serialized string of JSON. Optional. Read-only.
        jsonAllowedValues?: NullableOption<string>;
        // The default value for the template parameter represented by a serialized string of JSON. Required. Read-only.
        jsonDefaultValue?: NullableOption<string>;
        /**
         * The data type for the template parameter.. Possible values are: string, integer, boolean, guid, stringCollection,
         * integerCollection, booleanCollection, guidCollection, unknownFutureValue. Required. Read-only.
         */
        valueType?: ManagementParameterValueType;
    }
    interface TenantContactInformation {
        // The email address for the contact. Optional
        email?: NullableOption<string>;
        // The name for the contact. Required.
        name?: NullableOption<string>;
        // The notes associated with the contact. Optional
        notes?: NullableOption<string>;
        // The phone number for the contact. Optional.
        phone?: NullableOption<string>;
        // The title for the contact. Required.
        title?: NullableOption<string>;
    }
    interface TenantContract {
        // The type of relationship that exists between the managing entity and tenant. Optional. Read-only.
        contractType?: NullableOption<number>;
        // The default domain name for the tenant. Required. Read-only.
        defaultDomainName?: NullableOption<string>;
        // The display name for the tenant. Optional. Read-only.
        displayName?: NullableOption<string>;
    }
    interface TenantInfo {
        // The Azure Active Directory tenant identifier for the managed tenant. Optional.
        tenantId?: NullableOption<string>;
    }
    interface TenantStatusInformation {
        /**
         * The status of the delegated admin privilege relationship between the managing entity and the managed tenant. Possible
         * values are: none, delegatedAdminPrivileges, unknownFutureValue. Optional. Read-only.
         */
        delegatedPrivilegeStatus?: NullableOption<DelegatedPrivilegeStatus>;
        // The date and time the delegated admin privileges status was updated. Optional. Read-only.
        lastDelegatedPrivilegeRefreshDateTime?: NullableOption<string>;
        // The identifier for the account that offboarded the managed tenant. Optional. Read-only.
        offboardedByUserId?: NullableOption<string>;
        // The date and time when the managed tenant was offboarded. Optional. Read-only.
        offboardedDateTime?: NullableOption<string>;
        // The identifier for the account that onboarded the managed tenant. Optional. Read-only.
        onboardedByUserId?: NullableOption<string>;
        // The date and time when the managed tenant was onboarded. Optional. Read-only.
        onboardedDateTime?: NullableOption<string>;
        /**
         * The onboarding status for the managed tenant.. Possible values are: ineligible, inProcess, active, inactive,
         * unknownFutureValue. Optional. Read-only.
         */
        onboardingStatus?: NullableOption<TenantOnboardingStatus>;
        // The collection of workload statues for the managed tenant. Optional. Read-only.
        workloadStatuses?: NullableOption<WorkloadStatus[]>;
    }
    interface WorkloadStatus {
        // The display name for the workload. Required. Read-only.
        displayName?: NullableOption<string>;
        // The date and time the workload was offboarded. Optional. Read-only.
        offboardedDateTime?: NullableOption<string>;
        // The date and time the workload was onboarded. Optional. Read-only.
        onboardedDateTime?: NullableOption<string>;
        /**
         * The onboarding status for the workload. Possible values are: notOnboarded, onboarded, unknownFutureValue. Optional.
         * Read-only.
         */
        onboardingStatus?: WorkloadOnboardingStatus;
    }
    interface WorkloadAction {
        // The unique identifier for the workload action. Required. Read-only.
        actionId?: NullableOption<string>;
        // The category for the workload action. Possible values are: automated, manual, unknownFutureValue. Optional. Read-only.
        category?: NullableOption<WorkloadActionCategory>;
        // The description for the workload action. Optional. Read-only.
        description?: NullableOption<string>;
        // The display name for the workload action. Optional. Read-only.
        displayName?: NullableOption<string>;
        // The service associated with workload action. Optional. Read-only.
        service?: NullableOption<string>;
        // The collection of settings associated with the workload action. Optional. Read-only.
        settings?: NullableOption<Setting[]>;
    }
}
export namespace ExternalConnectors {
    type AccessType = "grant" | "deny" | "unknownFutureValue";
    type AclType = "user" | "group" | "everyone" | "everyoneExceptGuests" | "externalGroup" | "unknownFutureValue";
    type ConnectionOperationStatus = "unspecified" | "inprogress" | "completed" | "failed" | "unknownFutureValue";
    type ConnectionState = "draft" | "ready" | "obsolete" | "limitExceeded" | "unknownFutureValue";
    type ExternalGroupMemberType = "user" | "group" | "unknownFutureValue";
    type ExternalItemContentType = "text" | "html" | "unknownFutureValue";
    type IdentitySourceType = "azureActiveDirectory" | "external" | "unknownFutureValue";
    type IdentityType = "user" | "group" | "externalGroup" | "unknownFutureValue";
    type Label =
        | "title"
        | "url"
        | "createdBy"
        | "lastModifiedBy"
        | "authors"
        | "createdDateTime"
        | "lastModifiedDateTime"
        | "fileName"
        | "fileExtension"
        | "unknownFutureValue"
        | "iconUrl"
        | "containerName"
        | "containerUrl";
    type PropertyType =
        | "string"
        | "int64"
        | "double"
        | "dateTime"
        | "boolean"
        | "stringCollection"
        | "int64Collection"
        | "doubleCollection"
        | "dateTimeCollection"
        | "unknownFutureValue";
    interface ConnectionOperation extends microsoftgraphbeta.Entity {
        // If status is failed, provides more information about the error that caused the failure.
        error?: NullableOption<microsoftgraphbeta.PublicError>;
        // Indicates the status of the asynchronous operation. Possible values are: unspecified, inprogress, completed, failed.
        status?: NullableOption<ConnectionOperationStatus>;
    }
    interface External {
        connections?: NullableOption<ExternalConnection[]>;
    }
    interface ExternalConnection extends microsoftgraphbeta.Entity {
        /**
         * Specifies additional application IDs that are allowed to manage the connection and to index content in the connection.
         * Optional.
         */
        configuration?: NullableOption<Configuration>;
        // Description of the connection displayed in the Microsoft 365 admin center. Optional.
        description?: NullableOption<string>;
        /**
         * The display name of the connection to be displayed in the Microsoft 365 admin center. Maximum length of 128 characters.
         * Required.
         */
        name?: NullableOption<string>;
        // Indicates the current state of the connection. Possible values are draft, ready, obsolete, and limitExceeded. Required.
        state?: NullableOption<ConnectionState>;
        groups?: NullableOption<ExternalGroup[]>;
        // Read-only. Nullable.
        items?: NullableOption<ExternalItem[]>;
        // Read-only. Nullable.
        operations?: NullableOption<ConnectionOperation[]>;
        // Read-only. Nullable.
        schema?: NullableOption<Schema>;
    }
    interface ExternalGroup extends microsoftgraphbeta.Entity {
        // The description of the external group. Optional.
        description?: NullableOption<string>;
        // The friendly name of the external group. Optional.
        displayName?: NullableOption<string>;
        /**
         * A member added to an externalGroup. You can add Azure Active Directory users, Azure Active Directory groups, or other
         * externalGroups as members.
         */
        members?: NullableOption<ExternalGroupMember[]>;
    }
    interface ExternalItem extends microsoftgraphbeta.Entity {
        // An array of access control entries. Each entry specifies the access granted to a user or group. Required.
        acl?: NullableOption<Acl[]>;
        // A plain-text representation of the contents of the item. The text in this property is full-text indexed. Optional.
        content?: NullableOption<ExternalItemContent>;
        /**
         * A property bag with the properties of the item. The properties MUST conform to the schema defined for the
         * externalConnection. Required.
         */
        properties?: NullableOption<Properties>;
    }
    interface Schema extends microsoftgraphbeta.Entity {
        // Must be set to microsoft.graph.externalItem. Required.
        baseType?: string;
        // The properties defined for the items in the connection. The minimum number of properties is one, the maximum is 128.
        properties?: NullableOption<Property[]>;
    }
    interface ExternalGroupMember extends microsoftgraphbeta.Entity {
        // The identity source that the member belongs to. Possible values are: azureActiveDirectory, external.
        identitySource?: NullableOption<IdentitySourceType>;
        /**
         * The type of member added to the external group. Possible values are: user or group when the identitySource is
         * azureActiveDirectory and just group when the identitySource is external.
         */
        type?: ExternalGroupMemberType;
    }
    interface Acl {
        // The access granted to the identity. Possible values are: grant, deny.
        accessType?: AccessType;
        // The source of identity. Possible values are azureActiveDirectory or external.
        identitySource?: NullableOption<IdentitySourceType>;
        /**
         * The type of identity. Possible values are: user, group, everyone, everyoneExceptGuests if the identitySource is
         * azureActiveDirectory and just group if the identitySource is external.
         */
        type?: AclType;
        /**
         * The unique identifer of the identity. In case of Azure Active Directory identities, value is set to the object
         * identifier of the user, group or tenant for types user, group and everyone (and everyoneExceptGuests) respectively. In
         * case of external groups value is set to the ID of the externalGroup.
         */
        value?: string;
    }
    interface Configuration {
        /**
         * A collection of application IDs for registered Azure Active Directory apps that are allowed to manage the
         * externalConnection and to index content in the externalConnection.
         */
        authorizedAppIds?: NullableOption<string[]>;
    }
    interface ExternalItemContent {
        // The type of content in the value property. Possible values are text and html. Required.
        type?: ExternalItemContentType;
        // The content for the externalItem. Required.
        value?: NullableOption<string>;
    }
// tslint:disable-next-line: interface-name
    interface Identity {
        id?: string;
        type?: NullableOption<IdentityType>;
    }
// tslint:disable-next-line: no-empty-interface
    interface Properties {}
    interface Property {
        /**
         * A set of aliases or a friendly names for the property. Maximum 32 characters. Each string must not contain control
         * characters, whitespace, or any of the following: :, ;, ,, (, ), [, ], {, }, %, $, +, !, *, =, &amp;, ?, @, #, /, ~, ',
         * ', &amp;lt;, &amp;gt;, `
         */
        aliases?: NullableOption<string[]>;
        /**
         * Specifies if the property is queryable. Queryable properties can be used in Keyword Query Language (KQL) queries.
         * Optional.
         */
        isQueryable?: NullableOption<boolean>;
        /**
         * Specifies if the property is refinable. Refinable properties can be used to filter search results in the Search API and
         * add a refiner control in the Microsoft Search user experience. Optional.
         */
        isRefinable?: NullableOption<boolean>;
        /**
         * Specifies if the property is retrievable. Retrievable properties are returned in the result set when items are returned
         * by the search API. Retrievable properties are also available to add to the display template used to render search
         * results. Optional.
         */
        isRetrievable?: NullableOption<boolean>;
        /**
         * Specifies if the property is searchable. Only properties of type string or stringCollection can be searchable.
         * Non-searchable properties are not added to the search index. Optional.
         */
        isSearchable?: NullableOption<boolean>;
        /**
         * Specifies one or more well-known tags added against a property. Labels help Microsoft Search understand the semantics
         * of the data in the connection. Adding appropriate labels would result in an enhanced search experience (e.g. better
         * relevance). Optional.The possible values are: title, url, createdBy, lastModifiedBy, authors, createdDateTime,
         * lastModifiedDateTime, fileName, fileExtension, unknownFutureValue, iconUrl, containerName, containerUrl. Note that you
         * must use the Prefer: include-unknown-enum-members request header to get the following values in this evolvable enum:
         * iconUrl, containerName, containerUrl.
         */
        labels?: NullableOption<Label[]>;
        /**
         * The name of the property. Maximum 32 characters. Must not contain control characters, whitespace, or any of the
         * following: :, ;, ,, (, ), [, ], {, }, %, $, +, !, *, =, &amp;, ?, @, #, /, ~, ', ', &amp;lt;, &amp;gt;, `
         */
        name?: string;
        /**
         * The data type of the property. Possible values are: string, int64, double, dateTime, boolean, stringCollection,
         * int64Collection, doubleCollection, dateTimeCollection, unknownFutureValue. Required.
         */
        type?: PropertyType;
    }
}
export namespace WindowsUpdates {
    type AzureADDeviceRegistrationErrorReason =
        | "invalidGlobalDeviceId"
        | "invalidAzureADDeviceId"
        | "missingTrustType"
        | "invalidAzureADJoin"
        | "unknownFutureValue";
    type DeploymentStateReasonValue =
        | "scheduledByOfferWindow"
        | "offeringByRequest"
        | "pausedByRequest"
        | "pausedByMonitoring"
        | "unknownFutureValue";
    type DeploymentStateValue = "scheduled" | "offering" | "paused" | "faulted" | "archived" | "unknownFutureValue";
    type EquivalentContentOption = "none" | "latestSecurity" | "unknownFutureValue";
    type MonitoringAction = "alertError" | "pauseDeployment" | "unknownFutureValue";
    type MonitoringSignal = "rollback" | "unknownFutureValue";
    type QualityUpdateClassification = "all" | "security" | "nonSecurity" | "unknownFutureValue";
    type RequestedDeploymentStateValue = "none" | "paused" | "archived" | "unknownFutureValue";
    type UpdateCategory = "feature" | "quality" | "unknownFutureValue";
    interface Windows extends microsoftgraphbeta.Entity {
        // Entity that acts as a container for the functionality of the Windows Update for Business deployment service. Read-only.
        updates?: NullableOption<Updates>;
    }
// tslint:disable-next-line: no-empty-interface
    interface UpdatableAsset extends microsoftgraphbeta.Entity {}
    interface AzureADDevice extends UpdatableAsset {
        // Specifies areas of the service in which the device is enrolled. Read-only. Returned by default.
        enrollments?: NullableOption<UpdatableAssetEnrollment[]>;
        /**
         * Specifies any errors that prevent the device from being enrolled in update management or receving deployed content.
         * Read-only. Returned by default.
         */
        errors?: NullableOption<UpdatableAssetError[]>;
    }
    interface Catalog extends microsoftgraphbeta.Entity {
        // Lists the content that you can approve for deployment. Read-only.
        entries?: NullableOption<CatalogEntry[]>;
    }
    interface CatalogEntry extends microsoftgraphbeta.Entity {
        // The date on which the content is no longer available to deploy using the service. Read-only.
        deployableUntilDateTime?: NullableOption<string>;
        // The display name of the content. Read-only.
        displayName?: NullableOption<string>;
        // The release date for the content. Read-only.
        releaseDateTime?: string;
    }
    interface Deployment extends microsoftgraphbeta.Entity {
        // Specifies what content to deploy. Cannot be changed. Returned by default.
        content?: NullableOption<DeployableContent>;
        // The date and time the deployment was created. Returned by default. Read-only.
        createdDateTime?: string;
        // The date and time the deployment was last modified. Returned by default. Read-only.
        lastModifiedDateTime?: string;
        // Settings specified on the specific deployment governing how to deploy content. Returned by default.
        settings?: NullableOption<DeploymentSettings>;
        // Execution status of the deployment. Returned by default.
        state?: NullableOption<DeploymentState>;
        // Specifies the audience to which content is deployed.
        audience?: NullableOption<DeploymentAudience>;
    }
    interface DeploymentAudience extends microsoftgraphbeta.Entity {
        // Specifies the assets to exclude from the audience.
        exclusions?: NullableOption<UpdatableAsset[]>;
        // Specifies the assets to include in the audience.
        members?: NullableOption<UpdatableAsset[]>;
    }
// tslint:disable-next-line: no-empty-interface
    interface SoftwareUpdateCatalogEntry extends CatalogEntry {}
    interface FeatureUpdateCatalogEntry extends SoftwareUpdateCatalogEntry {
        // The version of the feature update. Read-only.
        version?: NullableOption<string>;
    }
    interface QualityUpdateCatalogEntry extends SoftwareUpdateCatalogEntry {
        // Indicates whether the content can be deployed as an expedited quality update. Read-only.
        isExpeditable?: boolean;
        /**
         * The classification on the quality update. Supports a subset of the values for qualityUpdateClassification. Possible
         * values are: all, security, nonSecurity. Read-only.
         */
        qualityUpdateClassification?: QualityUpdateClassification;
    }
    interface UpdatableAssetGroup extends UpdatableAsset {
        // Members of the group. Read-only.
        members?: NullableOption<UpdatableAsset[]>;
    }
    interface Updates extends microsoftgraphbeta.Entity {
        // Catalog of content that can be approved for deployment by the deployment service. Read-only.
        catalog?: NullableOption<Catalog>;
        // Deployments created using the deployment service. Read-only.
        deployments?: NullableOption<Deployment[]>;
        // Assets registered with the deployment service that can receive updates. Read-only.
        updatableAssets?: NullableOption<UpdatableAsset[]>;
    }
// tslint:disable-next-line: no-empty-interface
    interface UpdatableAssetError {}
    interface AzureADDeviceRegistrationError extends UpdatableAssetError {
        /**
         * The reason why the registration encountered an error. Possible values are: invalidGlobalDeviceId,
         * invalidAzureADDeviceId, missingTrustType, invalidAzureADJoin.
         */
        reason?: AzureADDeviceRegistrationErrorReason;
    }
// tslint:disable-next-line: no-empty-interface
    interface DeployableContent {}
    interface DeploymentSettings {
        // Settings governing conditions to monitor and automated actions to take.
        monitoring?: NullableOption<MonitoringSettings>;
        // Settings governing how the content is rolled out.
        rollout?: NullableOption<RolloutSettings>;
    }
    interface MonitoringSettings {
        /**
         * Specifies the rules through which monitoring signals can trigger actions on the deployment. Rules are combined using
         * 'or'.
         */
        monitoringRules?: NullableOption<MonitoringRule[]>;
    }
    interface RolloutSettings {
        /**
         * Specifies the number of devices that are offered at the same time. Has no effect when endDateTime is set. When
         * endDateTime and devicesPerOffer are both not set, all devices in the deployment are offered content at the same time.
         */
        devicesPerOffer?: number;
        /**
         * Specifies duration between each set of devices being offered the update. Has an effect when endDateTime or
         * devicesPerOffer are defined. Default value is P1D (1 day).
         */
        durationBetweenOffers?: NullableOption<string>;
        /**
         * Specifies the date before which all devices currently in the deployment are offered the update. Devices added after
         * this date are offered immediately. When endDateTime and devicesPerOffer are both not set, all devices in the deployment
         * are offered content at the same time.
         */
        endDateTime?: string;
        /**
         * Date on which devices in the deployment start receiving the update. When not set, the deployment starts as soon as
         * devices are assigned.
         */
        startDateTime?: NullableOption<string>;
    }
    interface DeploymentState {
        // Specifies the reasons the deployment has its state value. Read-only.
        reasons?: NullableOption<DeploymentStateReason[]>;
        /**
         * Specifies the requested state of the deployment. Supports a subset of the values for requestedDeploymentStateValue.
         * Possible values are: none, paused.
         */
        requestedValue?: RequestedDeploymentStateValue;
        /**
         * Specifies the state of the deployment. Supports a subset of the values for deploymentStateValue. Possible values are:
         * scheduled, offering, paused. Read-only.
         */
        value?: DeploymentStateValue;
    }
    interface DeploymentStateReason {
        /**
         * Specifies a reason for the deployment state. Possible values are: scheduledByOfferWindow, offeringByRequest,
         * pausedByRequest, pausedByMonitoring. Read-only.
         */
        value?: DeploymentStateReasonValue;
    }
// tslint:disable-next-line: no-empty-interface
    interface SoftwareUpdateReference extends DeployableContent {}
// tslint:disable-next-line: no-empty-interface
    interface WindowsUpdateReference extends SoftwareUpdateReference {}
    interface QualityUpdateReference extends WindowsUpdateReference {
        /**
         * Specifies the classification of the referenced content. Supports a subset of the values for
         * qualityUpdateClassification. Possible values are: security.
         */
        classification?: NullableOption<QualityUpdateClassification>;
        /**
         * Specifies a quality update in the given servicingChannel with the given classification by date (i.e. the last update
         * published on the specified date). Default value is security.
         */
        releaseDateTime?: string;
    }
    interface ExpeditedQualityUpdateReference extends QualityUpdateReference {
        /**
         * Specifies other content to consider as equivalent. Supports a subset of the values for equivalentContentOption. Default
         * value is latestSecurity. Possible values are: latestSecurity.
         */
        equivalentContent?: NullableOption<EquivalentContentOption>;
    }
    interface FeatureUpdateReference extends WindowsUpdateReference {
        // Specifies a feature update by version.
        version?: NullableOption<string>;
    }
    interface MonitoringRule {
        // The action triggered when the threshold for the given signal is met. Possible values are: alertError, pauseDeployment.
        action?: NullableOption<MonitoringAction>;
        // The signal to monitor. Possible values are: rollback.
        signal?: NullableOption<MonitoringSignal>;
        // The threshold for a signal at which to trigger action. An integer from 1 to 100 (inclusive).
        threshold?: NullableOption<number>;
    }
// tslint:disable-next-line: no-empty-interface
    interface UpdatableAssetEnrollment {}
    interface UpdateManagementEnrollment extends UpdatableAssetEnrollment {
        /**
         * The category of updates that the service manages. Supports a subset of the values for updateCategory. Possible values
         * are: feature.
         */
        updateCategory?: UpdateCategory;
    }
    interface UserExperienceSettings {
        /**
         * Specifies the number of days after an update is installed, during which the user of the device can control when the
         * device restarts.
         */
        daysUntilForcedReboot?: NullableOption<number>;
    }
    interface WindowsDeploymentSettings extends DeploymentSettings {
        // Settings governing the user's update experience on a device.
        userExperience?: NullableOption<UserExperienceSettings>;
    }
}
