{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/azure-ad/json-schema/azure-ad-microsoft-graph-access-review-stage-schema.json",
  "title": "microsoft.graph.accessReviewStage",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/azure-ad-identitygovernance-accessreviewset-api-openapi.yml#/components/schemas/microsoft.graph.accessReviewStage",
  "allOf": [
    {
      "$ref": "#/$defs/microsoft.graph.entity"
    },
    {
      "title": "accessReviewStage",
      "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 date and time in ISO 8601 format and UTC time when the review stage is scheduled to end. This property is the cumulative total of the durationInDays for all stages. Read-only.",
          "format": "date-time"
        },
        "fallbackReviewers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.accessReviewReviewerScope"
          },
          "description": "This collection of reviewer scopes is used to define the list of fallback reviewers. These fallback reviewers are 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 doesn't exist, or manager is specified as reviewer but a user's manager doesn't exist."
        },
        "reviewers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.accessReviewReviewerScope"
          },
          "description": "This collection of access review scopes is used to define who the reviewers are. For examples of options for assigning reviewers, see Assign reviewers to your access review definition using the Microsoft Graph API."
        },
        "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": "The date and time in ISO 8601 format and UTC time when the review stage is scheduled to start. Read-only.",
          "format": "date-time"
        },
        "status": {
          "type": [
            "string",
            "null"
          ],
          "description": "Specifies the status of an accessReviewStage. Possible values: Initializing, NotStarted, Starting, InProgress, Completing, Completed, AutoReviewing, and AutoReviewed. Supports $orderby, and $filter (eq only). Read-only."
        },
        "decisions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/microsoft.graph.accessReviewInstanceDecisionItem"
          },
          "description": "Each user reviewed in an accessReviewStage has a decision item representing if they were approved, denied, or not yet reviewed.",
          "x-ms-navigationProperty": true
        }
      },
      "additionalProperties": {
        "type": "object"
      }
    }
  ],
  "$defs": {
    "microsoft.graph.accessReviewInstanceDecisionItem": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "accessReviewInstanceDecisionItem",
          "type": "object",
          "properties": {
            "accessReviewId": {
              "type": "string",
              "description": "The identifier of the accessReviewInstance parent. Supports $select. Read-only."
            },
            "appliedBy": {
              "$ref": "#/$defs/microsoft.graph.userIdentity"
            },
            "appliedDateTime": {
              "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 timestamp when the approval decision was applied.00000000-0000-0000-0000-000000000000 if the assigned reviewer hasn't applied the decision or it was automatically 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.",
              "format": "date-time"
            },
            "applyResult": {
              "type": [
                "string",
                "null"
              ],
              "description": "The result of applying the decision. Possible values: New, AppliedSuccessfully, AppliedWithUnknownFailure, AppliedSuccessfullyButObjectNotFound and ApplyNotSupported. Supports $select, $orderby, and $filter (eq only). Read-only."
            },
            "decision": {
              "type": [
                "string",
                "null"
              ],
              "description": "Result of the review. Possible values: Approve, Deny, NotReviewed, or DontKnow. Supports $select, $orderby, and $filter (eq only)."
            },
            "justification": {
              "type": [
                "string",
                "null"
              ],
              "description": "Justification left by the reviewer when they made the decision."
            },
            "principal": {
              "$ref": "#/$defs/microsoft.graph.identity"
            },
            "principalLink": {
              "type": [
                "string",
                "null"
              ],
              "description": "A link to the principal object. For example, https://graph.microsoft.com/v1.0/users/a6c7aecb-cbfd-4763-87ef-e91b4bd509d9. Read-only."
            },
            "recommendation": {
              "type": [
                "string",
                "null"
              ],
              "description": "A system-generated recommendation for the approval decision based off last interactive sign-in to tenant. The value is Approve if the sign-in is fewer than 30 days after the start of review, Deny if the sign-in is greater than 30 days after, or NoInfoAvailable. Possible values: Approve, Deny, or NoInfoAvailable. Supports $select, $orderby, and $filter (eq only). Read-only."
            },
            "resource": {
              "$ref": "#/$defs/microsoft.graph.accessReviewInstanceDecisionItemResource"
            },
            "resourceLink": {
              "type": [
                "string",
                "null"
              ],
              "description": "A link to the resource. For example, https://graph.microsoft.com/v1.0/servicePrincipals/c86300f3-8695-4320-9f6e-32a2555f5ff8. Supports $select. Read-only."
            },
            "reviewedBy": {
              "$ref": "#/$defs/microsoft.graph.userIdentity"
            },
            "reviewedDateTime": {
              "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 timestamp when the review decision occurred. Supports $select. Read-only.",
              "format": "date-time"
            },
            "insights": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/microsoft.graph.governanceInsight"
              },
              "description": "Insights are recommendations to reviewers on whether to approve or deny a decision. There can be multiple insights associated with an accessReviewInstanceDecisionItem.",
              "x-ms-navigationProperty": true
            }
          },
          "additionalProperties": {
            "type": "object"
          }
        }
      ]
    },
    "microsoft.graph.accessReviewInstanceDecisionItemResource": {
      "title": "accessReviewInstanceDecisionItemResource",
      "type": "object",
      "properties": {
        "displayName": {
          "type": [
            "string",
            "null"
          ],
          "description": "Display name of the resource"
        },
        "id": {
          "type": [
            "string",
            "null"
          ],
          "description": "Identifier of the resource"
        },
        "type": {
          "type": [
            "string",
            "null"
          ],
          "description": "Type of resource. Types include: Group, ServicePrincipal, DirectoryRole, AzureRole, AccessPackageAssignmentPolicy."
        }
      },
      "additionalProperties": {
        "type": "object"
      }
    },
    "microsoft.graph.accessReviewReviewerScope": {
      "title": "accessReviewReviewerScope",
      "type": "object",
      "properties": {
        "query": {
          "type": [
            "string",
            "null"
          ],
          "description": "The query specifying who will be the reviewer."
        },
        "queryRoot": {
          "type": [
            "string",
            "null"
          ],
          "description": "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."
        },
        "queryType": {
          "type": [
            "string",
            "null"
          ],
          "description": "The type of query. Examples include MicrosoftGraph and ARM."
        }
      },
      "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.governanceInsight": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.entity"
        },
        {
          "title": "governanceInsight",
          "type": "object",
          "properties": {
            "insightCreatedDateTime": {
              "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": "Indicates when the insight was created.",
              "format": "date-time"
            }
          },
          "additionalProperties": {
            "type": "object"
          }
        }
      ]
    },
    "microsoft.graph.identity": {
      "title": "identity",
      "type": "object",
      "properties": {
        "displayName": {
          "type": [
            "string",
            "null"
          ],
          "description": "The display name of the identity.For drive items, the display name might not always be available or up to date. For example, if a user changes their display name the API might show the new value in a future response, but the items associated with the user don't show up as changed when using delta."
        },
        "id": {
          "type": [
            "string",
            "null"
          ],
          "description": "Unique identifier for the identity or actor. For example, in the access reviews decisions API, this property might record the id of the principal, that is, the group, user, or application that's subject to review."
        }
      },
      "additionalProperties": {
        "type": "object"
      }
    },
    "microsoft.graph.userIdentity": {
      "allOf": [
        {
          "$ref": "#/$defs/microsoft.graph.identity"
        },
        {
          "title": "userIdentity",
          "type": "object",
          "properties": {
            "ipAddress": {
              "type": [
                "string",
                "null"
              ],
              "description": "Indicates the client IP address associated with the user performing the activity (audit log only)."
            },
            "userPrincipalName": {
              "type": [
                "string",
                "null"
              ],
              "description": "The userPrincipalName attribute of the user."
            }
          },
          "additionalProperties": {
            "type": "object"
          }
        }
      ]
    }
  }
}