/* 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 K8SRequestAuthenticationV1 {
  /**
   * Request authentication configuration for workloads. See more details at: https://istio.io/docs/reference/config/security/request_authentication.html
   */
  spec?: {
    /**
     * Define the list of JWTs that can be validated at the selected workloads' proxy.
     *
     * @maxItems 4096
     */
    jwtRules?: {
      /**
       * The list of JWT [audiences](https://tools.ietf.org/html/rfc7519#section-4.1.3) that are allowed to access.
       */
      audiences?: string[];
      /**
       * If set to true, the original token will be kept for the upstream request.
       */
      forwardOriginalToken?: boolean;
      /**
       * List of cookie names from which JWT is expected.
       */
      fromCookies?: string[];
      /**
       * List of header locations from which JWT is expected.
       */
      fromHeaders?: {
        /**
         * The HTTP header name.
         */
        name: string;
        /**
         * The prefix that should be stripped before decoding the token.
         */
        prefix?: string;
      }[];
      /**
       * List of query parameters from which JWT is expected.
       */
      fromParams?: string[];
      /**
       * Identifies the issuer that issued the JWT.
       */
      issuer: string;
      /**
       * JSON Web Key Set of public keys to validate signature of the JWT.
       */
      jwks?: string;
      /**
       * URL of the provider's public key set to validate signature of the JWT.
       */
      jwksUri?: string;
      /**
       * URL of the provider's public key set to validate signature of the JWT.
       */
      jwks_uri?: string;
      /**
       * This field specifies a list of operations to copy the claim to HTTP headers on a successfully verified token.
       */
      outputClaimToHeaders?: {
        /**
         * The name of the claim to be copied from.
         */
        claim: string;
        /**
         * The name of the header to be created.
         */
        header: string;
      }[];
      /**
       * This field specifies the header name to output a successfully verified JWT payload to the backend.
       */
      outputPayloadToHeader?: string;
      /**
       * The maximum amount of time that the resolver, determined by the PILOT_JWT_ENABLE_REMOTE_JWKS environment variable, will spend waiting for the JWKS to be fetched.
       */
      timeout?: string;
    }[];
    /**
     * Optional.
     */
    selector?: {
      /**
       * One or more labels that indicate a specific set of pods/VMs on which a policy should be applied.
       */
      matchLabels?: {
        [k: string]: string;
      };
    };
    targetRef?: {
      /**
       * group is the group of the target resource.
       */
      group?: string;
      /**
       * kind is kind of the target resource.
       */
      kind: string;
      /**
       * name is the name of the target resource.
       */
      name: string;
      /**
       * namespace is the namespace of the referent.
       */
      namespace?: string;
    };
    /**
     * Optional.
     *
     * @maxItems 16
     */
    targetRefs?:
      | []
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: 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;
      };
    }[];
  };
}
