{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/microsoft.graph.messageRulePredicates",
  "title": "messageRulePredicates",
  "required": [
    "@odata.type"
  ],
  "type": "object",
  "properties": {
    "bodyContains": {
      "type": "array",
      "items": {
        "type": "string",
        "nullable": true
      },
      "description": "Represents the strings that should appear in the body of an incoming message in order for the condition or exception to apply."
    },
    "bodyOrSubjectContains": {
      "type": "array",
      "items": {
        "type": "string",
        "nullable": true
      },
      "description": "Represents the strings that should appear in the body or subject of an incoming message in order for the condition or exception to apply."
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string",
        "nullable": true
      },
      "description": "Represents the categories that an incoming message should be labeled with in order for the condition or exception to apply."
    },
    "fromAddresses": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/microsoft.graph.recipient"
      },
      "description": "Represents the specific sender email addresses of an incoming message in order for the condition or exception to apply."
    },
    "hasAttachments": {
      "type": "boolean",
      "description": "Indicates whether an incoming message must have attachments in order for the condition or exception to apply.",
      "nullable": true
    },
    "headerContains": {
      "type": "array",
      "items": {
        "type": "string",
        "nullable": true
      },
      "description": "Represents the strings that appear in the headers of an incoming message in order for the condition or exception to apply."
    },
    "importance": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/microsoft.graph.importance"
        },
        {
          "type": "object",
          "nullable": true
        }
      ],
      "description": "The importance that is stamped on an incoming message in order for the condition or exception to apply: low, normal, high."
    },
    "isApprovalRequest": {
      "type": "boolean",
      "description": "Indicates whether an incoming message must be an approval request in order for the condition or exception to apply.",
      "nullable": true
    },
    "isAutomaticForward": {
      "type": "boolean",
      "description": "Indicates whether an incoming message must be automatically forwarded in order for the condition or exception to apply.",
      "nullable": true
    },
    "isAutomaticReply": {
      "type": "boolean",
      "description": "Indicates whether an incoming message must be an auto reply in order for the condition or exception to apply.",
      "nullable": true
    },
    "isEncrypted": {
      "type": "boolean",
      "description": "Indicates whether an incoming message must be encrypted in order for the condition or exception to apply.",
      "nullable": true
    },
    "isMeetingRequest": {
      "type": "boolean",
      "description": "Indicates whether an incoming message must be a meeting request in order for the condition or exception to apply.",
      "nullable": true
    },
    "isMeetingResponse": {
      "type": "boolean",
      "description": "Indicates whether an incoming message must be a meeting response in order for the condition or exception to apply.",
      "nullable": true
    },
    "isNonDeliveryReport": {
      "type": "boolean",
      "description": "Indicates whether an incoming message must be a non-delivery report in order for the condition or exception to apply.",
      "nullable": true
    },
    "isPermissionControlled": {
      "type": "boolean",
      "description": "Indicates whether an incoming message must be permission controlled (RMS-protected) in order for the condition or exception to apply.",
      "nullable": true
    },
    "isReadReceipt": {
      "type": "boolean",
      "description": "Indicates whether an incoming message must be a read receipt in order for the condition or exception to apply.",
      "nullable": true
    },
    "isSigned": {
      "type": "boolean",
      "description": "Indicates whether an incoming message must be S/MIME-signed in order for the condition or exception to apply.",
      "nullable": true
    },
    "isVoicemail": {
      "type": "boolean",
      "description": "Indicates whether an incoming message must be a voice mail in order for the condition or exception to apply.",
      "nullable": true
    },
    "messageActionFlag": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/microsoft.graph.messageActionFlag"
        },
        {
          "type": "object",
          "nullable": true
        }
      ],
      "description": "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."
    },
    "notSentToMe": {
      "type": "boolean",
      "description": "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.",
      "nullable": true
    },
    "recipientContains": {
      "type": "array",
      "items": {
        "type": "string",
        "nullable": true
      },
      "description": "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."
    },
    "senderContains": {
      "type": "array",
      "items": {
        "type": "string",
        "nullable": true
      },
      "description": "Represents the strings that appear in the from property of an incoming message in order for the condition or exception to apply."
    },
    "sensitivity": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/microsoft.graph.sensitivity"
        },
        {
          "type": "object",
          "nullable": true
        }
      ],
      "description": "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."
    },
    "sentCcMe": {
      "type": "boolean",
      "description": "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.",
      "nullable": true
    },
    "sentOnlyToMe": {
      "type": "boolean",
      "description": "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.",
      "nullable": true
    },
    "sentToAddresses": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/microsoft.graph.recipient"
      },
      "description": "Represents the email addresses that an incoming message must have been sent to in order for the condition or exception to apply."
    },
    "sentToMe": {
      "type": "boolean",
      "description": "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.",
      "nullable": true
    },
    "sentToOrCcMe": {
      "type": "boolean",
      "description": "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.",
      "nullable": true
    },
    "subjectContains": {
      "type": "array",
      "items": {
        "type": "string",
        "nullable": true
      },
      "description": "Represents the strings that appear in the subject of an incoming message in order for the condition or exception to apply."
    },
    "withinSizeRange": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/microsoft.graph.sizeRange"
        },
        {
          "type": "object",
          "nullable": true
        }
      ],
      "description": "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."
    },
    "@odata.type": {
      "type": "string"
    }
  }
}