{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Group",
  "type": "object",
  "description": "Represents a Microsoft Entra group. Groups can be Microsoft 365 groups, security groups, mail-enabled security groups, or distribution groups.",
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the group (GUID)"
    },
    "displayName": {
      "type": "string",
      "description": "The display name for the group. Required on create."
    },
    "description": {
      "type": "['string', 'null']",
      "description": "An optional description for the group"
    },
    "mailEnabled": {
      "type": "boolean",
      "description": "Specifies whether the group is mail-enabled. Required on create. Set to true for Microsoft 365 groups."
    },
    "mailNickname": {
      "type": "string",
      "description": "The mail alias for the group, unique for Microsoft 365 groups. Required on create."
    },
    "securityEnabled": {
      "type": "boolean",
      "description": "Specifies whether the group is a security group. Required on create. Set to false for Microsoft 365 groups."
    },
    "groupTypes": {
      "type": "array",
      "description": "Specifies the group type. Set to [\"Unified\"] for Microsoft 365 groups. Empty array or [\"DynamicMembership\"] for other types."
    },
    "visibility": {
      "type": "['string', 'null']",
      "description": "Specifies the group's join policy and content visibility for Microsoft 365 groups"
    },
    "membershipRule": {
      "type": "['string', 'null']",
      "description": "The rule that determines members for this group if the group is a dynamic group. Example: user.department -eq \"Marketing\""
    },
    "membershipRuleProcessingState": {
      "type": "['string', 'null']",
      "description": "Indicates whether the dynamic membership processing is on or paused. Possible values are On or Paused."
    },
    "mail": {
      "type": "['string', 'null']",
      "description": "The SMTP address for the group"
    },
    "proxyAddresses": {
      "type": "array",
      "description": "Email addresses for the group that direct to the same inbox"
    },
    "isAssignableToRole": {
      "type": "['boolean', 'null']",
      "description": "Indicates whether this group can be assigned to a Microsoft Entra role. Can only be set at group creation time."
    },
    "onPremisesSyncEnabled": {
      "type": "['boolean', 'null']",
      "description": "true if this group is synced from an on-premises directory"
    },
    "createdDateTime": {
      "type": "string",
      "description": "Timestamp of when the group was created"
    },
    "renewedDateTime": {
      "type": "['string', 'null']",
      "description": "Timestamp of when the group was last renewed (activity that extends expiration)"
    },
    "members": {
      "type": "array",
      "description": "Direct members of this group. Returned only with $expand."
    },
    "owners": {
      "type": "array",
      "description": "Owners of the group. Returned only with $expand."
    }
  }
}