/* eslint-disable */
/**
 * This file was automatically generated by json-schema-to-typescript.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run json-schema-to-typescript to regenerate this file.
 */

export interface K8SGatewayV1Alpha3 {
  /**
   * Configuration affecting edge load balancer. See more details at: https://istio.io/docs/reference/config/networking/gateway.html
   */
  spec?: {
    /**
     * One or more labels that indicate a specific set of pods/VMs on which this gateway configuration should be applied.
     */
    selector?: {
      [k: string]: string;
    };
    /**
     * A list of server specifications.
     */
    servers?: {
      /**
       * The ip or the Unix domain socket to which the listener should be bound to.
       */
      bind?: string;
      defaultEndpoint?: string;
      /**
       * One or more hosts exposed by this gateway.
       */
      hosts: string[];
      /**
       * An optional name of the server, when set must be unique across all servers.
       */
      name?: string;
      /**
       * The Port on which the proxy should listen for incoming connections.
       */
      port: {
        /**
         * Label assigned to the port.
         */
        name: string;
        /**
         * A valid non-negative integer port number.
         */
        number: number;
        /**
         * The protocol exposed on the port.
         */
        protocol: string;
        targetPort?: number;
      };
      /**
       * Set of TLS related options that govern the server's behavior.
       */
      tls?: {
        /**
         * REQUIRED if mode is `MUTUAL` or `OPTIONAL_MUTUAL`.
         */
        caCertificates?: string;
        /**
         * OPTIONAL: The path to the file containing the certificate revocation list (CRL) to use in verifying a presented client side certificate.
         */
        caCrl?: string;
        /**
         * Optional: If specified, only support the specified cipher list.
         */
        cipherSuites?: string[];
        /**
         * For gateways running on Kubernetes, the name of the secret that holds the TLS certs including the CA certificates.
         */
        credentialName?: string;
        /**
         * If set to true, the load balancer will send a 301 redirect for all http connections, asking the clients to use HTTPS.
         */
        httpsRedirect?: boolean;
        /**
         * Optional: Maximum TLS protocol version.
         *
         * Valid Options: TLS_AUTO, TLSV1_0, TLSV1_1, TLSV1_2, TLSV1_3
         */
        maxProtocolVersion?: "TLS_AUTO" | "TLSV1_0" | "TLSV1_1" | "TLSV1_2" | "TLSV1_3";
        /**
         * Optional: Minimum TLS protocol version.
         *
         * Valid Options: TLS_AUTO, TLSV1_0, TLSV1_1, TLSV1_2, TLSV1_3
         */
        minProtocolVersion?: "TLS_AUTO" | "TLSV1_0" | "TLSV1_1" | "TLSV1_2" | "TLSV1_3";
        /**
         * Optional: Indicates whether connections to this port should be secured using TLS.
         *
         * Valid Options: PASSTHROUGH, SIMPLE, MUTUAL, AUTO_PASSTHROUGH, ISTIO_MUTUAL, OPTIONAL_MUTUAL
         */
        mode?: "PASSTHROUGH" | "SIMPLE" | "MUTUAL" | "AUTO_PASSTHROUGH" | "ISTIO_MUTUAL" | "OPTIONAL_MUTUAL";
        /**
         * REQUIRED if mode is `SIMPLE` or `MUTUAL`.
         */
        privateKey?: string;
        /**
         * REQUIRED if mode is `SIMPLE` or `MUTUAL`.
         */
        serverCertificate?: string;
        /**
         * A list of alternate names to verify the subject identity in the certificate presented by the client.
         */
        subjectAltNames?: string[];
        /**
         * An optional list of hex-encoded SHA-256 hashes of the authorized client certificates.
         */
        verifyCertificateHash?: string[];
        /**
         * An optional list of base64-encoded SHA-256 hashes of the SPKIs of authorized client certificates.
         */
        verifyCertificateSpki?: string[];
      };
    }[];
  };
  status?: {
    /**
     * Current service state of the resource.
     */
    conditions?: {
      /**
       * Last time we probed the condition.
       */
      lastProbeTime?: string;
      /**
       * Last time the condition transitioned from one status to another.
       */
      lastTransitionTime?: string;
      /**
       * Human-readable message indicating details about last transition.
       */
      message?: string;
      /**
       * Unique, one-word, CamelCase reason for the condition's last transition.
       */
      reason?: string;
      /**
       * Status is the status of the condition.
       */
      status?: string;
      /**
       * Type is the type of the condition.
       */
      type?: string;
    }[];
    /**
     * Resource Generation to which the Reconciled Condition refers.
     */
    observedGeneration?: number | string;
    /**
     * Includes any errors or warnings detected by Istio's analyzers.
     */
    validationMessages?: {
      /**
       * A url pointing to the Istio documentation for this specific error type.
       */
      documentationUrl?: string;
      /**
       * Represents how severe a message is.
       *
       * Valid Options: UNKNOWN, ERROR, WARNING, INFO
       */
      level?: "UNKNOWN" | "ERROR" | "WARNING" | "INFO";
      type?: {
        /**
         * A 7 character code matching `^IST[0-9]{4}$` intended to uniquely identify the message type.
         */
        code?: string;
        /**
         * A human-readable name for the message type.
         */
        name?: string;
      };
    }[];
  };
}
