{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-azure-site-recovery/json-schema/microsoft-azure-site-recovery-recovery-plan-collection-schema.json",
  "title": "RecoveryPlanCollection",
  "description": "Recovery plan collection details.",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-azure-site-recovery-replicationrecoveryplans-api-openapi.yml#/components/schemas/RecoveryPlanCollection",
  "type": "object",
  "properties": {
    "value": {
      "type": "array",
      "description": "The RecoveryPlan items on this page",
      "items": {
        "$ref": "#/$defs/RecoveryPlan"
      }
    },
    "nextLink": {
      "type": "string",
      "format": "uri",
      "description": "The link to the next page of items"
    }
  },
  "required": [
    "value"
  ],
  "$defs": {
    "CurrentScenarioDetails": {
      "type": "object",
      "description": "Current scenario details of the protected entity.",
      "properties": {
        "scenarioName": {
          "type": "string",
          "description": "Scenario name."
        },
        "jobId": {
          "type": "string",
          "description": "ARM Id of the job being executed."
        },
        "startTime": {
          "type": "string",
          "format": "date-time",
          "description": "Start time of the workflow."
        }
      }
    },
    "PossibleOperationsDirections": {
      "type": "string",
      "description": "The failover direction.",
      "enum": [
        "PrimaryToRecovery",
        "RecoveryToPrimary"
      ],
      "x-ms-enum": {
        "name": "PossibleOperationsDirections",
        "modelAsString": true,
        "values": [
          {
            "name": "PrimaryToRecovery",
            "value": "PrimaryToRecovery",
            "description": "PrimaryToRecovery"
          },
          {
            "name": "RecoveryToPrimary",
            "value": "RecoveryToPrimary",
            "description": "RecoveryToPrimary"
          }
        ]
      }
    },
    "ProxyResource": {
      "type": "object",
      "title": "Proxy Resource",
      "description": "The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location",
      "allOf": [
        {
          "$ref": "#/$defs/Resource"
        }
      ]
    },
    "RecoveryPlan": {
      "type": "object",
      "description": "Recovery plan details.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/RecoveryPlanProperties",
          "description": "The custom details."
        },
        "location": {
          "type": "string",
          "description": "Resource Location"
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/ProxyResource"
        }
      ]
    },
    "RecoveryPlanAction": {
      "type": "object",
      "description": "Recovery plan action details.",
      "properties": {
        "actionName": {
          "type": "string",
          "description": "The action name."
        },
        "failoverTypes": {
          "type": "array",
          "description": "The list of failover types.",
          "items": {
            "$ref": "#/$defs/ReplicationProtectedItemOperation"
          }
        },
        "failoverDirections": {
          "type": "array",
          "description": "The list of failover directions.",
          "items": {
            "$ref": "#/$defs/PossibleOperationsDirections"
          }
        },
        "customDetails": {
          "$ref": "#/$defs/RecoveryPlanActionDetails",
          "description": "The custom details."
        }
      },
      "required": [
        "actionName",
        "failoverTypes",
        "failoverDirections",
        "customDetails"
      ]
    },
    "RecoveryPlanActionDetails": {
      "type": "object",
      "description": "Recovery plan action custom details.",
      "properties": {
        "instanceType": {
          "type": "string",
          "description": "Gets the type of action details (see RecoveryPlanActionDetailsTypes enum for possible values)."
        }
      },
      "required": [
        "instanceType"
      ]
    },
    "RecoveryPlanGroup": {
      "type": "object",
      "description": "Recovery plan group details.",
      "properties": {
        "groupType": {
          "$ref": "#/$defs/RecoveryPlanGroupType",
          "description": "The group type."
        },
        "replicationProtectedItems": {
          "type": "array",
          "description": "The list of protected items.",
          "items": {
            "$ref": "#/$defs/RecoveryPlanProtectedItem"
          }
        },
        "startGroupActions": {
          "type": "array",
          "description": "The start group actions.",
          "items": {
            "$ref": "#/$defs/RecoveryPlanAction"
          }
        },
        "endGroupActions": {
          "type": "array",
          "description": "The end group actions.",
          "items": {
            "$ref": "#/$defs/RecoveryPlanAction"
          }
        }
      },
      "required": [
        "groupType"
      ]
    },
    "RecoveryPlanGroupType": {
      "type": "string",
      "description": "The group type.",
      "enum": [
        "Shutdown",
        "Boot",
        "Failover"
      ],
      "x-ms-enum": {
        "name": "RecoveryPlanGroupType",
        "modelAsString": true,
        "values": [
          {
            "name": "Shutdown",
            "value": "Shutdown",
            "description": "Shutdown"
          },
          {
            "name": "Boot",
            "value": "Boot",
            "description": "Boot"
          },
          {
            "name": "Failover",
            "value": "Failover",
            "description": "Failover"
          }
        ]
      }
    },
    "RecoveryPlanProperties": {
      "type": "object",
      "description": "Recovery plan properties.",
      "properties": {
        "friendlyName": {
          "type": "string",
          "description": "The friendly name."
        },
        "primaryFabricId": {
          "type": "string",
          "description": "The primary fabric Id."
        },
        "primaryFabricFriendlyName": {
          "type": "string",
          "description": "The primary fabric friendly name."
        },
        "recoveryFabricId": {
          "type": "string",
          "description": "The recovery fabric Id."
        },
        "recoveryFabricFriendlyName": {
          "type": "string",
          "description": "The recovery fabric friendly name."
        },
        "failoverDeploymentModel": {
          "type": "string",
          "description": "The failover deployment model."
        },
        "replicationProviders": {
          "type": "array",
          "description": "The list of replication providers.",
          "items": {
            "type": "string"
          }
        },
        "allowedOperations": {
          "type": "array",
          "description": "The list of allowed operations.",
          "items": {
            "type": "string"
          }
        },
        "lastPlannedFailoverTime": {
          "type": "string",
          "format": "date-time",
          "description": "The start time of the last planned failover."
        },
        "lastUnplannedFailoverTime": {
          "type": "string",
          "format": "date-time",
          "description": "The start time of the last unplanned failover."
        },
        "lastTestFailoverTime": {
          "type": "string",
          "format": "date-time",
          "description": "The start time of the last test failover."
        },
        "currentScenario": {
          "$ref": "#/$defs/CurrentScenarioDetails",
          "description": "The current scenario details."
        },
        "currentScenarioStatus": {
          "type": "string",
          "description": "The recovery plan status."
        },
        "currentScenarioStatusDescription": {
          "type": "string",
          "description": "The recovery plan status description."
        },
        "groups": {
          "type": "array",
          "description": "The recovery plan groups.",
          "items": {
            "$ref": "#/$defs/RecoveryPlanGroup"
          }
        },
        "providerSpecificDetails": {
          "type": "array",
          "description": "The provider id and provider specific details.",
          "items": {
            "$ref": "#/$defs/RecoveryPlanProviderSpecificDetails"
          }
        }
      }
    },
    "RecoveryPlanProtectedItem": {
      "type": "object",
      "description": "Recovery plan protected item.",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ARM Id of the recovery plan protected item."
        },
        "virtualMachineId": {
          "type": "string",
          "description": "The virtual machine Id."
        }
      }
    },
    "RecoveryPlanProviderSpecificDetails": {
      "type": "object",
      "description": "Recovery plan provider specific details.",
      "properties": {
        "instanceType": {
          "type": "string",
          "description": "Gets the Instance type."
        }
      },
      "required": [
        "instanceType"
      ]
    },
    "ReplicationProtectedItemOperation": {
      "type": "string",
      "description": "The list of failover types.",
      "enum": [
        "ReverseReplicate",
        "Commit",
        "PlannedFailover",
        "UnplannedFailover",
        "DisableProtection",
        "TestFailover",
        "TestFailoverCleanup",
        "Failback",
        "FinalizeFailback",
        "CancelFailover",
        "ChangePit",
        "RepairReplication",
        "SwitchProtection",
        "CompleteMigration"
      ],
      "x-ms-enum": {
        "name": "ReplicationProtectedItemOperation",
        "modelAsString": true,
        "values": [
          {
            "name": "ReverseReplicate",
            "value": "ReverseReplicate",
            "description": "ReverseReplicate"
          },
          {
            "name": "Commit",
            "value": "Commit",
            "description": "Commit"
          },
          {
            "name": "PlannedFailover",
            "value": "PlannedFailover",
            "description": "PlannedFailover"
          },
          {
            "name": "UnplannedFailover",
            "value": "UnplannedFailover",
            "description": "UnplannedFailover"
          },
          {
            "name": "DisableProtection",
            "value": "DisableProtection",
            "description": "DisableProtection"
          },
          {
            "name": "TestFailover",
            "value": "TestFailover",
            "description": "TestFailover"
          },
          {
            "name": "TestFailoverCleanup",
            "value": "TestFailoverCleanup",
            "description": "TestFailoverCleanup"
          },
          {
            "name": "Failback",
            "value": "Failback",
            "description": "Failback"
          },
          {
            "name": "FinalizeFailback",
            "value": "FinalizeFailback",
            "description": "FinalizeFailback"
          },
          {
            "name": "CancelFailover",
            "value": "CancelFailover",
            "description": "CancelFailover"
          },
          {
            "name": "ChangePit",
            "value": "ChangePit",
            "description": "ChangePit"
          },
          {
            "name": "RepairReplication",
            "value": "RepairReplication",
            "description": "RepairReplication"
          },
          {
            "name": "SwitchProtection",
            "value": "SwitchProtection",
            "description": "SwitchProtection"
          },
          {
            "name": "CompleteMigration",
            "value": "CompleteMigration",
            "description": "CompleteMigration"
          }
        ]
      }
    },
    "Resource": {
      "type": "object",
      "title": "Resource",
      "description": "Common fields that are returned in the response for all Azure Resource Manager resources",
      "properties": {
        "id": {
          "type": "string",
          "format": "arm-id",
          "description": "Fully qualified resource ID for the resource. E.g. \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}\"",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "The name of the resource",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\" or \"Microsoft.Storage/storageAccounts\"",
          "readOnly": true
        },
        "systemData": {
          "$ref": "#/$defs/systemData",
          "description": "Azure Resource Manager metadata containing createdBy and modifiedBy information.",
          "readOnly": true
        }
      },
      "x-ms-azure-resource": true
    }
  }
}