{
  "description": "Auto-generated derived type for ExitNodeProvisionerSpec via `CustomResource`",
  "properties": {
    "spec": {
      "description": "ExitNodeProvisioner is a custom resource that represents a Chisel exit node provisioner on a cloud provider.",
      "oneOf": [
        {
          "required": [
            "DigitalOcean"
          ]
        },
        {
          "required": [
            "Linode"
          ]
        },
        {
          "required": [
            "AWS"
          ]
        }
      ],
      "properties": {
        "AWS": {
          "properties": {
            "auth": {
              "description": "Reference to a secret containing the AWS access key ID and secret access key, under the `access_key_id` and `secret_access_key` secret keys",
              "type": "string"
            },
            "region": {
              "description": "Region ID for the AWS region to provision the exit node in See https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html",
              "type": "string"
            },
            "security_group": {
              "description": "Security group name to use for the exit node, uses the default security group if not specified",
              "nullable": true,
              "type": "string"
            },
            "size": {
              "default": "t2.micro",
              "description": "Size for the EC2 instance See https://aws.amazon.com/ec2/instance-types/",
              "type": "string"
            }
          },
          "required": [
            "auth",
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "DigitalOcean": {
          "properties": {
            "auth": {
              "description": "Reference to a secret containing the DigitalOcean API token, under the `DIGITALOCEAN_TOKEN` secret key",
              "type": "string"
            },
            "region": {
              "default": "",
              "description": "Region ID of the DigitalOcean datacenter to provision the exit node in If empty, DigitalOcean will randomly select a region for you, which might not be what you want See https://slugs.do-api.dev/",
              "type": "string"
            },
            "size": {
              "default": "s-1vcpu-1gb",
              "description": "Size for the DigitalOcean droplet See https://slugs.do-api.dev/",
              "type": "string"
            },
            "ssh_fingerprints": {
              "default": [],
              "description": "SSH key fingerprints to add to the exit node",
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "required": [
            "auth"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "Linode": {
          "properties": {
            "auth": {
              "description": "Name of the secret containing the Linode API token, under the `LINODE_TOKEN` secret key",
              "type": "string"
            },
            "region": {
              "description": "Region ID of the Linode datacenter to provision the exit node in See https://api.linode.com/v4/regions",
              "type": "string"
            },
            "size": {
              "default": "g6-nanode-1",
              "description": "Size for the Linode instance See https://api.linode.com/v4/linode/",
              "type": "string"
            }
          },
          "required": [
            "auth",
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "title": "ExitNodeProvisioner",
  "type": "object"
}
