{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/microsoft.graph.accessPackageApprovalStage",
  "title": "accessPackageApprovalStage",
  "required": [
    "@odata.type"
  ],
  "type": "object",
  "properties": {
    "durationBeforeAutomaticDenial": {
      "pattern": "^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$",
      "type": "string",
      "description": "The number of days that a request can be pending a response before it is automatically denied.",
      "format": "duration",
      "nullable": true
    },
    "durationBeforeEscalation": {
      "pattern": "^-?P([0-9]+D)?(T([0-9]+H)?([0-9]+M)?([0-9]+([.][0-9]+)?S)?)?$",
      "type": "string",
      "description": "If escalation is required, the time a request can be pending a response from a primary approver.",
      "format": "duration",
      "nullable": true
    },
    "escalationApprovers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/microsoft.graph.subjectSet"
      },
      "description": "If escalation is enabled and the primary approvers do not respond before the escalation time, the escalationApprovers are the users who will be asked to approve requests."
    },
    "fallbackEscalationApprovers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/microsoft.graph.subjectSet"
      },
      "description": "The subjects, typically users, who are the fallback escalation approvers."
    },
    "fallbackPrimaryApprovers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/microsoft.graph.subjectSet"
      },
      "description": "The subjects, typically users, who are the fallback primary approvers."
    },
    "isApproverJustificationRequired": {
      "type": "boolean",
      "description": "Indicates whether the approver is required to provide a justification for approving a request.",
      "nullable": true
    },
    "isEscalationEnabled": {
      "type": "boolean",
      "description": "If true, then one or more escalationApprovers are configured in this approval stage.",
      "nullable": true
    },
    "primaryApprovers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/microsoft.graph.subjectSet"
      },
      "description": "The subjects, typically users, who will be asked to approve requests. A collection of singleUser, groupMembers, requestorManager, internalSponsors, externalSponsors, or targetUserSponsors."
    },
    "@odata.type": {
      "type": "string"
    }
  },
  "discriminator": {
    "propertyName": "@odata.type",
    "mapping": {
      "#microsoft.graph.accessPackageDynamicApprovalStage": "#/components/schemas/microsoft.graph.accessPackageDynamicApprovalStage"
    }
  }
}