{
  "description": "Generator information:\n- Generated from: /iothub/resource-manager/Microsoft.Devices/stable/2021-07-02/iothub.json\n- ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Devices/IotHubs/{resourceName}",
  "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"
        },
        "identity": {
          "description": "Identity: The managed identities for the IotHub.",
          "properties": {
            "type": {
              "description": "Type: The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly\ncreated identity and a set of user assigned identities. The type 'None' will remove any identities from the service.",
              "enum": [
                "None",
                "SystemAssigned",
                "SystemAssigned, UserAssigned",
                "UserAssigned"
              ],
              "type": "string"
            },
            "userAssignedIdentities": {
              "items": {
                "description": "Information about the user assigned identity for the resource",
                "properties": {
                  "reference": {
                    "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
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "location": {
          "description": "Location: The resource location.",
          "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"
            },
            "secrets": {
              "description": "Secrets: configures where to place Azure generated secrets.",
              "properties": {
                "devicePrimaryKey": {
                  "description": "DevicePrimaryKey: indicates where the DevicePrimaryKey secret should be placed. If omitted, the secret will not be\nretrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "deviceSecondaryKey": {
                  "description": "DeviceSecondaryKey: indicates where the DeviceSecondaryKey secret should be placed. If omitted, the secret will not be\nretrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "iotHubOwnerPrimaryKey": {
                  "description": "IotHubOwnerPrimaryKey: indicates where the IotHubOwnerPrimaryKey secret should be placed. If omitted, the secret will\nnot be retrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "iotHubOwnerSecondaryKey": {
                  "description": "IotHubOwnerSecondaryKey: indicates where the IotHubOwnerSecondaryKey secret should be placed. If omitted, the secret\nwill not be retrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "registryReadPrimaryKey": {
                  "description": "RegistryReadPrimaryKey: indicates where the RegistryReadPrimaryKey secret should be placed. If omitted, the secret will\nnot be retrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "registryReadSecondaryKey": {
                  "description": "RegistryReadSecondaryKey: indicates where the RegistryReadSecondaryKey secret should be placed. If omitted, the secret\nwill not be retrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "registryReadWritePrimaryKey": {
                  "description": "RegistryReadWritePrimaryKey: indicates where the RegistryReadWritePrimaryKey secret should be placed. If omitted, the\nsecret will not be retrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "registryReadWriteSecondaryKey": {
                  "description": "RegistryReadWriteSecondaryKey: indicates where the RegistryReadWriteSecondaryKey secret should be placed. If omitted,\nthe secret will not be retrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "servicePrimaryKey": {
                  "description": "ServicePrimaryKey: indicates where the ServicePrimaryKey secret should be placed. If omitted, the secret will not be\nretrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "serviceSecondaryKey": {
                  "description": "ServiceSecondaryKey: indicates where the ServiceSecondaryKey secret should be placed. If omitted, the secret will not be\nretrieved from Azure.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the Kubernetes secret being referenced.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name is the name of the Kubernetes secret to write to.\nThe secret will be created in the same namespace as the resource.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "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 resources.azure.com/ResourceGroup 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: IotHub properties",
          "properties": {
            "allowedFqdnList": {
              "description": "AllowedFqdnList: List of allowed FQDNs(Fully Qualified Domain Name) for egress from Iot Hub.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "authorizationPolicies": {
              "description": "AuthorizationPolicies: The shared access policies you can use to secure a connection to the IoT hub.",
              "items": {
                "description": "The properties of an IoT hub shared access policy.",
                "properties": {
                  "keyName": {
                    "description": "KeyName: The name of the shared access policy.",
                    "type": "string"
                  },
                  "rights": {
                    "description": "Rights: The permissions assigned to the shared access policy.",
                    "enum": [
                      "DeviceConnect",
                      "RegistryRead",
                      "RegistryRead, DeviceConnect",
                      "RegistryRead, RegistryWrite",
                      "RegistryRead, RegistryWrite, DeviceConnect",
                      "RegistryRead, RegistryWrite, ServiceConnect",
                      "RegistryRead, RegistryWrite, ServiceConnect, DeviceConnect",
                      "RegistryRead, ServiceConnect",
                      "RegistryRead, ServiceConnect, DeviceConnect",
                      "RegistryWrite",
                      "RegistryWrite, DeviceConnect",
                      "RegistryWrite, ServiceConnect",
                      "RegistryWrite, ServiceConnect, DeviceConnect",
                      "ServiceConnect",
                      "ServiceConnect, DeviceConnect"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "keyName",
                  "rights"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "cloudToDevice": {
              "description": "CloudToDevice: The IoT hub cloud-to-device messaging properties.",
              "properties": {
                "defaultTtlAsIso8601": {
                  "description": "DefaultTtlAsIso8601: The default time to live for cloud-to-device messages in the device queue. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.",
                  "type": "string"
                },
                "feedback": {
                  "description": "Feedback: The properties of the feedback queue for cloud-to-device messages.",
                  "properties": {
                    "lockDurationAsIso8601": {
                      "description": "LockDurationAsIso8601: The lock duration for the feedback queue. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.",
                      "type": "string"
                    },
                    "maxDeliveryCount": {
                      "description": "MaxDeliveryCount: The number of times the IoT hub attempts to deliver a message on the feedback queue. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.",
                      "maximum": 100,
                      "minimum": 1,
                      "type": "integer"
                    },
                    "ttlAsIso8601": {
                      "description": "TtlAsIso8601: The period of time for which a message is available to consume before it is expired by the IoT hub. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "maxDeliveryCount": {
                  "description": "MaxDeliveryCount: The max delivery count for cloud-to-device messages in the device queue. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "comments": {
              "description": "Comments: IoT hub comments.",
              "type": "string"
            },
            "disableDeviceSAS": {
              "description": "DisableDeviceSAS: If true, all device(including Edge devices but excluding modules) scoped SAS keys cannot be used for\nauthentication.",
              "type": "boolean"
            },
            "disableLocalAuth": {
              "description": "DisableLocalAuth: If true, SAS tokens with Iot hub scoped SAS keys cannot be used for authentication.",
              "type": "boolean"
            },
            "disableModuleSAS": {
              "description": "DisableModuleSAS: If true, all module scoped SAS keys cannot be used for authentication.",
              "type": "boolean"
            },
            "enableDataResidency": {
              "description": "EnableDataResidency: This property when set to true, will enable data residency, thus, disabling disaster recovery.",
              "type": "boolean"
            },
            "enableFileUploadNotifications": {
              "description": "EnableFileUploadNotifications: If True, file upload notifications are enabled.",
              "type": "boolean"
            },
            "eventHubEndpoints": {
              "additionalProperties": {
                "description": "The properties of the provisioned Event Hub-compatible endpoint used by the IoT hub.",
                "properties": {
                  "partitionCount": {
                    "description": "PartitionCount: The number of partitions for receiving device-to-cloud messages in the Event Hub-compatible endpoint.\nSee: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#device-to-cloud-messages.",
                    "type": "integer"
                  },
                  "retentionTimeInDays": {
                    "description": "RetentionTimeInDays: The retention time for device-to-cloud messages in days. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#device-to-cloud-messages",
                    "type": "integer"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "description": "EventHubEndpoints: The Event Hub-compatible endpoint properties. The only possible keys to this dictionary is events.\nThis key has to be present in the dictionary while making create or update calls for the IoT hub.",
              "type": "object"
            },
            "features": {
              "description": "Features: The capabilities and features enabled for the IoT hub.",
              "enum": [
                "DeviceManagement",
                "None"
              ],
              "type": "string"
            },
            "ipFilterRules": {
              "description": "IpFilterRules: The IP filter rules.",
              "items": {
                "description": "The IP filter rules for the IoT hub.",
                "properties": {
                  "action": {
                    "description": "Action: The desired action for requests captured by this rule.",
                    "enum": [
                      "Accept",
                      "Reject"
                    ],
                    "type": "string"
                  },
                  "filterName": {
                    "description": "FilterName: The name of the IP filter rule.",
                    "type": "string"
                  },
                  "ipMask": {
                    "description": "IpMask: A string that contains the IP address range in CIDR notation for the rule.",
                    "type": "string"
                  }
                },
                "required": [
                  "action",
                  "filterName",
                  "ipMask"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "messagingEndpoints": {
              "additionalProperties": {
                "description": "The properties of the messaging endpoints used by this IoT hub.",
                "properties": {
                  "lockDurationAsIso8601": {
                    "description": "LockDurationAsIso8601: The lock duration. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-file-upload.",
                    "type": "string"
                  },
                  "maxDeliveryCount": {
                    "description": "MaxDeliveryCount: The number of times the IoT hub attempts to deliver a message. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-file-upload.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "ttlAsIso8601": {
                    "description": "TtlAsIso8601: The period of time for which a message is available to consume before it is expired by the IoT hub. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-file-upload.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "description": "MessagingEndpoints: The messaging endpoint properties for the file upload notification queue.",
              "type": "object"
            },
            "minTlsVersion": {
              "description": "MinTlsVersion: Specifies the minimum TLS version to support for this hub. Can be set to \"1.2\" to have clients that use a\nTLS version below 1.2 to be rejected.",
              "type": "string"
            },
            "networkRuleSets": {
              "description": "NetworkRuleSets: Network Rule Set Properties of IotHub",
              "properties": {
                "applyToBuiltInEventHubEndpoint": {
                  "description": "ApplyToBuiltInEventHubEndpoint: If True, then Network Rule Set is also applied to BuiltIn EventHub EndPoint of IotHub",
                  "type": "boolean"
                },
                "defaultAction": {
                  "description": "DefaultAction: Default Action for Network Rule Set",
                  "enum": [
                    "Allow",
                    "Deny"
                  ],
                  "type": "string"
                },
                "ipRules": {
                  "description": "IpRules: List of IP Rules",
                  "items": {
                    "description": "IP Rule to be applied as part of Network Rule Set",
                    "properties": {
                      "action": {
                        "description": "Action: IP Filter Action",
                        "enum": [
                          "Allow"
                        ],
                        "type": "string"
                      },
                      "filterName": {
                        "description": "FilterName: Name of the IP filter rule.",
                        "type": "string"
                      },
                      "ipMask": {
                        "description": "IpMask: A string that contains the IP address range in CIDR notation for the rule.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "filterName",
                      "ipMask"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "required": [
                "applyToBuiltInEventHubEndpoint",
                "ipRules"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "publicNetworkAccess": {
              "description": "PublicNetworkAccess: Whether requests from Public Network are allowed",
              "enum": [
                "Disabled",
                "Enabled"
              ],
              "type": "string"
            },
            "restrictOutboundNetworkAccess": {
              "description": "RestrictOutboundNetworkAccess: If true, egress from IotHub will be restricted to only the allowed FQDNs that are\nconfigured via allowedFqdnList.",
              "type": "boolean"
            },
            "routing": {
              "description": "Routing: The routing related properties of the IoT hub. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging",
              "properties": {
                "endpoints": {
                  "description": "Endpoints: The properties related to the custom endpoints to which your IoT hub routes messages based on the routing\nrules. A  maximum of 10 custom endpoints are allowed across all endpoint types for paid hubs and only 1 custom endpoint\nis allowed  across all endpoint types for free hubs.",
                  "properties": {
                    "eventHubs": {
                      "description": "EventHubs: The list of Event Hubs endpoints that IoT hub routes messages to, based on the routing rules. This list does\nnot include the built-in Event Hubs endpoint.",
                      "items": {
                        "description": "The properties related to an event hub endpoint.",
                        "properties": {
                          "authenticationType": {
                            "description": "AuthenticationType: Method used to authenticate against the event hub endpoint",
                            "enum": [
                              "identityBased",
                              "keyBased"
                            ],
                            "type": "string"
                          },
                          "connectionString": {
                            "description": "ConnectionString: The connection string of the event hub endpoint.",
                            "properties": {
                              "key": {
                                "description": "Key is the key in the Kubernetes secret being referenced",
                                "type": "string"
                              },
                              "name": {
                                "description": "Name is the name of the Kubernetes secret being referenced.\nThe secret must be in the same namespace as the resource",
                                "type": "string"
                              }
                            },
                            "required": [
                              "key",
                              "name"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "endpointUri": {
                            "description": "EndpointUri: The url of the event hub endpoint. It must include the protocol sb://",
                            "type": "string"
                          },
                          "entityPath": {
                            "description": "EntityPath: Event hub name on the event hub namespace",
                            "type": "string"
                          },
                          "identity": {
                            "description": "Identity: Managed identity properties of routing event hub endpoint.",
                            "properties": {
                              "userAssignedIdentity": {
                                "description": "UserAssignedIdentity: The user assigned identity.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "name": {
                            "description": "Name: The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores,\nhyphens and has a maximum length of 64 characters. The following names are reserved:  events, fileNotifications,\n$default. Endpoint names must be unique across endpoint types.",
                            "pattern": "^[A-Za-z0-9-._]{1,64}$",
                            "type": "string"
                          },
                          "reference": {
                            "description": "Reference: Id of the event hub endpoint",
                            "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
                          },
                          "resourceGroup": {
                            "description": "ResourceGroup: The name of the resource group of the event hub endpoint.",
                            "type": "string"
                          },
                          "subscriptionId": {
                            "description": "SubscriptionId: The subscription identifier of the event hub endpoint.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "serviceBusQueues": {
                      "description": "ServiceBusQueues: The list of Service Bus queue endpoints that IoT hub routes the messages to, based on the routing\nrules.",
                      "items": {
                        "description": "The properties related to service bus queue endpoint types.",
                        "properties": {
                          "authenticationType": {
                            "description": "AuthenticationType: Method used to authenticate against the service bus queue endpoint",
                            "enum": [
                              "identityBased",
                              "keyBased"
                            ],
                            "type": "string"
                          },
                          "connectionString": {
                            "description": "ConnectionString: The connection string of the service bus queue endpoint.",
                            "properties": {
                              "key": {
                                "description": "Key is the key in the Kubernetes secret being referenced",
                                "type": "string"
                              },
                              "name": {
                                "description": "Name is the name of the Kubernetes secret being referenced.\nThe secret must be in the same namespace as the resource",
                                "type": "string"
                              }
                            },
                            "required": [
                              "key",
                              "name"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "endpointUri": {
                            "description": "EndpointUri: The url of the service bus queue endpoint. It must include the protocol sb://",
                            "type": "string"
                          },
                          "entityPath": {
                            "description": "EntityPath: Queue name on the service bus namespace",
                            "type": "string"
                          },
                          "identity": {
                            "description": "Identity: Managed identity properties of routing service bus queue endpoint.",
                            "properties": {
                              "userAssignedIdentity": {
                                "description": "UserAssignedIdentity: The user assigned identity.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "name": {
                            "description": "Name: The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores,\nhyphens and has a maximum length of 64 characters. The following names are reserved:  events, fileNotifications,\n$default. Endpoint names must be unique across endpoint types. The name need not be the same as the actual queue name.",
                            "pattern": "^[A-Za-z0-9-._]{1,64}$",
                            "type": "string"
                          },
                          "reference": {
                            "description": "Reference: Id of the service bus queue endpoint",
                            "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
                          },
                          "resourceGroup": {
                            "description": "ResourceGroup: The name of the resource group of the service bus queue endpoint.",
                            "type": "string"
                          },
                          "subscriptionId": {
                            "description": "SubscriptionId: The subscription identifier of the service bus queue endpoint.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "serviceBusTopics": {
                      "description": "ServiceBusTopics: The list of Service Bus topic endpoints that the IoT hub routes the messages to, based on the routing\nrules.",
                      "items": {
                        "description": "The properties related to service bus topic endpoint types.",
                        "properties": {
                          "authenticationType": {
                            "description": "AuthenticationType: Method used to authenticate against the service bus topic endpoint",
                            "enum": [
                              "identityBased",
                              "keyBased"
                            ],
                            "type": "string"
                          },
                          "connectionString": {
                            "description": "ConnectionString: The connection string of the service bus topic endpoint.",
                            "properties": {
                              "key": {
                                "description": "Key is the key in the Kubernetes secret being referenced",
                                "type": "string"
                              },
                              "name": {
                                "description": "Name is the name of the Kubernetes secret being referenced.\nThe secret must be in the same namespace as the resource",
                                "type": "string"
                              }
                            },
                            "required": [
                              "key",
                              "name"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "endpointUri": {
                            "description": "EndpointUri: The url of the service bus topic endpoint. It must include the protocol sb://",
                            "type": "string"
                          },
                          "entityPath": {
                            "description": "EntityPath: Queue name on the service bus topic",
                            "type": "string"
                          },
                          "identity": {
                            "description": "Identity: Managed identity properties of routing service bus topic endpoint.",
                            "properties": {
                              "userAssignedIdentity": {
                                "description": "UserAssignedIdentity: The user assigned identity.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "name": {
                            "description": "Name: The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores,\nhyphens and has a maximum length of 64 characters. The following names are reserved:  events, fileNotifications,\n$default. Endpoint names must be unique across endpoint types.  The name need not be the same as the actual topic name.",
                            "pattern": "^[A-Za-z0-9-._]{1,64}$",
                            "type": "string"
                          },
                          "reference": {
                            "description": "Reference: Id of the service bus topic endpoint",
                            "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
                          },
                          "resourceGroup": {
                            "description": "ResourceGroup: The name of the resource group of the service bus topic endpoint.",
                            "type": "string"
                          },
                          "subscriptionId": {
                            "description": "SubscriptionId: The subscription identifier of the service bus topic endpoint.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "storageContainers": {
                      "description": "StorageContainers: The list of storage container endpoints that IoT hub routes messages to, based on the routing rules.",
                      "items": {
                        "description": "The properties related to a storage container endpoint.",
                        "properties": {
                          "authenticationType": {
                            "description": "AuthenticationType: Method used to authenticate against the storage endpoint",
                            "enum": [
                              "identityBased",
                              "keyBased"
                            ],
                            "type": "string"
                          },
                          "batchFrequencyInSeconds": {
                            "description": "BatchFrequencyInSeconds: Time interval at which blobs are written to storage. Value should be between 60 and 720\nseconds. Default value is 300 seconds.",
                            "maximum": 720,
                            "minimum": 60,
                            "type": "integer"
                          },
                          "connectionString": {
                            "description": "ConnectionString: The connection string of the storage account.",
                            "properties": {
                              "key": {
                                "description": "Key is the key in the Kubernetes secret being referenced",
                                "type": "string"
                              },
                              "name": {
                                "description": "Name is the name of the Kubernetes secret being referenced.\nThe secret must be in the same namespace as the resource",
                                "type": "string"
                              }
                            },
                            "required": [
                              "key",
                              "name"
                            ],
                            "type": "object",
                            "additionalProperties": false
                          },
                          "containerName": {
                            "description": "ContainerName: The name of storage container in the storage account.",
                            "type": "string"
                          },
                          "encoding": {
                            "description": "Encoding: Encoding that is used to serialize messages to blobs. Supported values are 'avro', 'avrodeflate', and 'JSON'.\nDefault value is 'avro'.",
                            "enum": [
                              "Avro",
                              "AvroDeflate",
                              "JSON"
                            ],
                            "type": "string"
                          },
                          "endpointUri": {
                            "description": "EndpointUri: The url of the storage endpoint. It must include the protocol https://",
                            "type": "string"
                          },
                          "fileNameFormat": {
                            "description": "FileNameFormat: File name format for the blob. Default format is {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}. All\nparameters are mandatory but can be reordered.",
                            "type": "string"
                          },
                          "identity": {
                            "description": "Identity: Managed identity properties of routing storage endpoint.",
                            "properties": {
                              "userAssignedIdentity": {
                                "description": "UserAssignedIdentity: The user assigned identity.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "maxChunkSizeInBytes": {
                            "description": "MaxChunkSizeInBytes: Maximum number of bytes for each blob written to storage. Value should be between 10485760(10MB)\nand 524288000(500MB). Default value is 314572800(300MB).",
                            "maximum": 524288000,
                            "minimum": 10485760,
                            "type": "integer"
                          },
                          "name": {
                            "description": "Name: The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores,\nhyphens and has a maximum length of 64 characters. The following names are reserved:  events, fileNotifications,\n$default. Endpoint names must be unique across endpoint types.",
                            "pattern": "^[A-Za-z0-9-._]{1,64}$",
                            "type": "string"
                          },
                          "reference": {
                            "description": "Reference: Id of the storage container endpoint",
                            "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
                          },
                          "resourceGroup": {
                            "description": "ResourceGroup: The name of the resource group of the storage account.",
                            "type": "string"
                          },
                          "subscriptionId": {
                            "description": "SubscriptionId: The subscription identifier of the storage account.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "containerName",
                          "name"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "enrichments": {
                  "description": "Enrichments: The list of user-provided enrichments that the IoT hub applies to messages to be delivered to built-in and\ncustom endpoints. See: https://aka.ms/telemetryoneventgrid",
                  "items": {
                    "description": "The properties of an enrichment that your IoT hub applies to messages delivered to endpoints.",
                    "properties": {
                      "endpointNames": {
                        "description": "EndpointNames: The list of endpoints for which the enrichment is applied to the message.",
                        "items": {
                          "type": "string"
                        },
                        "minItems": 1,
                        "type": "array"
                      },
                      "key": {
                        "description": "Key: The key or name for the enrichment property.",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value: The value for the enrichment property.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "endpointNames",
                      "key",
                      "value"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "fallbackRoute": {
                  "description": "FallbackRoute: The properties of the route that is used as a fall-back route when none of the conditions specified in\nthe 'routes' section are met. This is an optional parameter. When this property is not present in the template, the\nfallback route is disabled by default.",
                  "properties": {
                    "condition": {
                      "description": "Condition: The condition which is evaluated in order to apply the fallback route. If the condition is not provided it\nwill evaluate to true by default. For grammar, See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-query-language",
                      "type": "string"
                    },
                    "endpointNames": {
                      "description": "EndpointNames: The list of endpoints to which the messages that satisfy the condition are routed to. Currently only 1\nendpoint is allowed.",
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 1,
                      "minItems": 1,
                      "type": "array"
                    },
                    "isEnabled": {
                      "description": "IsEnabled: Used to specify whether the fallback route is enabled.",
                      "type": "boolean"
                    },
                    "name": {
                      "description": "Name: The name of the route. The name can only include alphanumeric characters, periods, underscores, hyphens, has a\nmaximum length of 64 characters, and must be unique.",
                      "type": "string"
                    },
                    "source": {
                      "description": "Source: The source to which the routing rule is to be applied to. For example, DeviceMessages",
                      "enum": [
                        "DeviceMessages"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "endpointNames",
                    "isEnabled",
                    "source"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "routes": {
                  "description": "Routes: The list of user-provided routing rules that the IoT hub uses to route messages to built-in and custom\nendpoints. A maximum of 100 routing rules are allowed for paid hubs and a maximum of 5 routing rules are allowed for\nfree hubs.",
                  "items": {
                    "description": "The properties of a routing rule that your IoT hub uses to route messages to endpoints.",
                    "properties": {
                      "condition": {
                        "description": "Condition: The condition that is evaluated to apply the routing rule. If no condition is provided, it evaluates to true\nby default. For grammar, see: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-query-language",
                        "type": "string"
                      },
                      "endpointNames": {
                        "description": "EndpointNames: The list of endpoints to which messages that satisfy the condition are routed. Currently only one\nendpoint is allowed.",
                        "items": {
                          "type": "string"
                        },
                        "maxItems": 1,
                        "minItems": 1,
                        "type": "array"
                      },
                      "isEnabled": {
                        "description": "IsEnabled: Used to specify whether a route is enabled.",
                        "type": "boolean"
                      },
                      "name": {
                        "description": "Name: The name of the route. The name can only include alphanumeric characters, periods, underscores, hyphens, has a\nmaximum length of 64 characters, and must be unique.",
                        "pattern": "^[A-Za-z0-9-._]{1,64}$",
                        "type": "string"
                      },
                      "source": {
                        "description": "Source: The source that the routing rule is to be applied to, such as DeviceMessages.",
                        "enum": [
                          "DeviceConnectionStateEvents",
                          "DeviceJobLifecycleEvents",
                          "DeviceLifecycleEvents",
                          "DeviceMessages",
                          "Invalid",
                          "TwinChangeEvents"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "endpointNames",
                      "isEnabled",
                      "name",
                      "source"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "storageEndpoints": {
              "additionalProperties": {
                "description": "The properties of the Azure Storage endpoint for file upload.",
                "properties": {
                  "authenticationType": {
                    "description": "AuthenticationType: Specifies authentication type being used for connecting to the storage account.",
                    "enum": [
                      "identityBased",
                      "keyBased"
                    ],
                    "type": "string"
                  },
                  "connectionString": {
                    "description": "ConnectionString: The connection string for the Azure Storage account to which files are uploaded.",
                    "properties": {
                      "key": {
                        "description": "Key is the key in the Kubernetes secret being referenced",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name is the name of the Kubernetes secret being referenced.\nThe secret must be in the same namespace as the resource",
                        "type": "string"
                      }
                    },
                    "required": [
                      "key",
                      "name"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "containerName": {
                    "description": "ContainerName: The name of the root container where you upload files. The container need not exist but should be\ncreatable using the connectionString specified.",
                    "type": "string"
                  },
                  "identity": {
                    "description": "Identity: Managed identity properties of storage endpoint for file upload.",
                    "properties": {
                      "userAssignedIdentity": {
                        "description": "UserAssignedIdentity: The user assigned identity.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "sasTtlAsIso8601": {
                    "description": "SasTtlAsIso8601: The period of time for which the SAS URI generated by IoT Hub for file upload is valid. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-file-upload#file-upload-notification-configuration-options.",
                    "type": "string"
                  }
                },
                "required": [
                  "connectionString",
                  "containerName"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "description": "StorageEndpoints: The list of Azure Storage endpoints where you can upload files. Currently you can configure only one\nAzure Storage account and that MUST have its key as $default. Specifying more than one storage account causes an error\nto be thrown. Not specifying a value for this property when the enableFileUploadNotifications property is set to True,\ncauses an error to be thrown.",
              "type": "object"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "sku": {
          "description": "Sku: IotHub SKU info",
          "properties": {
            "capacity": {
              "description": "Capacity: The number of provisioned IoT Hub units. See:\nhttps://docs.microsoft.com/azure/azure-subscription-service-limits#iot-hub-limits.",
              "type": "integer"
            },
            "name": {
              "description": "Name: The name of the SKU.",
              "enum": [
                "B1",
                "B2",
                "B3",
                "F1",
                "S1",
                "S2",
                "S3"
              ],
              "type": "string"
            }
          },
          "required": [
            "name"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags: The resource tags.",
          "type": "object"
        },
        "additionalProperties": false
      },
      "required": [
        "location",
        "owner",
        "sku"
      ],
      "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"
        },
        "etag": {
          "description": "Etag: The Etag field is *not* required. If it is provided in the response body, it must also be provided as a header per\nthe normal ETag convention.",
          "type": "string"
        },
        "id": {
          "description": "Id: The resource identifier.",
          "type": "string"
        },
        "identity": {
          "description": "Identity: The managed identities for the IotHub.",
          "properties": {
            "principalId": {
              "description": "PrincipalId: Principal Id",
              "type": "string"
            },
            "tenantId": {
              "description": "TenantId: Tenant Id",
              "type": "string"
            },
            "type": {
              "description": "Type: The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly\ncreated identity and a set of user assigned identities. The type 'None' will remove any identities from the service.",
              "type": "string"
            },
            "userAssignedIdentities": {
              "additionalProperties": {
                "properties": {
                  "clientId": {
                    "type": "string"
                  },
                  "principalId": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "object"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "location": {
          "description": "Location: The resource location.",
          "type": "string"
        },
        "name": {
          "description": "Name: The resource name.",
          "type": "string"
        },
        "properties": {
          "description": "Properties: IotHub properties",
          "properties": {
            "allowedFqdnList": {
              "description": "AllowedFqdnList: List of allowed FQDNs(Fully Qualified Domain Name) for egress from Iot Hub.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "authorizationPolicies": {
              "description": "AuthorizationPolicies: The shared access policies you can use to secure a connection to the IoT hub.",
              "items": {
                "description": "The properties of an IoT hub shared access policy.",
                "properties": {
                  "keyName": {
                    "description": "KeyName: The name of the shared access policy.",
                    "type": "string"
                  },
                  "rights": {
                    "description": "Rights: The permissions assigned to the shared access policy.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "cloudToDevice": {
              "description": "CloudToDevice: The IoT hub cloud-to-device messaging properties.",
              "properties": {
                "defaultTtlAsIso8601": {
                  "description": "DefaultTtlAsIso8601: The default time to live for cloud-to-device messages in the device queue. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.",
                  "type": "string"
                },
                "feedback": {
                  "description": "Feedback: The properties of the feedback queue for cloud-to-device messages.",
                  "properties": {
                    "lockDurationAsIso8601": {
                      "description": "LockDurationAsIso8601: The lock duration for the feedback queue. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.",
                      "type": "string"
                    },
                    "maxDeliveryCount": {
                      "description": "MaxDeliveryCount: The number of times the IoT hub attempts to deliver a message on the feedback queue. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.",
                      "type": "integer"
                    },
                    "ttlAsIso8601": {
                      "description": "TtlAsIso8601: The period of time for which a message is available to consume before it is expired by the IoT hub. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "maxDeliveryCount": {
                  "description": "MaxDeliveryCount: The max delivery count for cloud-to-device messages in the device queue. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#cloud-to-device-messages.",
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "comments": {
              "description": "Comments: IoT hub comments.",
              "type": "string"
            },
            "disableDeviceSAS": {
              "description": "DisableDeviceSAS: If true, all device(including Edge devices but excluding modules) scoped SAS keys cannot be used for\nauthentication.",
              "type": "boolean"
            },
            "disableLocalAuth": {
              "description": "DisableLocalAuth: If true, SAS tokens with Iot hub scoped SAS keys cannot be used for authentication.",
              "type": "boolean"
            },
            "disableModuleSAS": {
              "description": "DisableModuleSAS: If true, all module scoped SAS keys cannot be used for authentication.",
              "type": "boolean"
            },
            "enableDataResidency": {
              "description": "EnableDataResidency: This property when set to true, will enable data residency, thus, disabling disaster recovery.",
              "type": "boolean"
            },
            "enableFileUploadNotifications": {
              "description": "EnableFileUploadNotifications: If True, file upload notifications are enabled.",
              "type": "boolean"
            },
            "eventHubEndpoints": {
              "additionalProperties": {
                "description": "The properties of the provisioned Event Hub-compatible endpoint used by the IoT hub.",
                "properties": {
                  "endpoint": {
                    "description": "Endpoint: The Event Hub-compatible endpoint.",
                    "type": "string"
                  },
                  "partitionCount": {
                    "description": "PartitionCount: The number of partitions for receiving device-to-cloud messages in the Event Hub-compatible endpoint.\nSee: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#device-to-cloud-messages.",
                    "type": "integer"
                  },
                  "partitionIds": {
                    "description": "PartitionIds: The partition ids in the Event Hub-compatible endpoint.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "path": {
                    "description": "Path: The Event Hub-compatible name.",
                    "type": "string"
                  },
                  "retentionTimeInDays": {
                    "description": "RetentionTimeInDays: The retention time for device-to-cloud messages in days. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging#device-to-cloud-messages",
                    "type": "integer"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "description": "EventHubEndpoints: The Event Hub-compatible endpoint properties. The only possible keys to this dictionary is events.\nThis key has to be present in the dictionary while making create or update calls for the IoT hub.",
              "type": "object"
            },
            "features": {
              "description": "Features: The capabilities and features enabled for the IoT hub.",
              "type": "string"
            },
            "hostName": {
              "description": "HostName: The name of the host.",
              "type": "string"
            },
            "ipFilterRules": {
              "description": "IpFilterRules: The IP filter rules.",
              "items": {
                "description": "The IP filter rules for the IoT hub.",
                "properties": {
                  "action": {
                    "description": "Action: The desired action for requests captured by this rule.",
                    "type": "string"
                  },
                  "filterName": {
                    "description": "FilterName: The name of the IP filter rule.",
                    "type": "string"
                  },
                  "ipMask": {
                    "description": "IpMask: A string that contains the IP address range in CIDR notation for the rule.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "locations": {
              "description": "Locations: Primary and secondary location for iot hub",
              "items": {
                "description": "Public representation of one of the locations where a resource is provisioned.",
                "properties": {
                  "location": {
                    "description": "Location: The name of the Azure region",
                    "type": "string"
                  },
                  "role": {
                    "description": "Role: The role of the region, can be either primary or secondary. The primary region is where the IoT hub is currently\nprovisioned. The secondary region is the Azure disaster recovery (DR) paired region and also the region where the IoT\nhub can failover to.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "messagingEndpoints": {
              "additionalProperties": {
                "description": "The properties of the messaging endpoints used by this IoT hub.",
                "properties": {
                  "lockDurationAsIso8601": {
                    "description": "LockDurationAsIso8601: The lock duration. See: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-file-upload.",
                    "type": "string"
                  },
                  "maxDeliveryCount": {
                    "description": "MaxDeliveryCount: The number of times the IoT hub attempts to deliver a message. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-file-upload.",
                    "type": "integer"
                  },
                  "ttlAsIso8601": {
                    "description": "TtlAsIso8601: The period of time for which a message is available to consume before it is expired by the IoT hub. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-file-upload.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "description": "MessagingEndpoints: The messaging endpoint properties for the file upload notification queue.",
              "type": "object"
            },
            "minTlsVersion": {
              "description": "MinTlsVersion: Specifies the minimum TLS version to support for this hub. Can be set to \"1.2\" to have clients that use a\nTLS version below 1.2 to be rejected.",
              "type": "string"
            },
            "networkRuleSets": {
              "description": "NetworkRuleSets: Network Rule Set Properties of IotHub",
              "properties": {
                "applyToBuiltInEventHubEndpoint": {
                  "description": "ApplyToBuiltInEventHubEndpoint: If True, then Network Rule Set is also applied to BuiltIn EventHub EndPoint of IotHub",
                  "type": "boolean"
                },
                "defaultAction": {
                  "description": "DefaultAction: Default Action for Network Rule Set",
                  "type": "string"
                },
                "ipRules": {
                  "description": "IpRules: List of IP Rules",
                  "items": {
                    "description": "IP Rule to be applied as part of Network Rule Set",
                    "properties": {
                      "action": {
                        "description": "Action: IP Filter Action",
                        "type": "string"
                      },
                      "filterName": {
                        "description": "FilterName: Name of the IP filter rule.",
                        "type": "string"
                      },
                      "ipMask": {
                        "description": "IpMask: A string that contains the IP address range in CIDR notation for the rule.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "privateEndpointConnections": {
              "description": "PrivateEndpointConnections: Private endpoint connections created on this IotHub",
              "items": {
                "description": "The private endpoint connection of an IotHub",
                "properties": {
                  "id": {
                    "description": "Id: The resource identifier.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "provisioningState": {
              "description": "ProvisioningState: The provisioning state.",
              "type": "string"
            },
            "publicNetworkAccess": {
              "description": "PublicNetworkAccess: Whether requests from Public Network are allowed",
              "type": "string"
            },
            "restrictOutboundNetworkAccess": {
              "description": "RestrictOutboundNetworkAccess: If true, egress from IotHub will be restricted to only the allowed FQDNs that are\nconfigured via allowedFqdnList.",
              "type": "boolean"
            },
            "routing": {
              "description": "Routing: The routing related properties of the IoT hub. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-messaging",
              "properties": {
                "endpoints": {
                  "description": "Endpoints: The properties related to the custom endpoints to which your IoT hub routes messages based on the routing\nrules. A  maximum of 10 custom endpoints are allowed across all endpoint types for paid hubs and only 1 custom endpoint\nis allowed  across all endpoint types for free hubs.",
                  "properties": {
                    "eventHubs": {
                      "description": "EventHubs: The list of Event Hubs endpoints that IoT hub routes messages to, based on the routing rules. This list does\nnot include the built-in Event Hubs endpoint.",
                      "items": {
                        "description": "The properties related to an event hub endpoint.",
                        "properties": {
                          "authenticationType": {
                            "description": "AuthenticationType: Method used to authenticate against the event hub endpoint",
                            "type": "string"
                          },
                          "endpointUri": {
                            "description": "EndpointUri: The url of the event hub endpoint. It must include the protocol sb://",
                            "type": "string"
                          },
                          "entityPath": {
                            "description": "EntityPath: Event hub name on the event hub namespace",
                            "type": "string"
                          },
                          "id": {
                            "description": "Id: Id of the event hub endpoint",
                            "type": "string"
                          },
                          "identity": {
                            "description": "Identity: Managed identity properties of routing event hub endpoint.",
                            "properties": {
                              "userAssignedIdentity": {
                                "description": "UserAssignedIdentity: The user assigned identity.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "name": {
                            "description": "Name: The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores,\nhyphens and has a maximum length of 64 characters. The following names are reserved:  events, fileNotifications,\n$default. Endpoint names must be unique across endpoint types.",
                            "type": "string"
                          },
                          "resourceGroup": {
                            "description": "ResourceGroup: The name of the resource group of the event hub endpoint.",
                            "type": "string"
                          },
                          "subscriptionId": {
                            "description": "SubscriptionId: The subscription identifier of the event hub endpoint.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "serviceBusQueues": {
                      "description": "ServiceBusQueues: The list of Service Bus queue endpoints that IoT hub routes the messages to, based on the routing\nrules.",
                      "items": {
                        "description": "The properties related to service bus queue endpoint types.",
                        "properties": {
                          "authenticationType": {
                            "description": "AuthenticationType: Method used to authenticate against the service bus queue endpoint",
                            "type": "string"
                          },
                          "endpointUri": {
                            "description": "EndpointUri: The url of the service bus queue endpoint. It must include the protocol sb://",
                            "type": "string"
                          },
                          "entityPath": {
                            "description": "EntityPath: Queue name on the service bus namespace",
                            "type": "string"
                          },
                          "id": {
                            "description": "Id: Id of the service bus queue endpoint",
                            "type": "string"
                          },
                          "identity": {
                            "description": "Identity: Managed identity properties of routing service bus queue endpoint.",
                            "properties": {
                              "userAssignedIdentity": {
                                "description": "UserAssignedIdentity: The user assigned identity.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "name": {
                            "description": "Name: The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores,\nhyphens and has a maximum length of 64 characters. The following names are reserved:  events, fileNotifications,\n$default. Endpoint names must be unique across endpoint types. The name need not be the same as the actual queue name.",
                            "type": "string"
                          },
                          "resourceGroup": {
                            "description": "ResourceGroup: The name of the resource group of the service bus queue endpoint.",
                            "type": "string"
                          },
                          "subscriptionId": {
                            "description": "SubscriptionId: The subscription identifier of the service bus queue endpoint.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "serviceBusTopics": {
                      "description": "ServiceBusTopics: The list of Service Bus topic endpoints that the IoT hub routes the messages to, based on the routing\nrules.",
                      "items": {
                        "description": "The properties related to service bus topic endpoint types.",
                        "properties": {
                          "authenticationType": {
                            "description": "AuthenticationType: Method used to authenticate against the service bus topic endpoint",
                            "type": "string"
                          },
                          "endpointUri": {
                            "description": "EndpointUri: The url of the service bus topic endpoint. It must include the protocol sb://",
                            "type": "string"
                          },
                          "entityPath": {
                            "description": "EntityPath: Queue name on the service bus topic",
                            "type": "string"
                          },
                          "id": {
                            "description": "Id: Id of the service bus topic endpoint",
                            "type": "string"
                          },
                          "identity": {
                            "description": "Identity: Managed identity properties of routing service bus topic endpoint.",
                            "properties": {
                              "userAssignedIdentity": {
                                "description": "UserAssignedIdentity: The user assigned identity.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "name": {
                            "description": "Name: The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores,\nhyphens and has a maximum length of 64 characters. The following names are reserved:  events, fileNotifications,\n$default. Endpoint names must be unique across endpoint types.  The name need not be the same as the actual topic name.",
                            "type": "string"
                          },
                          "resourceGroup": {
                            "description": "ResourceGroup: The name of the resource group of the service bus topic endpoint.",
                            "type": "string"
                          },
                          "subscriptionId": {
                            "description": "SubscriptionId: The subscription identifier of the service bus topic endpoint.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "storageContainers": {
                      "description": "StorageContainers: The list of storage container endpoints that IoT hub routes messages to, based on the routing rules.",
                      "items": {
                        "description": "The properties related to a storage container endpoint.",
                        "properties": {
                          "authenticationType": {
                            "description": "AuthenticationType: Method used to authenticate against the storage endpoint",
                            "type": "string"
                          },
                          "batchFrequencyInSeconds": {
                            "description": "BatchFrequencyInSeconds: Time interval at which blobs are written to storage. Value should be between 60 and 720\nseconds. Default value is 300 seconds.",
                            "type": "integer"
                          },
                          "containerName": {
                            "description": "ContainerName: The name of storage container in the storage account.",
                            "type": "string"
                          },
                          "encoding": {
                            "description": "Encoding: Encoding that is used to serialize messages to blobs. Supported values are 'avro', 'avrodeflate', and 'JSON'.\nDefault value is 'avro'.",
                            "type": "string"
                          },
                          "endpointUri": {
                            "description": "EndpointUri: The url of the storage endpoint. It must include the protocol https://",
                            "type": "string"
                          },
                          "fileNameFormat": {
                            "description": "FileNameFormat: File name format for the blob. Default format is {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}. All\nparameters are mandatory but can be reordered.",
                            "type": "string"
                          },
                          "id": {
                            "description": "Id: Id of the storage container endpoint",
                            "type": "string"
                          },
                          "identity": {
                            "description": "Identity: Managed identity properties of routing storage endpoint.",
                            "properties": {
                              "userAssignedIdentity": {
                                "description": "UserAssignedIdentity: The user assigned identity.",
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "maxChunkSizeInBytes": {
                            "description": "MaxChunkSizeInBytes: Maximum number of bytes for each blob written to storage. Value should be between 10485760(10MB)\nand 524288000(500MB). Default value is 314572800(300MB).",
                            "type": "integer"
                          },
                          "name": {
                            "description": "Name: The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores,\nhyphens and has a maximum length of 64 characters. The following names are reserved:  events, fileNotifications,\n$default. Endpoint names must be unique across endpoint types.",
                            "type": "string"
                          },
                          "resourceGroup": {
                            "description": "ResourceGroup: The name of the resource group of the storage account.",
                            "type": "string"
                          },
                          "subscriptionId": {
                            "description": "SubscriptionId: The subscription identifier of the storage account.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "enrichments": {
                  "description": "Enrichments: The list of user-provided enrichments that the IoT hub applies to messages to be delivered to built-in and\ncustom endpoints. See: https://aka.ms/telemetryoneventgrid",
                  "items": {
                    "description": "The properties of an enrichment that your IoT hub applies to messages delivered to endpoints.",
                    "properties": {
                      "endpointNames": {
                        "description": "EndpointNames: The list of endpoints for which the enrichment is applied to the message.",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "key": {
                        "description": "Key: The key or name for the enrichment property.",
                        "type": "string"
                      },
                      "value": {
                        "description": "Value: The value for the enrichment property.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "fallbackRoute": {
                  "description": "FallbackRoute: The properties of the route that is used as a fall-back route when none of the conditions specified in\nthe 'routes' section are met. This is an optional parameter. When this property is not present in the template, the\nfallback route is disabled by default.",
                  "properties": {
                    "condition": {
                      "description": "Condition: The condition which is evaluated in order to apply the fallback route. If the condition is not provided it\nwill evaluate to true by default. For grammar, See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-query-language",
                      "type": "string"
                    },
                    "endpointNames": {
                      "description": "EndpointNames: The list of endpoints to which the messages that satisfy the condition are routed to. Currently only 1\nendpoint is allowed.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "isEnabled": {
                      "description": "IsEnabled: Used to specify whether the fallback route is enabled.",
                      "type": "boolean"
                    },
                    "name": {
                      "description": "Name: The name of the route. The name can only include alphanumeric characters, periods, underscores, hyphens, has a\nmaximum length of 64 characters, and must be unique.",
                      "type": "string"
                    },
                    "source": {
                      "description": "Source: The source to which the routing rule is to be applied to. For example, DeviceMessages",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "routes": {
                  "description": "Routes: The list of user-provided routing rules that the IoT hub uses to route messages to built-in and custom\nendpoints. A maximum of 100 routing rules are allowed for paid hubs and a maximum of 5 routing rules are allowed for\nfree hubs.",
                  "items": {
                    "description": "The properties of a routing rule that your IoT hub uses to route messages to endpoints.",
                    "properties": {
                      "condition": {
                        "description": "Condition: The condition that is evaluated to apply the routing rule. If no condition is provided, it evaluates to true\nby default. For grammar, see: https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-query-language",
                        "type": "string"
                      },
                      "endpointNames": {
                        "description": "EndpointNames: The list of endpoints to which messages that satisfy the condition are routed. Currently only one\nendpoint is allowed.",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "isEnabled": {
                        "description": "IsEnabled: Used to specify whether a route is enabled.",
                        "type": "boolean"
                      },
                      "name": {
                        "description": "Name: The name of the route. The name can only include alphanumeric characters, periods, underscores, hyphens, has a\nmaximum length of 64 characters, and must be unique.",
                        "type": "string"
                      },
                      "source": {
                        "description": "Source: The source that the routing rule is to be applied to, such as DeviceMessages.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "state": {
              "description": "State: The hub state.",
              "type": "string"
            },
            "storageEndpoints": {
              "additionalProperties": {
                "description": "The properties of the Azure Storage endpoint for file upload.",
                "properties": {
                  "authenticationType": {
                    "description": "AuthenticationType: Specifies authentication type being used for connecting to the storage account.",
                    "type": "string"
                  },
                  "containerName": {
                    "description": "ContainerName: The name of the root container where you upload files. The container need not exist but should be\ncreatable using the connectionString specified.",
                    "type": "string"
                  },
                  "identity": {
                    "description": "Identity: Managed identity properties of storage endpoint for file upload.",
                    "properties": {
                      "userAssignedIdentity": {
                        "description": "UserAssignedIdentity: The user assigned identity.",
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "sasTtlAsIso8601": {
                    "description": "SasTtlAsIso8601: The period of time for which the SAS URI generated by IoT Hub for file upload is valid. See:\nhttps://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-file-upload#file-upload-notification-configuration-options.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "description": "StorageEndpoints: The list of Azure Storage endpoints where you can upload files. Currently you can configure only one\nAzure Storage account and that MUST have its key as $default. Specifying more than one storage account causes an error\nto be thrown. Not specifying a value for this property when the enableFileUploadNotifications property is set to True,\ncauses an error to be thrown.",
              "type": "object"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "sku": {
          "description": "Sku: IotHub SKU info",
          "properties": {
            "capacity": {
              "description": "Capacity: The number of provisioned IoT Hub units. See:\nhttps://docs.microsoft.com/azure/azure-subscription-service-limits#iot-hub-limits.",
              "type": "integer"
            },
            "name": {
              "description": "Name: The name of the SKU.",
              "type": "string"
            },
            "tier": {
              "description": "Tier: The billing tier for the IoT hub.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "systemData": {
          "description": "SystemData: The system meta data relating to this 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: The resource tags.",
          "type": "object"
        },
        "type": {
          "description": "Type: The resource type.",
          "type": "string"
        },
        "additionalProperties": false
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
