{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-graph/json-schema/microsoft-graph-microsoft-graph-windows-information-protection-policy-schema.json",
  "title": "microsoft.graph.windowsInformationProtectionPolicy",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-graph-deviceappmanagement-windowsinformationprotectionpolicy-api-openapi.yml#/components/schemas/microsoft.graph.windowsInformationProtectionPolicy",
  "allOf": [
    {
      "$ref": "#/$defs/microsoft.graph.windowsInformationProtection"
    },
    {
      "title": "windowsInformationProtectionPolicy",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "daysWithoutContactBeforeUnenroll": {
          "maximum": 2147483647,
          "minimum": -2147483648,
          "type": "number",
          "description": "Offline interval before app data is wiped (days) . Valid values 0 to 999",
          "format": "int32"
        },
        "mdmEnrollmentUrl": {
          "type": [
            "string",
            "null"
          ],
          "description": "Enrollment url for the MDM"
        },
        "minutesOfInactivityBeforeDeviceLock": {
          "maximum": 2147483647,
          "minimum": -2147483648,
          "type": "number",
          "description": "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 <= X <= 999. Valid values 0 to 999",
          "format": "int32"
        },
        "numberOfPastPinsRemembered": {
          "maximum": 2147483647,
          "minimum": -2147483648,
          "type": "number",
          "description": "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. Valid values 0 to 50",
          "format": "int32"
        },
        "passwordMaximumAttemptCount": {
          "maximum": 2147483647,
          "minimum": -2147483648,
          "type": "number",
          "description": "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 <= X <= 16 for desktop and 0 <= X <= 999 for mobile devices. Valid values 0 to 999",
          "format": "int32"
        },
        "pinExpirationDays": {
          "maximum": 2147483647,
          "minimum": -2147483648,
          "type": "number",
          "description": "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. Valid values 0 to 730",
          "format": "int32"
        },
        "pinLowercaseLetters": {
          "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionPinCharacterRequirements"
        },
        "pinMinimumLength": {
          "maximum": 2147483647,
          "minimum": -2147483648,
          "type": "number",
          "description": "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. Valid values 0 to 127",
          "format": "int32"
        },
        "pinSpecialCharacters": {
          "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionPinCharacterRequirements"
        },
        "pinUppercaseLetters": {
          "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionPinCharacterRequirements"
        },
        "revokeOnMdmHandoffDisabled": {
          "type": "boolean",
          "description": "New property in RS2, pending documentation"
        },
        "windowsHelloForBusinessBlocked": {
          "type": "boolean",
          "description": "Boolean value that sets Windows Hello for Business as a method for signing into Windows."
        },
        "@odata.type": {
          "type": "string",
          "default": "#microsoft.graph.windowsInformationProtectionPolicy"
        }
      },
      "description": "Policy for Windows information protection without MDM"
    }
  ],
  "x-ms-discriminator-value": "#microsoft.graph.windowsInformationProtectionPolicy",
  "$defs": {
    "microsoft.graph.deviceAndAppManagementAssignmentTarget": {
      "title": "deviceAndAppManagementAssignmentTarget",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "@odata.type": {
          "type": "string"
        }
      },
      "description": "Base type for assignment targets."
    },
    "microsoft.graph.entity": {
      "title": "entity",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The unique identifier for an entity. Read-only."
        },
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.ipRange": {
      "title": "ipRange",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "@odata.type": {
          "type": "string"
        }
      }
    },
    "microsoft.graph.managedAppPolicy": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "managedAppPolicy",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "createdDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": "string",
              "description": "The date and time the policy was created.",
              "format": "date-time"
            },
            "description": {
              "type": [
                "string",
                "null"
              ],
              "description": "The policy's description."
            },
            "displayName": {
              "type": "string",
              "description": "Policy display name."
            },
            "lastModifiedDateTime": {
              "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
              "type": "string",
              "description": "Last time the policy was modified.",
              "format": "date-time"
            },
            "version": {
              "type": [
                "string",
                "null"
              ],
              "description": "Version of the entity."
            },
            "@odata.type": {
              "type": "string"
            }
          },
          "description": "The ManagedAppPolicy resource represents a base type for platform specific policies."
        }
      ]
    },
    "microsoft.graph.proxiedDomain": {
      "title": "proxiedDomain",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "ipAddressOrFQDN": {
          "type": "string",
          "description": "The IP address or FQDN"
        },
        "proxy": {
          "type": [
            "string",
            "null"
          ],
          "description": "Proxy IP or FQDN"
        },
        "@odata.type": {
          "type": "string"
        }
      },
      "description": "Proxied Domain"
    },
    "microsoft.graph.targetedManagedAppPolicyAssignment": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "targetedManagedAppPolicyAssignment",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "target": {
              "anyOf": [
                {
                  "$ref": "#/$defs/microsoft.graph.deviceAndAppManagementAssignmentTarget"
                },
                {
                  "type": [
                    "object",
                    "null"
                  ]
                }
              ],
              "description": "Identifier for deployment to a group or app"
            },
            "@odata.type": {
              "type": "string"
            }
          },
          "description": "The type for deployment of groups or apps."
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.targetedManagedAppPolicyAssignment"
    },
    "microsoft.graph.windowsInformationProtection": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.managedAppPolicy"
        },
        {
          "title": "windowsInformationProtection",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "azureRightsManagementServicesAllowed": {
              "type": "boolean",
              "description": "Specifies whether to allow Azure RMS encryption for WIP"
            },
            "dataRecoveryCertificate": {
              "anyOf": [
                {
                  "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionDataRecoveryCertificate"
                },
                {
                  "type": [
                    "object",
                    "null"
                  ]
                }
              ],
              "description": "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)"
            },
            "enforcementLevel": {
              "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionEnforcementLevel"
            },
            "enterpriseDomain": {
              "type": [
                "string",
                "null"
              ],
              "description": "Primary enterprise domain"
            },
            "enterpriseInternalProxyServers": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionResourceCollection"
              },
              "description": "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"
            },
            "enterpriseIPRanges": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionIPRangeCollection"
              },
              "description": "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"
            },
            "enterpriseIPRangesAreAuthoritative": {
              "type": "boolean",
              "description": "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"
            },
            "enterpriseNetworkDomainNames": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionResourceCollection"
              },
              "description": "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"
            },
            "enterpriseProtectedDomainNames": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionResourceCollection"
              },
              "description": "List of enterprise domains to be protected"
            },
            "enterpriseProxiedDomains": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionProxiedDomainCollection"
              },
              "description": "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"
            },
            "enterpriseProxyServers": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionResourceCollection"
              },
              "description": "This is a list of proxy servers. Any server not on this list is considered non-enterprise"
            },
            "enterpriseProxyServersAreAuthoritative": {
              "type": "boolean",
              "description": "Boolean value that tells the client to accept the configured list of proxies and not try to detect other work proxies. Default is false"
            },
            "exemptApps": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionApp"
              },
              "description": "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."
            },
            "iconsVisible": {
              "type": "boolean",
              "description": "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"
            },
            "indexingEncryptedStoresOrItemsBlocked": {
              "type": "boolean",
              "description": "This switch is for the Windows Search Indexer, to allow or disallow indexing of items"
            },
            "isAssigned": {
              "type": "boolean",
              "description": "Indicates if the policy is deployed to any inclusion groups or not."
            },
            "neutralDomainResources": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionResourceCollection"
              },
              "description": "List of domain names that can used for work or personal resource"
            },
            "protectedApps": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionApp"
              },
              "description": "Protected applications can access enterprise data and the data handled by those applications are protected with encryption"
            },
            "protectionUnderLockConfigRequired": {
              "type": "boolean",
              "description": "Specifies whether the protection under lock feature (also known as encrypt under pin) should be configured"
            },
            "revokeOnUnenrollDisabled": {
              "type": "boolean",
              "description": "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."
            },
            "rightsManagementServicesTemplateId": {
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
              "type": [
                "string",
                "null"
              ],
              "description": "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",
              "format": "uuid"
            },
            "smbAutoEncryptedFileExtensions": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionResourceCollection"
              },
              "description": "Specifies a list of file extensions, so that files with these extensions are encrypted when copying from an SMB share within the corporate boundary"
            },
            "assignments": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.targetedManagedAppPolicyAssignment"
              },
              "description": "Navigation property to list of security groups targeted for policy.",
              "x-ms-navigationProperty": true
            },
            "exemptAppLockerFiles": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionAppLockerFile"
              },
              "description": "Another way to input exempt apps through xml files",
              "x-ms-navigationProperty": true
            },
            "protectedAppLockerFiles": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.windowsInformationProtectionAppLockerFile"
              },
              "description": "Another way to input protected apps through xml files",
              "x-ms-navigationProperty": true
            },
            "@odata.type": {
              "type": "string",
              "default": "#microsoft.graph.windowsInformationProtection"
            }
          },
          "description": "Policy for Windows information protection to configure detailed management settings"
        }
      ]
    },
    "microsoft.graph.windowsInformationProtectionApp": {
      "title": "windowsInformationProtectionApp",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "denied": {
          "type": "boolean",
          "description": "If true, app is denied protection or exemption."
        },
        "description": {
          "type": [
            "string",
            "null"
          ],
          "description": "The app's description."
        },
        "displayName": {
          "type": "string",
          "description": "App display name."
        },
        "productName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The product name."
        },
        "publisherName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The publisher name"
        },
        "@odata.type": {
          "type": "string"
        }
      },
      "description": "App for Windows information protection"
    },
    "microsoft.graph.windowsInformationProtectionAppLockerFile": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "windowsInformationProtectionAppLockerFile",
          "required": [
            "@odata.type"
          ],
          "type": "object",
          "properties": {
            "displayName": {
              "type": [
                "string",
                "null"
              ],
              "description": "The friendly name"
            },
            "file": {
              "type": [
                "string",
                "null"
              ],
              "description": "File as a byte array",
              "format": "base64url"
            },
            "fileHash": {
              "type": [
                "string",
                "null"
              ],
              "description": "SHA256 hash of the file"
            },
            "version": {
              "type": [
                "string",
                "null"
              ],
              "description": "Version of the entity."
            },
            "@odata.type": {
              "type": "string"
            }
          },
          "description": "Windows Information Protection AppLocker File"
        }
      ],
      "x-ms-discriminator-value": "#microsoft.graph.windowsInformationProtectionAppLockerFile"
    },
    "microsoft.graph.windowsInformationProtectionDataRecoveryCertificate": {
      "title": "windowsInformationProtectionDataRecoveryCertificate",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "certificate": {
          "type": [
            "string",
            "null"
          ],
          "description": "Data recovery Certificate",
          "format": "base64url"
        },
        "description": {
          "type": [
            "string",
            "null"
          ],
          "description": "Data recovery Certificate description"
        },
        "expirationDateTime": {
          "pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
          "type": "string",
          "description": "Data recovery Certificate expiration datetime",
          "format": "date-time"
        },
        "subjectName": {
          "type": [
            "string",
            "null"
          ],
          "description": "Data recovery Certificate subject name"
        },
        "@odata.type": {
          "type": "string"
        }
      },
      "description": "Windows Information Protection DataRecoveryCertificate"
    },
    "microsoft.graph.windowsInformationProtectionEnforcementLevel": {
      "title": "windowsInformationProtectionEnforcementLevel",
      "enum": [
        "noProtection",
        "encryptAndAuditOnly",
        "encryptAuditAndPrompt",
        "encryptAuditAndBlock"
      ],
      "type": "string",
      "description": "Possible values for WIP Protection enforcement levels",
      "x-ms-enum": {
        "name": "windowsInformationProtectionEnforcementLevel",
        "modelAsString": false,
        "values": [
          {
            "value": "noProtection",
            "description": "No protection enforcement",
            "name": "noProtection"
          },
          {
            "value": "encryptAndAuditOnly",
            "description": "Encrypt and Audit only",
            "name": "encryptAndAuditOnly"
          },
          {
            "value": "encryptAuditAndPrompt",
            "description": "Encrypt, Audit and Prompt",
            "name": "encryptAuditAndPrompt"
          },
          {
            "value": "encryptAuditAndBlock",
            "description": "Encrypt, Audit and Block",
            "name": "encryptAuditAndBlock"
          }
        ]
      }
    },
    "microsoft.graph.windowsInformationProtectionIPRangeCollection": {
      "title": "windowsInformationProtectionIPRangeCollection",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Display name"
        },
        "ranges": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.ipRange"
          },
          "description": "Collection of ip ranges"
        },
        "@odata.type": {
          "type": "string"
        }
      },
      "description": "Windows Information Protection IP Range Collection"
    },
    "microsoft.graph.windowsInformationProtectionPinCharacterRequirements": {
      "title": "windowsInformationProtectionPinCharacterRequirements",
      "enum": [
        "notAllow",
        "requireAtLeastOne",
        "allow"
      ],
      "type": "string",
      "description": "Pin Character Requirements",
      "x-ms-enum": {
        "name": "windowsInformationProtectionPinCharacterRequirements",
        "modelAsString": false,
        "values": [
          {
            "value": "notAllow",
            "description": "Not allow",
            "name": "notAllow"
          },
          {
            "value": "requireAtLeastOne",
            "description": "Require atleast one",
            "name": "requireAtLeastOne"
          },
          {
            "value": "allow",
            "description": "Allow any number",
            "name": "allow"
          }
        ]
      }
    },
    "microsoft.graph.windowsInformationProtectionProxiedDomainCollection": {
      "title": "windowsInformationProtectionProxiedDomainCollection",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Display name"
        },
        "proxiedDomains": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.proxiedDomain"
          },
          "description": "Collection of proxied domains"
        },
        "@odata.type": {
          "type": "string"
        }
      },
      "description": "Windows Information Protection Proxied Domain Collection"
    },
    "microsoft.graph.windowsInformationProtectionResourceCollection": {
      "title": "windowsInformationProtectionResourceCollection",
      "required": [
        "@odata.type"
      ],
      "type": "object",
      "properties": {
        "displayName": {
          "type": "string",
          "description": "Display name"
        },
        "resources": {
          "type": "array",
          "items": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": "Collection of resources"
        },
        "@odata.type": {
          "type": "string"
        }
      },
      "description": "Windows Information Protection Resource Collection"
    }
  }
}