{
  "description": "OpenSSHEICEServerV2 is the Schema for the openssheiceserversv2 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": "OpenSSHEICEServer resource definition v2 from Teleport",
      "properties": {
        "addr": {
          "description": "Addr is a host:port address where this server can be reached.",
          "type": "string"
        },
        "cloud_metadata": {
          "description": "CloudMetadata contains info about the cloud instance the server is running on, if any.",
          "nullable": true,
          "properties": {
            "aws": {
              "description": "AWSInfo contains attributes to match to an EC2 instance.",
              "nullable": true,
              "properties": {
                "account_id": {
                  "description": "AccountID is an AWS account ID.",
                  "type": "string"
                },
                "instance_id": {
                  "description": "InstanceID is an EC2 instance ID.",
                  "type": "string"
                },
                "integration": {
                  "description": "Integration is the integration name that added this Node. When connecting to it, it will use this integration to issue AWS API calls in order to set up the connection. This includes sending an SSH Key and then opening a tunnel (EC2 Instance Connect Endpoint) so Teleport can connect to it.",
                  "type": "string"
                },
                "region": {
                  "description": "Region is the AWS EC2 Instance Region.",
                  "type": "string"
                },
                "subnet_id": {
                  "description": "SubnetID is the Subnet ID in use by the instance.",
                  "type": "string"
                },
                "vpc_id": {
                  "description": "VPCID is the AWS VPC ID where the Instance is running.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "github": {
          "description": "GitHub contains info about GitHub proxies where each server represents a GitHub organization.",
          "nullable": true,
          "properties": {
            "integration": {
              "description": "Integration is the integration that is associated with this Server.",
              "type": "string"
            },
            "organization": {
              "description": "Organization specifies the name of the organization for the GitHub integration.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "hostname": {
          "description": "Hostname is server hostname",
          "type": "string"
        },
        "peer_addr": {
          "description": "PeerAddr is the address a proxy server is reachable at by its peer proxies.",
          "type": "string"
        },
        "proxy_ids": {
          "description": "ProxyIDs is a list of proxy IDs this server is expected to be connected to.",
          "items": {
            "type": "string"
          },
          "nullable": true,
          "type": "array"
        },
        "public_addrs": {
          "description": "PublicAddrs is a list of public addresses where this server can be reached.",
          "items": {
            "type": "string"
          },
          "nullable": true,
          "type": "array"
        },
        "relay_group": {
          "description": "the name of the Relay group that the server is connected to",
          "type": "string"
        },
        "relay_ids": {
          "description": "the list of Relay host IDs that the server is connected to",
          "items": {
            "type": "string"
          },
          "nullable": true,
          "type": "array"
        },
        "rotation": {
          "description": "Rotation specifies server rotation",
          "properties": {
            "current_id": {
              "description": "CurrentID is the ID of the rotation operation to differentiate between rotation attempts.",
              "type": "string"
            },
            "grace_period": {
              "description": "GracePeriod is a period during which old and new CA are valid for checking purposes, but only new CA is issuing certificates.",
              "format": "duration",
              "type": "string"
            },
            "last_rotated": {
              "description": "LastRotated specifies the last time of the completed rotation.",
              "format": "date-time",
              "type": "string"
            },
            "mode": {
              "description": "Mode sets manual or automatic rotation mode.",
              "type": "string"
            },
            "phase": {
              "description": "Phase is the current rotation phase.",
              "type": "string"
            },
            "schedule": {
              "description": "Schedule is a rotation schedule - used in automatic mode to switch between phases.",
              "properties": {
                "standby": {
                  "description": "Standby specifies time to switch to the \"Standby\" phase.",
                  "format": "date-time",
                  "type": "string"
                },
                "update_clients": {
                  "description": "UpdateClients specifies time to switch to the \"Update clients\" phase",
                  "format": "date-time",
                  "type": "string"
                },
                "update_servers": {
                  "description": "UpdateServers specifies time to switch to the \"Update servers\" phase.",
                  "format": "date-time",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "started": {
              "description": "Started is set to the time when rotation has been started in case if the state of the rotation is \"in_progress\".",
              "format": "date-time",
              "type": "string"
            },
            "state": {
              "description": "State could be one of \"init\" or \"in_progress\".",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "use_tunnel": {
          "description": "UseTunnel indicates that connections to this server should occur over a reverse tunnel.",
          "type": "boolean"
        },
        "version": {
          "description": "TeleportVersion is the teleport version that the server is running on",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "Status defines the observed state of the Teleport resource",
      "properties": {
        "conditions": {
          "description": "Conditions represent the latest available observations of an object's state",
          "items": {
            "description": "Condition contains details for one aspect of the current state of this API Resource.",
            "properties": {
              "lastTransitionTime": {
                "description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.",
                "maxLength": 32768,
                "type": "string"
              },
              "observedGeneration": {
                "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.",
                "format": "int64",
                "minimum": 0,
                "type": "integer"
              },
              "reason": {
                "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.",
                "maxLength": 1024,
                "minLength": 1,
                "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$",
                "type": "string"
              },
              "status": {
                "description": "status of the condition, one of True, False, Unknown.",
                "enum": [
                  "True",
                  "False",
                  "Unknown"
                ],
                "type": "string"
              },
              "type": {
                "description": "type of condition in CamelCase or in foo.example.com/CamelCase.",
                "maxLength": 316,
                "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$",
                "type": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "message",
              "reason",
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "teleportResourceID": {
          "format": "int64",
          "type": "integer"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
