{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/azure-ad/json-schema/azure-ad-microsoft-graph-unified-role-assignment-schedule-instance-schema.json",
  "title": "microsoft.graph.unifiedRoleAssignmentScheduleInstance",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/azure-ad-rolemanagement-rbacapplication-api-openapi.yml#/components/schemas/microsoft.graph.unifiedRoleAssignmentScheduleInstance",
  "allOf": [
    {
      "$ref": "#/$defs/microsoft.graph.unifiedRoleScheduleInstanceBase"
    },
    {
      "title": "unifiedRoleAssignmentScheduleInstance",
      "type": "object",
      "properties": {
        "assignmentType": {
          "type": [
            "string",
            "null"
          ],
          "description": "The type of the assignment that can either be Assigned or Activated. Supports $filter (eq, ne)."
        },
        "endDateTime": {
          "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",
            "null"
          ],
          "description": "The end date of the schedule instance.",
          "format": "date-time"
        },
        "memberType": {
          "type": [
            "string",
            "null"
          ],
          "description": "How the assignment is inherited. It can either be Inherited, Direct, or Group. It can further imply whether the unifiedRoleAssignmentSchedule can be managed by the caller. Supports $filter (eq, ne)."
        },
        "roleAssignmentOriginId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The identifier of the role assignment in Microsoft Entra. Supports $filter (eq, ne)."
        },
        "roleAssignmentScheduleId": {
          "type": [
            "string",
            "null"
          ],
          "description": "The identifier of the unifiedRoleAssignmentSchedule object from which this instance was created. Supports $filter (eq, ne)."
        },
        "startDateTime": {
          "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",
            "null"
          ],
          "description": "When this instance starts.",
          "format": "date-time"
        },
        "activatedUsing": {
          "$ref": "#/$defs/microsoft.graph.unifiedRoleEligibilityScheduleInstance"
        }
      },
      "additionalProperties": {
        "type": "object"
      }
    }
  ],
  "$defs": {
    "microsoft.graph.appScope": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "appScope",
          "type": "object",
          "properties": {
            "displayName": {
              "type": [
                "string",
                "null"
              ],
              "description": "Provides the display name of the app-specific resource represented by the app scope. Read-only."
            },
            "type": {
              "type": [
                "string",
                "null"
              ],
              "description": "Describes the type of app-specific resource represented by the app scope. Read-only."
            }
          },
          "additionalProperties": {
            "type": "object"
          }
        }
      ]
    },
    "microsoft.graph.directoryObject": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "directoryObject",
          "type": "object",
          "properties": {
            "deletedDateTime": {
              "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",
                "null"
              ],
              "description": "Date and time when this object was deleted. Always null when the object hasn't been deleted.",
              "format": "date-time"
            }
          },
          "additionalProperties": {
            "type": "object"
          }
        }
      ]
    },
    "microsoft.graph.entity": {
      "title": "entity",
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The unique identifier for an entity. Read-only."
        }
      },
      "additionalProperties": {
        "type": "object"
      }
    },
    "microsoft.graph.unifiedRoleDefinition": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "unifiedRoleDefinition",
          "type": "object",
          "properties": {
            "description": {
              "type": [
                "string",
                "null"
              ],
              "description": "The description for the unifiedRoleDefinition. Read-only when isBuiltIn is true."
            },
            "displayName": {
              "type": [
                "string",
                "null"
              ],
              "description": "The display name for the unifiedRoleDefinition. Read-only when isBuiltIn is true. Required.  Supports $filter (eq, in)."
            },
            "isBuiltIn": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "Flag indicating whether the role definition is part of the default set included in Microsoft Entra or a custom definition. Read-only. Supports $filter (eq, in)."
            },
            "isEnabled": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "Flag indicating whether the role is enabled for assignment. If false the role is not available for assignment. Read-only when isBuiltIn is true."
            },
            "resourceScopes": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "List of the scopes or permissions the role definition applies to. Currently only / is supported. Read-only when isBuiltIn is true. DO NOT USE. This will be deprecated soon. Attach scope to role assignment."
            },
            "rolePermissions": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.unifiedRolePermission"
              },
              "description": "List of permissions included in the role. Read-only when isBuiltIn is true. Required."
            },
            "templateId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Custom template identifier that can be set when isBuiltIn is false but is read-only when isBuiltIn is true. This identifier is typically used if one needs an identifier to be the same across different directories."
            },
            "version": {
              "type": [
                "string",
                "null"
              ],
              "description": "Indicates version of the role definition. Read-only when isBuiltIn is true."
            },
            "inheritsPermissionsFrom": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.unifiedRoleDefinition"
              },
              "description": "Read-only collection of role definitions that the given role definition inherits from. Only Microsoft Entra built-in roles (isBuiltIn is true) support this attribute. Supports $expand.",
              "x-ms-navigationProperty": true
            }
          },
          "additionalProperties": {
            "type": "object"
          }
        }
      ]
    },
    "microsoft.graph.unifiedRoleEligibilityScheduleInstance": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.unifiedRoleScheduleInstanceBase"
        },
        {
          "title": "unifiedRoleEligibilityScheduleInstance",
          "type": "object",
          "properties": {
            "endDateTime": {
              "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",
                "null"
              ],
              "description": "The end date of the schedule instance.",
              "format": "date-time"
            },
            "memberType": {
              "type": [
                "string",
                "null"
              ],
              "description": "How the role eligibility is inherited. It can either be Inherited, Direct, or Group. It can further imply whether the unifiedRoleEligibilitySchedule can be managed by the caller. Supports $filter (eq, ne)."
            },
            "roleEligibilityScheduleId": {
              "type": [
                "string",
                "null"
              ],
              "description": "The identifier of the unifiedRoleEligibilitySchedule object from which this instance was created. Supports $filter (eq, ne)."
            },
            "startDateTime": {
              "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",
                "null"
              ],
              "description": "When this instance starts.",
              "format": "date-time"
            }
          },
          "additionalProperties": {
            "type": "object"
          }
        }
      ]
    },
    "microsoft.graph.unifiedRolePermission": {
      "title": "unifiedRolePermission",
      "type": "object",
      "properties": {
        "allowedResourceActions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of tasks that can be performed on a resource. Required."
        },
        "condition": {
          "type": [
            "string",
            "null"
          ],
          "description": "Optional constraints that must be met for the permission to be effective. Not supported for custom roles."
        },
        "excludedResourceActions": {
          "type": "array",
          "items": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": "Set of tasks that may not be performed on a resource. Not yet supported."
        }
      },
      "additionalProperties": {
        "type": "object"
      }
    },
    "microsoft.graph.unifiedRoleScheduleInstanceBase": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "unifiedRoleScheduleInstanceBase",
          "type": "object",
          "properties": {
            "appScopeId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Identifier of the app-specific scope when the assignment or role eligibility is scoped to an app. The scope of an assignment or role eligibility determines the set of resources for which the principal has been granted access. App scopes are scopes that are defined and understood by this application only. Use / for tenant-wide app scopes. Use directoryScopeId to limit the scope to particular directory objects, for example, administrative units."
            },
            "directoryScopeId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Identifier of the directory object representing the scope of the assignment or role eligibility. The scope of an assignment or role eligibility 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. Use appScopeId to limit the scope to an application only."
            },
            "principalId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Identifier of the principal that has been granted the role assignment or that's eligible for a role."
            },
            "roleDefinitionId": {
              "type": [
                "string",
                "null"
              ],
              "description": "Identifier of the unifiedRoleDefinition object that is being assigned to the principal or that the principal is eligible for."
            },
            "appScope": {
              "$ref": "#/$defs/microsoft.graph.appScope"
            },
            "directoryScope": {
              "$ref": "#/$defs/microsoft.graph.directoryObject"
            },
            "principal": {
              "$ref": "#/$defs/microsoft.graph.directoryObject"
            },
            "roleDefinition": {
              "$ref": "#/$defs/microsoft.graph.unifiedRoleDefinition"
            }
          },
          "additionalProperties": {
            "type": "object"
          }
        }
      ]
    }
  }
}