{
  "description": "Generator information:\n- Generated from: /dataprotection/resource-manager/Microsoft.DataProtection/stable/2023-11-01/dataprotection.json\n- ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "properties": {
        "azureName": {
          "description": "AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it\ndoesn't have to be.",
          "type": "string"
        },
        "operatorSpec": {
          "description": "OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not\npassed directly to Azure",
          "properties": {
            "configMapExpressions": {
              "description": "ConfigMapExpressions: configures where to place operator written dynamic ConfigMaps (created with CEL expressions).",
              "items": {
                "description": "DestinationExpression is a CEL expression and a destination to store the result in. The destination may\nbe a secret or a configmap. The value of the expression is stored at the specified location in\nthe destination.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the ConfigMap or Secret being written to. If the CEL expression in Value returns a string\nthis is required to identify what key to write to. If the CEL expression in Value returns a map[string]string\nKey must not be set, instead the keys written will be determined dynamically based on the keys of the resulting\nmap[string]string.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes configmap or secret to write to.\nThe configmap or secret will be created in the same namespace as the resource.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value is a CEL expression. The CEL expression may return a string or a map[string]string. For more information\non CEL in ASO see https://azure.github.io/azure-service-operator/guide/expressions/",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "secretExpressions": {
              "description": "SecretExpressions: configures where to place operator written dynamic secrets (created with CEL expressions).",
              "items": {
                "description": "DestinationExpression is a CEL expression and a destination to store the result in. The destination may\nbe a secret or a configmap. The value of the expression is stored at the specified location in\nthe destination.",
                "properties": {
                  "key": {
                    "description": "Key is the key in the ConfigMap or Secret being written to. If the CEL expression in Value returns a string\nthis is required to identify what key to write to. If the CEL expression in Value returns a map[string]string\nKey must not be set, instead the keys written will be determined dynamically based on the keys of the resulting\nmap[string]string.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Kubernetes configmap or secret to write to.\nThe configmap or secret will be created in the same namespace as the resource.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Value is a CEL expression. The CEL expression may return a string or a map[string]string. For more information\non CEL in ASO see https://azure.github.io/azure-service-operator/guide/expressions/",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "owner": {
          "description": "Owner: The owner of the resource. The owner controls where the resource goes when it is deployed. The owner also\ncontrols the resources lifecycle. When the owner is deleted the resource will also be deleted. Owner is expected to be a\nreference to a dataprotection.azure.com/BackupVault resource",
          "properties": {
            "armId": {
              "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
              "type": "string"
            },
            "name": {
              "description": "This is the name of the Kubernetes resource to reference.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "properties": {
          "description": "Properties: BackupInstanceResource properties",
          "properties": {
            "dataSourceInfo": {
              "description": "DataSourceInfo: Gets or sets the data source information.",
              "properties": {
                "datasourceType": {
                  "description": "DatasourceType: DatasourceType of the resource.",
                  "type": "string"
                },
                "objectType": {
                  "description": "ObjectType: Type of Datasource object, used to initialize the right inherited type",
                  "type": "string"
                },
                "resourceLocation": {
                  "description": "ResourceLocation: Location of datasource.",
                  "type": "string"
                },
                "resourceName": {
                  "description": "ResourceName: Unique identifier of the resource in the context of parent.",
                  "type": "string"
                },
                "resourceProperties": {
                  "description": "ResourceProperties: Properties specific to data source",
                  "properties": {
                    "defaultResourceProperties": {
                      "description": "DefaultResourceProperties: Mutually exclusive with all other properties",
                      "properties": {
                        "objectType": {
                          "description": "ObjectType: Type of the specific object - used for deserializing",
                          "enum": [
                            "DefaultResourceProperties"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "objectType"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "resourceReference": {
                  "description": "ResourceReference: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will\nbe the ID created by backup service via Fabric/Vault.",
                  "properties": {
                    "armId": {
                      "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                      "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                      "type": "string"
                    },
                    "group": {
                      "description": "Group is the Kubernetes group of the resource.",
                      "type": "string"
                    },
                    "kind": {
                      "description": "Kind is the Kubernetes kind of the resource.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the Kubernetes name of the resource.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "resourceType": {
                  "description": "ResourceType: Resource Type of Datasource.",
                  "type": "string"
                },
                "resourceUri": {
                  "description": "ResourceUri: Uri of the resource.",
                  "type": "string"
                }
              },
              "required": [
                "resourceReference"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "dataSourceSetInfo": {
              "description": "DataSourceSetInfo: Gets or sets the data source set information.",
              "properties": {
                "datasourceType": {
                  "description": "DatasourceType: DatasourceType of the resource.",
                  "type": "string"
                },
                "objectType": {
                  "description": "ObjectType: Type of Datasource object, used to initialize the right inherited type",
                  "type": "string"
                },
                "resourceLocation": {
                  "description": "ResourceLocation: Location of datasource.",
                  "type": "string"
                },
                "resourceName": {
                  "description": "ResourceName: Unique identifier of the resource in the context of parent.",
                  "type": "string"
                },
                "resourceProperties": {
                  "description": "ResourceProperties: Properties specific to data source set",
                  "properties": {
                    "defaultResourceProperties": {
                      "description": "DefaultResourceProperties: Mutually exclusive with all other properties",
                      "properties": {
                        "objectType": {
                          "description": "ObjectType: Type of the specific object - used for deserializing",
                          "enum": [
                            "DefaultResourceProperties"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "objectType"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "resourceReference": {
                  "description": "ResourceReference: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will\nbe the ID created by backup service via Fabric/Vault.",
                  "properties": {
                    "armId": {
                      "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                      "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                      "type": "string"
                    },
                    "group": {
                      "description": "Group is the Kubernetes group of the resource.",
                      "type": "string"
                    },
                    "kind": {
                      "description": "Kind is the Kubernetes kind of the resource.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the Kubernetes name of the resource.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "resourceType": {
                  "description": "ResourceType: Resource Type of Datasource.",
                  "type": "string"
                },
                "resourceUri": {
                  "description": "ResourceUri: Uri of the resource.",
                  "type": "string"
                }
              },
              "required": [
                "resourceReference"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "datasourceAuthCredentials": {
              "description": "DatasourceAuthCredentials: Credentials to use to authenticate with data source provider.",
              "properties": {
                "secretStoreBasedAuthCredentials": {
                  "description": "SecretStoreBasedAuthCredentials: Mutually exclusive with all other properties",
                  "properties": {
                    "objectType": {
                      "description": "ObjectType: Type of the specific object - used for deserializing",
                      "enum": [
                        "SecretStoreBasedAuthCredentials"
                      ],
                      "type": "string"
                    },
                    "secretStoreResource": {
                      "description": "SecretStoreResource: Secret store resource",
                      "properties": {
                        "secretStoreType": {
                          "description": "SecretStoreType: Gets or sets the type of secret store",
                          "enum": [
                            "AzureKeyVault",
                            "Invalid"
                          ],
                          "type": "string"
                        },
                        "uri": {
                          "description": "Uri: Uri to get to the resource",
                          "type": "string"
                        },
                        "value": {
                          "description": "Value: Gets or sets value stored in secret store resource",
                          "type": "string"
                        }
                      },
                      "required": [
                        "secretStoreType"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "objectType"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "friendlyName": {
              "description": "FriendlyName: Gets or sets the Backup Instance friendly name.",
              "type": "string"
            },
            "identityDetails": {
              "description": "IdentityDetails: Contains information of the Identity Details for the BI.\nIf it is null, default will be considered as System Assigned.",
              "properties": {
                "useSystemAssignedIdentity": {
                  "description": "UseSystemAssignedIdentity: Specifies if the BI is protected by System Identity.",
                  "type": "boolean"
                },
                "userAssignedIdentityArmUrl": {
                  "description": "UserAssignedIdentityArmUrl: ARM URL for User Assigned Identity.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "objectType": {
              "type": "string"
            },
            "policyInfo": {
              "description": "PolicyInfo: Gets or sets the policy information.",
              "properties": {
                "policyParameters": {
                  "description": "PolicyParameters: Policy parameters for the backup instance",
                  "properties": {
                    "backupDatasourceParametersList": {
                      "description": "BackupDatasourceParametersList: Gets or sets the Backup Data Source Parameters",
                      "items": {
                        "properties": {
                          "blobBackupDatasourceParameters": {
                            "description": "Blob: Mutually exclusive with all other properties",
                            "properties": {
                              "containersList": {
                                "description": "ContainersList: List of containers to be backed up during configuration of backup of blobs",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "objectType": {
                                "description": "ObjectType: Type of the specific object - used for deserializing",
                                "enum": [
                                  "BlobBackupDatasourceParameters"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "containersList",
                              "objectType"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "kubernetesClusterBackupDatasourceParameters": {
                            "description": "KubernetesCluster: Mutually exclusive with all other properties",
                            "properties": {
                              "backupHookReferences": {
                                "description": "BackupHookReferences: Gets or sets the backup hook references. This property sets the hook reference to be executed\nduring backup.",
                                "items": {
                                  "description": "Class to refer resources which contains namespace and name",
                                  "properties": {
                                    "name": {
                                      "description": "Name: Name of the resource",
                                      "type": "string"
                                    },
                                    "namespace": {
                                      "description": "Namespace: Namespace in which the resource exists",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object",
                                  "additionalProperties": false
                                },
                                "type": "array"
                              },
                              "excludedNamespaces": {
                                "description": "ExcludedNamespaces: Gets or sets the exclude namespaces property. This property sets the namespaces to be excluded\nduring backup.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "excludedResourceTypes": {
                                "description": "ExcludedResourceTypes: Gets or sets the exclude resource types property. This property sets the resource types to be\nexcluded during backup.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "includeClusterScopeResources": {
                                "description": "IncludeClusterScopeResources: Gets or sets the include cluster resources property. This property if enabled will include\ncluster scope resources during backup.",
                                "type": "boolean"
                              },
                              "includedNamespaces": {
                                "description": "IncludedNamespaces: Gets or sets the include namespaces property. This property sets the namespaces to be included\nduring backup.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "includedResourceTypes": {
                                "description": "IncludedResourceTypes: Gets or sets the include resource types property. This property sets the resource types to be\nincluded during backup.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "labelSelectors": {
                                "description": "LabelSelectors: Gets or sets the LabelSelectors property. This property sets the resource with such label selectors to\nbe included during backup.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "objectType": {
                                "description": "ObjectType: Type of the specific object - used for deserializing",
                                "enum": [
                                  "KubernetesClusterBackupDatasourceParameters"
                                ],
                                "type": "string"
                              },
                              "snapshotVolumes": {
                                "description": "SnapshotVolumes: Gets or sets the volume snapshot property. This property if enabled will take volume snapshots during\nbackup.",
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "includeClusterScopeResources",
                              "objectType",
                              "snapshotVolumes"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "dataStoreParametersList": {
                      "description": "DataStoreParametersList: Gets or sets the DataStore Parameters",
                      "items": {
                        "properties": {
                          "azureOperationalStoreParameters": {
                            "description": "AzureOperationalStoreParameters: Mutually exclusive with all other properties",
                            "properties": {
                              "dataStoreType": {
                                "description": "DataStoreType: type of datastore; Operational/Vault/Archive",
                                "enum": [
                                  "ArchiveStore",
                                  "OperationalStore",
                                  "VaultStore"
                                ],
                                "type": "string"
                              },
                              "objectType": {
                                "description": "ObjectType: Type of the specific object - used for deserializing",
                                "enum": [
                                  "AzureOperationalStoreParameters"
                                ],
                                "type": "string"
                              },
                              "resourceGroupReference": {
                                "description": "ResourceGroupReference: Gets or sets the Snapshot Resource Group Uri.",
                                "properties": {
                                  "armId": {
                                    "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                                    "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                                    "type": "string"
                                  },
                                  "group": {
                                    "description": "Group is the Kubernetes group of the resource.",
                                    "type": "string"
                                  },
                                  "kind": {
                                    "description": "Kind is the Kubernetes kind of the resource.",
                                    "type": "string"
                                  },
                                  "name": {
                                    "description": "Name is the Kubernetes name of the resource.",
                                    "type": "string"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              }
                            },
                            "required": [
                              "dataStoreType",
                              "objectType"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "policyReference": {
                  "description": "ResourceReference represents a resource reference, either to a Kubernetes resource or directly to an Azure resource via ARMID",
                  "properties": {
                    "armId": {
                      "description": "ARMID is a string of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.\nThe /resourcegroups/{resourceGroupName} bit is optional as some resources are scoped at the subscription level\nARMID is mutually exclusive with Group, Kind, Namespace and Name.",
                      "pattern": "(?i)(^(/subscriptions/([^/]+)(/resourcegroups/([^/]+))?)?/providers/([^/]+)/([^/]+/[^/]+)(/([^/]+/[^/]+))*$|^/subscriptions/([^/]+)(/resourcegroups/([^/]+))?$)",
                      "type": "string"
                    },
                    "group": {
                      "description": "Group is the Kubernetes group of the resource.",
                      "type": "string"
                    },
                    "kind": {
                      "description": "Kind is the Kubernetes kind of the resource.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the Kubernetes name of the resource.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "required": [
                "policyReference"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "validationType": {
              "description": "ValidationType: Specifies the type of validation. In case of DeepValidation, all validations from /validateForBackup API\nwill run again.",
              "enum": [
                "DeepValidation",
                "ShallowValidation"
              ],
              "type": "string"
            }
          },
          "required": [
            "dataSourceInfo",
            "objectType",
            "policyInfo"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags: Proxy Resource tags.",
          "type": "object"
        },
        "additionalProperties": false
      },
      "required": [
        "owner"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "properties": {
        "conditions": {
          "description": "Conditions: The observed state of the resource",
          "items": {
            "description": "Condition defines an extension to status (an observation) of a resource",
            "properties": {
              "lastTransitionTime": {
                "description": "LastTransitionTime is the last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "Message is a human readable message indicating details about the transition. This field may be empty.",
                "type": "string"
              },
              "observedGeneration": {
                "description": "ObservedGeneration is the .metadata.generation that the condition was set based upon. For instance, if\n.metadata.generation is currently 12, but the .status.condition[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.",
                "format": "int64",
                "type": "integer"
              },
              "reason": {
                "description": "Reason for the condition's last transition.\nReasons are upper CamelCase (PascalCase) with no spaces. A reason is always provided, this field will not be empty.",
                "type": "string"
              },
              "severity": {
                "description": "Severity with which to treat failures of this type of condition.\nFor conditions which have positive polarity (Status == True is their normal/healthy state), this will be omitted when Status == True\nFor conditions which have negative polarity (Status == False is their normal/healthy state), this will be omitted when Status == False.\nThis is omitted in all cases when Status == Unknown",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, or Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type of condition.",
                "type": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "reason",
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "id": {
          "description": "Id: Proxy Resource Id represents the complete path to the resource.",
          "type": "string"
        },
        "name": {
          "description": "Name: Proxy Resource name associated with the resource.",
          "type": "string"
        },
        "properties": {
          "description": "Properties: BackupInstanceResource properties",
          "properties": {
            "currentProtectionState": {
              "description": "CurrentProtectionState: Specifies the current protection state of the resource",
              "type": "string"
            },
            "dataSourceInfo": {
              "description": "DataSourceInfo: Gets or sets the data source information.",
              "properties": {
                "datasourceType": {
                  "description": "DatasourceType: DatasourceType of the resource.",
                  "type": "string"
                },
                "objectType": {
                  "description": "ObjectType: Type of Datasource object, used to initialize the right inherited type",
                  "type": "string"
                },
                "resourceID": {
                  "description": "ResourceID: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the\nID created by backup service via Fabric/Vault.",
                  "type": "string"
                },
                "resourceLocation": {
                  "description": "ResourceLocation: Location of datasource.",
                  "type": "string"
                },
                "resourceName": {
                  "description": "ResourceName: Unique identifier of the resource in the context of parent.",
                  "type": "string"
                },
                "resourceProperties": {
                  "description": "ResourceProperties: Properties specific to data source",
                  "properties": {
                    "defaultResourceProperties": {
                      "description": "DefaultResourceProperties: Mutually exclusive with all other properties",
                      "properties": {
                        "objectType": {
                          "description": "ObjectType: Type of the specific object - used for deserializing",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "resourceType": {
                  "description": "ResourceType: Resource Type of Datasource.",
                  "type": "string"
                },
                "resourceUri": {
                  "description": "ResourceUri: Uri of the resource.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "dataSourceSetInfo": {
              "description": "DataSourceSetInfo: Gets or sets the data source set information.",
              "properties": {
                "datasourceType": {
                  "description": "DatasourceType: DatasourceType of the resource.",
                  "type": "string"
                },
                "objectType": {
                  "description": "ObjectType: Type of Datasource object, used to initialize the right inherited type",
                  "type": "string"
                },
                "resourceID": {
                  "description": "ResourceID: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the\nID created by backup service via Fabric/Vault.",
                  "type": "string"
                },
                "resourceLocation": {
                  "description": "ResourceLocation: Location of datasource.",
                  "type": "string"
                },
                "resourceName": {
                  "description": "ResourceName: Unique identifier of the resource in the context of parent.",
                  "type": "string"
                },
                "resourceProperties": {
                  "description": "ResourceProperties: Properties specific to data source set",
                  "properties": {
                    "defaultResourceProperties": {
                      "description": "DefaultResourceProperties: Mutually exclusive with all other properties",
                      "properties": {
                        "objectType": {
                          "description": "ObjectType: Type of the specific object - used for deserializing",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "resourceType": {
                  "description": "ResourceType: Resource Type of Datasource.",
                  "type": "string"
                },
                "resourceUri": {
                  "description": "ResourceUri: Uri of the resource.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "datasourceAuthCredentials": {
              "description": "DatasourceAuthCredentials: Credentials to use to authenticate with data source provider.",
              "properties": {
                "secretStoreBasedAuthCredentials": {
                  "description": "SecretStoreBasedAuthCredentials: Mutually exclusive with all other properties",
                  "properties": {
                    "objectType": {
                      "description": "ObjectType: Type of the specific object - used for deserializing",
                      "type": "string"
                    },
                    "secretStoreResource": {
                      "description": "SecretStoreResource: Secret store resource",
                      "properties": {
                        "secretStoreType": {
                          "description": "SecretStoreType: Gets or sets the type of secret store",
                          "type": "string"
                        },
                        "uri": {
                          "description": "Uri: Uri to get to the resource",
                          "type": "string"
                        },
                        "value": {
                          "description": "Value: Gets or sets value stored in secret store resource",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "friendlyName": {
              "description": "FriendlyName: Gets or sets the Backup Instance friendly name.",
              "type": "string"
            },
            "identityDetails": {
              "description": "IdentityDetails: Contains information of the Identity Details for the BI.\nIf it is null, default will be considered as System Assigned.",
              "properties": {
                "useSystemAssignedIdentity": {
                  "description": "UseSystemAssignedIdentity: Specifies if the BI is protected by System Identity.",
                  "type": "boolean"
                },
                "userAssignedIdentityArmUrl": {
                  "description": "UserAssignedIdentityArmUrl: ARM URL for User Assigned Identity.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "objectType": {
              "type": "string"
            },
            "policyInfo": {
              "description": "PolicyInfo: Gets or sets the policy information.",
              "properties": {
                "policyId": {
                  "type": "string"
                },
                "policyParameters": {
                  "description": "PolicyParameters: Policy parameters for the backup instance",
                  "properties": {
                    "backupDatasourceParametersList": {
                      "description": "BackupDatasourceParametersList: Gets or sets the Backup Data Source Parameters",
                      "items": {
                        "properties": {
                          "blobBackupDatasourceParameters": {
                            "description": "Blob: Mutually exclusive with all other properties",
                            "properties": {
                              "containersList": {
                                "description": "ContainersList: List of containers to be backed up during configuration of backup of blobs",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "objectType": {
                                "description": "ObjectType: Type of the specific object - used for deserializing",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "kubernetesClusterBackupDatasourceParameters": {
                            "description": "KubernetesCluster: Mutually exclusive with all other properties",
                            "properties": {
                              "backupHookReferences": {
                                "description": "BackupHookReferences: Gets or sets the backup hook references. This property sets the hook reference to be executed\nduring backup.",
                                "items": {
                                  "description": "Class to refer resources which contains namespace and name",
                                  "properties": {
                                    "name": {
                                      "description": "Name: Name of the resource",
                                      "type": "string"
                                    },
                                    "namespace": {
                                      "description": "Namespace: Namespace in which the resource exists",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object",
                                  "additionalProperties": false
                                },
                                "type": "array"
                              },
                              "excludedNamespaces": {
                                "description": "ExcludedNamespaces: Gets or sets the exclude namespaces property. This property sets the namespaces to be excluded\nduring backup.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "excludedResourceTypes": {
                                "description": "ExcludedResourceTypes: Gets or sets the exclude resource types property. This property sets the resource types to be\nexcluded during backup.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "includeClusterScopeResources": {
                                "description": "IncludeClusterScopeResources: Gets or sets the include cluster resources property. This property if enabled will include\ncluster scope resources during backup.",
                                "type": "boolean"
                              },
                              "includedNamespaces": {
                                "description": "IncludedNamespaces: Gets or sets the include namespaces property. This property sets the namespaces to be included\nduring backup.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "includedResourceTypes": {
                                "description": "IncludedResourceTypes: Gets or sets the include resource types property. This property sets the resource types to be\nincluded during backup.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "labelSelectors": {
                                "description": "LabelSelectors: Gets or sets the LabelSelectors property. This property sets the resource with such label selectors to\nbe included during backup.",
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "objectType": {
                                "description": "ObjectType: Type of the specific object - used for deserializing",
                                "type": "string"
                              },
                              "snapshotVolumes": {
                                "description": "SnapshotVolumes: Gets or sets the volume snapshot property. This property if enabled will take volume snapshots during\nbackup.",
                                "type": "boolean"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "dataStoreParametersList": {
                      "description": "DataStoreParametersList: Gets or sets the DataStore Parameters",
                      "items": {
                        "properties": {
                          "azureOperationalStoreParameters": {
                            "description": "AzureOperationalStoreParameters: Mutually exclusive with all other properties",
                            "properties": {
                              "dataStoreType": {
                                "description": "DataStoreType: type of datastore; Operational/Vault/Archive",
                                "type": "string"
                              },
                              "objectType": {
                                "description": "ObjectType: Type of the specific object - used for deserializing",
                                "type": "string"
                              },
                              "resourceGroupId": {
                                "description": "ResourceGroupId: Gets or sets the Snapshot Resource Group Uri.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "policyVersion": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "protectionErrorDetails": {
              "description": "ProtectionErrorDetails: Specifies the protection error of the resource",
              "properties": {
                "code": {
                  "description": "Code: Unique code for this error",
                  "type": "string"
                },
                "details": {
                  "description": "Details: Additional related Errors",
                  "items": {
                    "properties": {
                      "code": {
                        "description": "Code: Unique code for this error",
                        "type": "string"
                      },
                      "innerError": {
                        "description": "InnerError: Inner Error",
                        "properties": {
                          "additionalInfo": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "description": "AdditionalInfo: Any Key value pairs that can be provided to the client for additional  verbose information.",
                            "type": "object"
                          },
                          "code": {
                            "description": "Code: Unique code for this error",
                            "type": "string"
                          },
                          "embeddedInnerError": {
                            "description": "EmbeddedInnerError: Child Inner Error, to allow Nesting.",
                            "properties": {
                              "additionalInfo": {
                                "additionalProperties": {
                                  "type": "string"
                                },
                                "description": "AdditionalInfo: Any Key value pairs that can be provided to the client for additional  verbose information.",
                                "type": "object"
                              },
                              "code": {
                                "description": "Code: Unique code for this error",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "isRetryable": {
                        "description": "IsRetryable: Whether the operation will be retryable or not",
                        "type": "boolean"
                      },
                      "isUserError": {
                        "description": "IsUserError: Whether the operation is due to a user error or service error",
                        "type": "boolean"
                      },
                      "message": {
                        "type": "string"
                      },
                      "properties": {
                        "additionalProperties": {
                          "type": "string"
                        },
                        "description": "Properties: Any key value pairs that can be injected inside error object",
                        "type": "object"
                      },
                      "recommendedAction": {
                        "description": "RecommendedAction: RecommendedAction \ufffd localized.",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "target": {
                        "description": "Target: Target of the error.",
                        "type": "string"
                      },
                      "additionalProperties": false
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "innerError": {
                  "description": "InnerError: Inner Error",
                  "properties": {
                    "additionalInfo": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "AdditionalInfo: Any Key value pairs that can be provided to the client for additional  verbose information.",
                      "type": "object"
                    },
                    "code": {
                      "description": "Code: Unique code for this error",
                      "type": "string"
                    },
                    "embeddedInnerError": {
                      "description": "EmbeddedInnerError: Child Inner Error, to allow Nesting.",
                      "properties": {
                        "additionalInfo": {
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "AdditionalInfo: Any Key value pairs that can be provided to the client for additional  verbose information.",
                          "type": "object"
                        },
                        "code": {
                          "description": "Code: Unique code for this error",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "isRetryable": {
                  "description": "IsRetryable: Whether the operation will be retryable or not",
                  "type": "boolean"
                },
                "isUserError": {
                  "description": "IsUserError: Whether the operation is due to a user error or service error",
                  "type": "boolean"
                },
                "message": {
                  "type": "string"
                },
                "properties": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Properties: Any key value pairs that can be injected inside error object",
                  "type": "object"
                },
                "recommendedAction": {
                  "description": "RecommendedAction: RecommendedAction \ufffd localized.",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "target": {
                  "description": "Target: Target of the error.",
                  "type": "string"
                },
                "additionalProperties": false
              },
              "type": "object",
              "additionalProperties": false
            },
            "protectionStatus": {
              "description": "ProtectionStatus: Specifies the protection status of the resource",
              "properties": {
                "errorDetails": {
                  "description": "ErrorDetails: Specifies the protection status error of the resource",
                  "properties": {
                    "code": {
                      "description": "Code: Unique code for this error",
                      "type": "string"
                    },
                    "details": {
                      "description": "Details: Additional related Errors",
                      "items": {
                        "properties": {
                          "code": {
                            "description": "Code: Unique code for this error",
                            "type": "string"
                          },
                          "innerError": {
                            "description": "InnerError: Inner Error",
                            "properties": {
                              "additionalInfo": {
                                "additionalProperties": {
                                  "type": "string"
                                },
                                "description": "AdditionalInfo: Any Key value pairs that can be provided to the client for additional  verbose information.",
                                "type": "object"
                              },
                              "code": {
                                "description": "Code: Unique code for this error",
                                "type": "string"
                              },
                              "embeddedInnerError": {
                                "description": "EmbeddedInnerError: Child Inner Error, to allow Nesting.",
                                "properties": {
                                  "additionalInfo": {
                                    "additionalProperties": {
                                      "type": "string"
                                    },
                                    "description": "AdditionalInfo: Any Key value pairs that can be provided to the client for additional  verbose information.",
                                    "type": "object"
                                  },
                                  "code": {
                                    "description": "Code: Unique code for this error",
                                    "type": "string"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "isRetryable": {
                            "description": "IsRetryable: Whether the operation will be retryable or not",
                            "type": "boolean"
                          },
                          "isUserError": {
                            "description": "IsUserError: Whether the operation is due to a user error or service error",
                            "type": "boolean"
                          },
                          "message": {
                            "type": "string"
                          },
                          "properties": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "description": "Properties: Any key value pairs that can be injected inside error object",
                            "type": "object"
                          },
                          "recommendedAction": {
                            "description": "RecommendedAction: RecommendedAction \ufffd localized.",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          },
                          "target": {
                            "description": "Target: Target of the error.",
                            "type": "string"
                          },
                          "additionalProperties": false
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "innerError": {
                      "description": "InnerError: Inner Error",
                      "properties": {
                        "additionalInfo": {
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "AdditionalInfo: Any Key value pairs that can be provided to the client for additional  verbose information.",
                          "type": "object"
                        },
                        "code": {
                          "description": "Code: Unique code for this error",
                          "type": "string"
                        },
                        "embeddedInnerError": {
                          "description": "EmbeddedInnerError: Child Inner Error, to allow Nesting.",
                          "properties": {
                            "additionalInfo": {
                              "additionalProperties": {
                                "type": "string"
                              },
                              "description": "AdditionalInfo: Any Key value pairs that can be provided to the client for additional  verbose information.",
                              "type": "object"
                            },
                            "code": {
                              "description": "Code: Unique code for this error",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "isRetryable": {
                      "description": "IsRetryable: Whether the operation will be retryable or not",
                      "type": "boolean"
                    },
                    "isUserError": {
                      "description": "IsUserError: Whether the operation is due to a user error or service error",
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    },
                    "properties": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Properties: Any key value pairs that can be injected inside error object",
                      "type": "object"
                    },
                    "recommendedAction": {
                      "description": "RecommendedAction: RecommendedAction \ufffd localized.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "target": {
                      "description": "Target: Target of the error.",
                      "type": "string"
                    },
                    "additionalProperties": false
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "status": {
                  "description": "Status: Specifies the protection status of the resource",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "provisioningState": {
              "description": "ProvisioningState: Specifies the provisioning state of the resource i.e. provisioning/updating/Succeeded/Failed",
              "type": "string"
            },
            "validationType": {
              "description": "ValidationType: Specifies the type of validation. In case of DeepValidation, all validations from /validateForBackup API\nwill run again.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "systemData": {
          "description": "SystemData: Metadata pertaining to creation and last modification of the resource.",
          "properties": {
            "createdAt": {
              "description": "CreatedAt: The timestamp of resource creation (UTC).",
              "type": "string"
            },
            "createdBy": {
              "description": "CreatedBy: The identity that created the resource.",
              "type": "string"
            },
            "createdByType": {
              "description": "CreatedByType: The type of identity that created the resource.",
              "type": "string"
            },
            "lastModifiedAt": {
              "description": "LastModifiedAt: The timestamp of resource last modification (UTC)",
              "type": "string"
            },
            "lastModifiedBy": {
              "description": "LastModifiedBy: The identity that last modified the resource.",
              "type": "string"
            },
            "lastModifiedByType": {
              "description": "LastModifiedByType: The type of identity that last modified the resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags: Proxy Resource tags.",
          "type": "object"
        },
        "type": {
          "description": "Type: Proxy Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/...",
          "type": "string"
        },
        "additionalProperties": false
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
