// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
//   protoc-gen-ts_proto  v2.6.1
//   protoc               v3.17.1
// source: policy/iam/IAM.proto

/* eslint-disable */
import { type Any } from "google-protobuf/google/protobuf/any_pb.js";
import { type Metadata } from "../../common/Metadata.js";
import { type PayLoadIdentifier } from "../common/PayLoadIdentifier.js";

/** Copyright Super iPaaS Integration LLC, an IBM Company 2024 */

/** The IAM related information is captured in the message IAM. */
export interface IAM {
  kind?: string | undefined;
  apiVersion?:
    | string
    | undefined;
  /** common metadata to identify a specific asset in the files */
  metadata?: Metadata | undefined;
  kindEnum?: IAM_KindEnums | undefined;
  spec?: IAM_Spec | undefined;
}

/** Kind id supported for iam */
export enum IAM_KindEnums {
  IdentifyAndAuthorize = "IdentifyAndAuthorize",
}

/** The message specified the information related to API Key */
export interface IAM_Apikey {
  applicationLookup?: string | undefined;
}

/** The message specified the information related to SSL Hostname address */
export interface IAM_HostNameAddress {
  applicationLookup?: string | undefined;
}

/** The message specified the information related to HTTP Basic Authentication */
export interface IAM_HttpBasicAuth {
  applicationLookup?: string | undefined;
}

/** The message specified the information related to IP Address range */
export interface IAM_IpaddressRange {
  applicationLookup?: string | undefined;
}

/** The message specified the information related to Java Web Tokens */
export interface IAM_Jwt {
  applicationLookup?: string | undefined;
}

/** The message specified the information related to SSL Kerberos Token */
export interface IAM_KerberosToken {
  applicationLookup?: string | undefined;
  servicePrincipalName?: string | undefined;
  servicePrincipalPassword?: string | undefined;
}

/** The message specified the information related to Open ID connect */
export interface IAM_OpenIDConnect {
  applicationLookup?: string | undefined;
}

/** The message specified the information related to SSL Certificate */
export interface IAM_SslCertificate {
  applicationLookup?: string | undefined;
}

/** The message specified the information related to Payload Element */
export interface IAM_PayloadElement {
  applicationLookup?: string | undefined;
  payLoadIdentifier?: PayLoadIdentifier[] | undefined;
}

/** The message specified the information related to HTTP Headers */
export interface IAM_HttpHeaders {
  applicationLookup?: string | undefined;
}

/** The message specified the information related to Or */
export interface IAM_LogicalCondition {
  apiKey?: IAM_Apikey | undefined;
  hostNameAddress?: IAM_HostNameAddress | undefined;
  httpBasicAuth?: IAM_HttpBasicAuth | undefined;
  ipAddressRange?: IAM_IpaddressRange | undefined;
  jwt?: IAM_Jwt | undefined;
  kerberosToken?: IAM_KerberosToken | undefined;
  oAuth2Token?: Any | undefined;
  openIdConnect?: IAM_OpenIDConnect | undefined;
  sslCertificate?: IAM_SslCertificate | undefined;
  payloadElement?: IAM_PayloadElement | undefined;
  httpHeaders?: IAM_HttpHeaders | undefined;
}

/** The message specified the information related to Identification Type */
export interface IAM_IdentificationType {
  or?: IAM_LogicalCondition | undefined;
  and?: IAM_LogicalCondition | undefined;
}

/** The Spec is used to define the list of enable, trigger policy violation and Identification type */
export interface IAM_Spec {
  /** Can be enabled or disabled */
  enabled?:
    | boolean
    | undefined;
  /** Trigger Policy Violation can be enabled or disabled */
  triggerPolicyViolation?:
    | boolean
    | undefined;
  /** Single instance of Identification type can be given */
  identificationType?: IAM_IdentificationType | undefined;
}
