{
  "description": "AzureMachineTemplate is the Schema for the azuremachinetemplates API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More 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. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "AzureMachineTemplateSpec defines the desired state of AzureMachineTemplate",
      "properties": {
        "template": {
          "description": "AzureMachineTemplateResource describes the data needed to create am AzureMachine from a template",
          "properties": {
            "spec": {
              "description": "Spec is the specification of the desired behavior of the machine.",
              "properties": {
                "additionalTags": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "AdditionalTags is an optional set of tags to add to an instance, in addition to the ones added by default by the Azure provider. If both the AzureCluster and the AzureMachine specify the same tag name with different values, the AzureMachine's value takes precedence.",
                  "type": "object"
                },
                "allocatePublicIP": {
                  "description": "AllocatePublicIP allows the ability to create dynamic public ips for machines where this value is true.",
                  "type": "boolean"
                },
                "availabilityZone": {
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "id": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "image": {
                  "description": "Image defines information about the image to use for VM creation. There are three ways to specify an image: by ID, by publisher, or by Shared Image Gallery. If specifying an image by ID, only the ID field needs to be set. If specifying an image by publisher, the Publisher, Offer, SKU, and Version fields must be set. If specifying an image from a Shared Image Gallery, the SubscriptionID, ResourceGroup, Gallery, Name, and Version fields must be set.",
                  "properties": {
                    "gallery": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "offer": {
                      "type": "string"
                    },
                    "publisher": {
                      "type": "string"
                    },
                    "resourceGroup": {
                      "type": "string"
                    },
                    "sku": {
                      "type": "string"
                    },
                    "subscriptionID": {
                      "type": "string"
                    },
                    "version": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "location": {
                  "type": "string"
                },
                "osDisk": {
                  "properties": {
                    "diskSizeGB": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "managedDisk": {
                      "properties": {
                        "storageAccountType": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "storageAccountType"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "osType": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "diskSizeGB",
                    "managedDisk",
                    "osType"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "providerID": {
                  "description": "ProviderID is the unique identifier as specified by the cloud provider.",
                  "type": "string"
                },
                "sshPublicKey": {
                  "type": "string"
                },
                "vmSize": {
                  "type": "string"
                }
              },
              "required": [
                "location",
                "osDisk",
                "sshPublicKey",
                "vmSize"
              ],
              "type": "object",
              "additionalProperties": false
            }
          },
          "required": [
            "spec"
          ],
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "template"
      ],
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
