/* 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 K8SServiceEntryV1Beta1 {
  /**
   * Configuration affecting service registry. See more details at: https://istio.io/docs/reference/config/networking/service-entry.html
   */
  spec: {
    /**
     * The virtual IP addresses associated with the service.
     *
     * @maxItems 256
     */
    addresses?: string[];
    /**
     * One or more endpoints associated with the service.
     *
     * @maxItems 4096
     */
    endpoints?: {
      /**
       * Address associated with the network endpoint without the port.
       */
      address?: string;
      /**
       * One or more labels associated with the endpoint.
       */
      labels?: {
        [k: string]: string;
      };
      /**
       * The locality associated with the endpoint.
       */
      locality?: string;
      /**
       * Network enables Istio to group endpoints resident in the same L3 domain/network.
       */
      network?: string;
      /**
       * Set of ports associated with the endpoint.
       */
      ports?: {
        [k: string]: number;
      };
      /**
       * The service account associated with the workload if a sidecar is present in the workload.
       */
      serviceAccount?: string;
      /**
       * The load balancing weight associated with the endpoint.
       */
      weight?: number;
    }[];
    /**
     * A list of namespaces to which this service is exported.
     */
    exportTo?: string[];
    /**
     * The hosts associated with the ServiceEntry.
     *
     * @minItems 1
     * @maxItems 256
     */
    hosts: [string, ...string[]];
    /**
     * Specify whether the service should be considered external to the mesh or part of the mesh.
     *
     * Valid Options: MESH_EXTERNAL, MESH_INTERNAL
     */
    location?: string;
    /**
     * The ports associated with the external service.
     *
     * @maxItems 256
     */
    ports?: {
      /**
       * Label assigned to the port.
       */
      name: string;
      /**
       * A valid non-negative integer port number.
       */
      number: number;
      /**
       * The protocol exposed on the port.
       */
      protocol?: string;
      /**
       * The port number on the endpoint where the traffic will be received.
       */
      targetPort?: number;
    }[];
    /**
     * Service resolution mode for the hosts.
     *
     * Valid Options: NONE, STATIC, DNS, DNS_ROUND_ROBIN
     */
    resolution?: string;
    /**
     * If specified, the proxy will verify that the server certificate's subject alternate name matches one of the specified values.
     */
    subjectAltNames?: string[];
    /**
     * Applicable only for MESH_INTERNAL services.
     */
    workloadSelector?: {
      /**
       * One or more labels that indicate a specific set of pods/VMs on which the configuration should be applied.
       */
      labels?: {
        [k: string]: 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;
      };
    }[];
  };
}
