// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) Go Code Generator. DO NOT EDIT.

package armiotoperations

import "time"

// AdvancedSettings - Broker Advanced Settings
type AdvancedSettings struct {
	// Configurations related to All Clients.
	Clients *ClientConfig

	// The setting to enable or disable encryption of internal Traffic.
	EncryptInternalTraffic *OperationalMode

	// Certificate rotation and private key configuration.
	InternalCerts *CertManagerCertOptions
}

// AuthorizationConfig - Broker AuthorizationConfig properties
type AuthorizationConfig struct {
	// Enable caching of the authorization rules.
	Cache *OperationalMode

	// The authorization rules to follow. If no rule is set, but Authorization Resource is used that would mean DenyAll.
	Rules []*AuthorizationRule
}

// AuthorizationRule - AuthorizationConfig Rule Properties
type AuthorizationRule struct {
	// REQUIRED; Give access to Broker methods and topics.
	BrokerResources []*BrokerResourceRule

	// REQUIRED; Give access to clients based on the following properties.
	Principals *PrincipalDefinition

	// Give access to state store resources.
	StateStoreResources []*StateStoreResourceRule
}

// BackendChain - Desired properties of the backend instances of the broker
type BackendChain struct {
	// REQUIRED; The desired number of physical backend partitions.
	Partitions *int32

	// REQUIRED; The desired numbers of backend replicas (pods) in a physical partition.
	RedundancyFactor *int32

	// Number of logical backend workers per replica (pod).
	Workers *int32
}

// BatchingConfiguration - Batching configuration
type BatchingConfiguration struct {
	// Batching latency in seconds.
	LatencySeconds *int32

	// Maximum number of messages in a batch.
	MaxMessages *int32
}

// BrokerAuthenticationProperties - BrokerAuthentication Resource properties
type BrokerAuthenticationProperties struct {
	// REQUIRED; Defines a set of Broker authentication methods to be used on `BrokerListeners`. For each array element one authenticator
	// type supported.
	AuthenticationMethods []*BrokerAuthenticatorMethods

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// BrokerAuthenticationResource - Instance broker authentication resource
type BrokerAuthenticationResource struct {
	// REQUIRED; Edge location of the resource.
	ExtendedLocation *ExtendedLocation

	// The resource-specific properties for this resource.
	Properties *BrokerAuthenticationProperties

	// READ-ONLY; Name of Instance broker authentication resource
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// BrokerAuthenticationResourceListResult - The response of a BrokerAuthenticationResource list operation.
type BrokerAuthenticationResourceListResult struct {
	// REQUIRED; The BrokerAuthenticationResource items on this page
	Value []*BrokerAuthenticationResource

	// The link to the next page of items
	NextLink *string
}

// BrokerAuthenticatorCustomAuth - Custom Authentication properties
type BrokerAuthenticatorCustomAuth struct {
	// REQUIRED; X509 Custom Auth type details.
	X509 *X509ManualCertificate
}

// BrokerAuthenticatorMethodCustom - Custom method for BrokerAuthentication
type BrokerAuthenticatorMethodCustom struct {
	// REQUIRED; Endpoint of the custom authentication server. Must be an HTTPS endpoint.
	Endpoint *string

	// Optional authentication needed for authenticating with the custom authentication server.
	Auth *BrokerAuthenticatorCustomAuth

	// Optional CA certificate for validating the custom authentication server's certificate.
	CaCertConfigMap *string

	// Additional HTTP headers to pass to the custom authentication server.
	Headers map[string]*string
}

// BrokerAuthenticatorMethodSat - Service Account Token for BrokerAuthentication
type BrokerAuthenticatorMethodSat struct {
	// REQUIRED; List of allowed audience.
	Audiences []*string
}

// BrokerAuthenticatorMethodX509 - X509 for BrokerAuthentication.
type BrokerAuthenticatorMethodX509 struct {
	// X509 authorization attributes properties.
	AuthorizationAttributes map[string]*BrokerAuthenticatorMethodX509Attributes

	// Name of the trusted client ca cert resource.
	TrustedClientCaCert *string
}

// BrokerAuthenticatorMethodX509Attributes properties.
type BrokerAuthenticatorMethodX509Attributes struct {
	// REQUIRED; Attributes object.
	Attributes map[string]*string

	// REQUIRED; Subject of the X509 attribute.
	Subject *string
}

// BrokerAuthenticatorMethods - Set of broker authentication policies. Only one method is supported for each entry.
type BrokerAuthenticatorMethods struct {
	// REQUIRED; Custom authentication configuration.
	Method *BrokerAuthenticationMethod

	// Custom authentication configuration.
	CustomSettings *BrokerAuthenticatorMethodCustom

	// ServiceAccountToken authentication configuration.
	ServiceAccountTokenSettings *BrokerAuthenticatorMethodSat

	// X.509 authentication configuration.
	X509Settings *BrokerAuthenticatorMethodX509
}

// BrokerAuthorizationProperties - BrokerAuthorization Resource properties
type BrokerAuthorizationProperties struct {
	// REQUIRED; The list of authorization policies supported by the Authorization Resource.
	AuthorizationPolicies *AuthorizationConfig

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// BrokerAuthorizationResource - Instance broker authorizations resource
type BrokerAuthorizationResource struct {
	// REQUIRED; Edge location of the resource.
	ExtendedLocation *ExtendedLocation

	// The resource-specific properties for this resource.
	Properties *BrokerAuthorizationProperties

	// READ-ONLY; Name of Instance broker authorization resource
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// BrokerAuthorizationResourceListResult - The response of a BrokerAuthorizationResource list operation.
type BrokerAuthorizationResourceListResult struct {
	// REQUIRED; The BrokerAuthorizationResource items on this page
	Value []*BrokerAuthorizationResource

	// The link to the next page of items
	NextLink *string
}

// BrokerDiagnostics - Broker Diagnostic Setting properties
type BrokerDiagnostics struct {
	// Diagnostic log settings for the resource.
	Logs *DiagnosticsLogs

	// The metrics settings for the resource.
	Metrics *Metrics

	// The self check properties.
	SelfCheck *SelfCheck

	// The trace properties.
	Traces *Traces
}

// BrokerListenerProperties - Defines a Broker listener. A listener is a collection of ports on which the broker accepts connections
// from clients.
type BrokerListenerProperties struct {
	// REQUIRED; Ports on which this listener accepts client connections.
	Ports []*ListenerPort

	// Kubernetes Service name of this listener.
	ServiceName *string

	// Kubernetes Service type of this listener.
	ServiceType *ServiceType

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// BrokerListenerResource - Instance broker resource
type BrokerListenerResource struct {
	// REQUIRED; Edge location of the resource.
	ExtendedLocation *ExtendedLocation

	// The resource-specific properties for this resource.
	Properties *BrokerListenerProperties

	// READ-ONLY; Name of Instance broker listener resource
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// BrokerListenerResourceListResult - The response of a BrokerListenerResource list operation.
type BrokerListenerResourceListResult struct {
	// REQUIRED; The BrokerListenerResource items on this page
	Value []*BrokerListenerResource

	// The link to the next page of items
	NextLink *string
}

// BrokerProperties - Broker Resource properties
type BrokerProperties struct {
	// Advanced settings of Broker.
	Advanced *AdvancedSettings

	// The cardinality details of the broker.
	Cardinality *Cardinality

	// Spec defines the desired identities of Broker diagnostics settings.
	Diagnostics *BrokerDiagnostics

	// Settings of Disk Backed Message Buffer.
	DiskBackedMessageBuffer *DiskBackedMessageBuffer

	// This setting controls whether Kubernetes CPU resource limits are requested. Increasing the number of replicas or workers
	// proportionally increases the amount of CPU resources requested. If this setting is enabled and there are insufficient CPU
	// resources, an error will be emitted.
	GenerateResourceLimits *GenerateResourceLimits

	// Memory profile of Broker.
	MemoryProfile *BrokerMemoryProfile

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// BrokerResource - Instance broker resource
type BrokerResource struct {
	// REQUIRED; Edge location of the resource.
	ExtendedLocation *ExtendedLocation

	// The resource-specific properties for this resource.
	Properties *BrokerProperties

	// READ-ONLY; Name of broker.
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// BrokerResourceListResult - The response of a BrokerResource list operation.
type BrokerResourceListResult struct {
	// REQUIRED; The BrokerResource items on this page
	Value []*BrokerResource

	// The link to the next page of items
	NextLink *string
}

// BrokerResourceRule - Broker Resource Rule properties. This defines the objects that represent the actions or topics, such
// as - method.Connect, method.Publish, etc.
type BrokerResourceRule struct {
	// REQUIRED; Give access for a Broker method (i.e., Connect, Subscribe, or Publish).
	Method *BrokerResourceDefinitionMethods

	// A list of client IDs that match the clients. The client IDs are case-sensitive and must match the client IDs provided by
	// the clients during connection. This subfield may be set if the method is Connect.
	ClientIDs []*string

	// A list of topics or topic patterns that match the topics that the clients can publish or subscribe to. This subfield is
	// required if the method is Publish or Subscribe.
	Topics []*string
}

// Cardinality properties
type Cardinality struct {
	// REQUIRED; The backend broker desired properties
	BackendChain *BackendChain

	// REQUIRED; The frontend desired properties
	Frontend *Frontend
}

// CertManagerCertOptions - Cert Manager Cert properties
type CertManagerCertOptions struct {
	// REQUIRED; Lifetime of certificate. Must be specified using a Go time.Duration format (h|m|s). E.g. 240h for 240 hours and
	// 45m for 45 minutes.
	Duration *string

	// REQUIRED; Configuration of certificate private key.
	PrivateKey *CertManagerPrivateKey

	// REQUIRED; When to begin renewing certificate. Must be specified using a Go time.Duration format (h|m|s). E.g. 240h for
	// 240 hours and 45m for 45 minutes.
	RenewBefore *string
}

// CertManagerCertificateSpec - Automatic TLS server certificate management with cert-manager
type CertManagerCertificateSpec struct {
	// REQUIRED; cert-manager issuerRef.
	IssuerRef *CertManagerIssuerRef

	// Lifetime of certificate. Must be specified using a Go time.Duration format (h|m|s). E.g. 240h for 240 hours and 45m for
	// 45 minutes.
	Duration *string

	// Type of certificate private key.
	PrivateKey *CertManagerPrivateKey

	// When to begin renewing certificate. Must be specified using a Go time.Duration format (h|m|s). E.g. 240h for 240 hours
	// and 45m for 45 minutes.
	RenewBefore *string

	// Additional Subject Alternative Names (SANs) to include in the certificate.
	San *SanForCert

	// Secret for storing server certificate. Any existing data will be overwritten. This is a reference to the secret through
	// an identifying name, not the secret itself.
	SecretName *string
}

// CertManagerIssuerRef - Cert-Manager issuerRef properties
type CertManagerIssuerRef struct {
	// REQUIRED; group of issuer.
	Group *string

	// REQUIRED; kind of issuer (Issuer or ClusterIssuer).
	Kind *CertManagerIssuerKind

	// REQUIRED; name of issuer.
	Name *string
}

// CertManagerPrivateKey - Cert Manager private key properties
type CertManagerPrivateKey struct {
	// REQUIRED; algorithm for private key.
	Algorithm *PrivateKeyAlgorithm

	// REQUIRED; cert-manager private key rotationPolicy.
	RotationPolicy *PrivateKeyRotationPolicy
}

// ClientConfig - The settings of Client Config.
type ClientConfig struct {
	// Upper bound of a client's Keep Alive, in seconds.
	MaxKeepAliveSeconds *int32

	// Upper bound of Message Expiry Interval, in seconds.
	MaxMessageExpirySeconds *int32

	// Max message size for a packet in Bytes.
	MaxPacketSizeBytes *int32

	// Upper bound of Receive Maximum that a client can request in the CONNECT packet.
	MaxReceiveMaximum *int32

	// Upper bound of Session Expiry Interval, in seconds.
	MaxSessionExpirySeconds *int32

	// The limit on the number of queued messages for a subscriber.
	SubscriberQueueLimit *SubscriberQueueLimit
}

// DataflowBuiltInTransformationDataset - Dataflow BuiltIn Transformation dataset properties
type DataflowBuiltInTransformationDataset struct {
	// REQUIRED; List of fields for enriching from the Broker State Store.
	Inputs []*string

	// REQUIRED; The key of the dataset.
	Key *string

	// A user provided optional description of the dataset.
	Description *string

	// Condition to enrich data from Broker State Store. Example: $1 < 0 || $1 > $2 (Assuming inputs section $1 and $2 are provided)
	Expression *string

	// The reference to the schema that describes the dataset. Allowed: JSON Schema/draft-7.
	SchemaRef *string
}

// DataflowBuiltInTransformationFilter - Dataflow BuiltIn Transformation filter properties
type DataflowBuiltInTransformationFilter struct {
	// REQUIRED; Condition to filter data. Can reference input fields with {n} where n is the index of the input field starting
	// from 1. Example: $1 < 0 || $1 > $2 (Assuming inputs section $1 and $2 are provided)
	Expression *string

	// REQUIRED; List of fields for filtering in JSON path expression.
	Inputs []*string

	// A user provided optional description of the filter.
	Description *string

	// The type of dataflow operation.
	Type *FilterType
}

// DataflowBuiltInTransformationMap - Dataflow BuiltIn Transformation map properties
type DataflowBuiltInTransformationMap struct {
	// REQUIRED; List of fields for mapping in JSON path expression.
	Inputs []*string

	// REQUIRED; Where and how the input fields to be organized in the output record.
	Output *string

	// A user provided optional description of the mapping function.
	Description *string

	// Modify the inputs field(s) to the final output field. Example: $1 * 2.2 (Assuming inputs section $1 is provided)
	Expression *string

	// Type of transformation.
	Type *DataflowMappingType
}

// DataflowBuiltInTransformationSettings - Dataflow BuiltIn Transformation properties
type DataflowBuiltInTransformationSettings struct {
	// Enrich data from Broker State Store. Dataset references a key in Broker State Store.
	Datasets []*DataflowBuiltInTransformationDataset

	// Filters input record or datapoints based on condition.
	Filter []*DataflowBuiltInTransformationFilter

	// Maps input to output message.
	Map []*DataflowBuiltInTransformationMap

	// Reference to the schema that describes the output of the transformation.
	SchemaRef *string

	// Serialization format. Optional; defaults to JSON. Allowed value JSON Schema/draft-7, Parquet. Default: Json
	SerializationFormat *TransformationSerializationFormat
}

// DataflowDestinationOperationSettings - Dataflow Destination Operation properties
type DataflowDestinationOperationSettings struct {
	// REQUIRED; Destination location, can be a topic or table name. Supports dynamic values with $topic, $systemProperties, $userProperties,
	// $payload, $context, and $subscription.
	DataDestination *string

	// REQUIRED; Reference to the Endpoint CR. Can be of Broker, Kafka, Fabric, ADLS, ADX type.
	EndpointRef *string
}

// DataflowEndpointAuthenticationAccessToken - DataflowEndpoint Authentication Access Token properties
type DataflowEndpointAuthenticationAccessToken struct {
	// REQUIRED; Token secret name.
	SecretRef *string
}

// DataflowEndpointAuthenticationSasl - DataflowEndpoint Authentication Sasl properties
type DataflowEndpointAuthenticationSasl struct {
	// REQUIRED; Type of SASL authentication. Can be PLAIN, SCRAM-SHA-256, or SCRAM-SHA-512.
	SaslType *DataflowEndpointAuthenticationSaslType

	// REQUIRED; Token secret name.
	SecretRef *string
}

// DataflowEndpointAuthenticationServiceAccountToken - Service Account Token for BrokerAuthentication
type DataflowEndpointAuthenticationServiceAccountToken struct {
	// REQUIRED; Audience of the service account. Optional, defaults to the broker internal service account audience.
	Audience *string
}

// DataflowEndpointAuthenticationSystemAssignedManagedIdentity - DataflowEndpoint Authentication SystemAssignedManagedIdentity
// properties
type DataflowEndpointAuthenticationSystemAssignedManagedIdentity struct {
	// Audience of the service to authenticate against. Optional; defaults to the audience for Service host configuration.
	Audience *string
}

// DataflowEndpointAuthenticationUserAssignedManagedIdentity - DataflowEndpoint Authentication UserAssignedManagedIdentity
// properties
type DataflowEndpointAuthenticationUserAssignedManagedIdentity struct {
	// REQUIRED; Client ID for the user-assigned managed identity.
	ClientID *string

	// REQUIRED; Tenant ID.
	TenantID *string

	// Resource identifier (application ID URI) of the resource, affixed with the .default suffix.
	Scope *string
}

// DataflowEndpointAuthenticationX509 - DataflowEndpoint Authentication X509 properties
type DataflowEndpointAuthenticationX509 struct {
	// REQUIRED; Secret reference of the X.509 certificate.
	SecretRef *string
}

// DataflowEndpointDataExplorer - Azure Data Explorer endpoint properties
type DataflowEndpointDataExplorer struct {
	// REQUIRED; Authentication configuration. NOTE - only authentication property is allowed per entry.
	Authentication *DataflowEndpointDataExplorerAuthentication

	// REQUIRED; Database name.
	Database *string

	// REQUIRED; Host of the Azure Data Explorer in the form of <cluster>.<region>.kusto.windows.net .
	Host *string

	// Azure Data Explorer endpoint batching configuration.
	Batching *BatchingConfiguration
}

// DataflowEndpointDataExplorerAuthentication - Azure Data Explorer Authentication properties. NOTE - only authentication
// property is allowed per entry.
type DataflowEndpointDataExplorerAuthentication struct {
	// REQUIRED; Mode of Authentication.
	Method *DataExplorerAuthMethod

	// System-assigned managed identity authentication.
	SystemAssignedManagedIdentitySettings *DataflowEndpointAuthenticationSystemAssignedManagedIdentity

	// User-assigned managed identity authentication.
	UserAssignedManagedIdentitySettings *DataflowEndpointAuthenticationUserAssignedManagedIdentity
}

// DataflowEndpointDataLakeStorage - Azure Data Lake endpoint properties
type DataflowEndpointDataLakeStorage struct {
	// REQUIRED; Authentication configuration. NOTE - only authentication property is allowed per entry.
	Authentication *DataflowEndpointDataLakeStorageAuthentication

	// REQUIRED; Host of the Azure Data Lake in the form of <account>.blob.core.windows.net .
	Host *string

	// Azure Data Lake endpoint batching configuration.
	Batching *BatchingConfiguration
}

// DataflowEndpointDataLakeStorageAuthentication - Azure Data Lake endpoint Authentication properties. NOTE Enum - Only one
// method is supported for one entry
type DataflowEndpointDataLakeStorageAuthentication struct {
	// REQUIRED; Mode of Authentication.
	Method *DataLakeStorageAuthMethod

	// SAS token authentication.
	AccessTokenSettings *DataflowEndpointAuthenticationAccessToken

	// System-assigned managed identity authentication.
	SystemAssignedManagedIdentitySettings *DataflowEndpointAuthenticationSystemAssignedManagedIdentity

	// User-assigned managed identity authentication.
	UserAssignedManagedIdentitySettings *DataflowEndpointAuthenticationUserAssignedManagedIdentity
}

// DataflowEndpointFabricOneLake - Microsoft Fabric endpoint properties
type DataflowEndpointFabricOneLake struct {
	// REQUIRED; Authentication configuration. NOTE - only one authentication property is allowed per entry.
	Authentication *DataflowEndpointFabricOneLakeAuthentication

	// REQUIRED; Host of the Microsoft Fabric in the form of https://<host>.fabric.microsoft.com.
	Host *string

	// REQUIRED; Names of the workspace and lakehouse.
	Names *DataflowEndpointFabricOneLakeNames

	// REQUIRED; Type of location of the data in the workspace. Can be either tables or files.
	OneLakePathType *DataflowEndpointFabricPathType

	// Batching configuration.
	Batching *BatchingConfiguration
}

// DataflowEndpointFabricOneLakeAuthentication - Microsoft Fabric endpoint. Authentication properties. NOTE - Only one method
// is supported for one entry
type DataflowEndpointFabricOneLakeAuthentication struct {
	// REQUIRED; Mode of Authentication.
	Method *FabricOneLakeAuthMethod

	// System-assigned managed identity authentication.
	SystemAssignedManagedIdentitySettings *DataflowEndpointAuthenticationSystemAssignedManagedIdentity

	// User-assigned managed identity authentication.
	UserAssignedManagedIdentitySettings *DataflowEndpointAuthenticationUserAssignedManagedIdentity
}

// DataflowEndpointFabricOneLakeNames - Microsoft Fabric endpoint Names properties
type DataflowEndpointFabricOneLakeNames struct {
	// REQUIRED; Lakehouse name.
	LakehouseName *string

	// REQUIRED; Workspace name.
	WorkspaceName *string
}

// DataflowEndpointKafka - Kafka endpoint properties
type DataflowEndpointKafka struct {
	// REQUIRED; Authentication configuration. NOTE - only authentication property is allowed per entry.
	Authentication *DataflowEndpointKafkaAuthentication

	// REQUIRED; Kafka endpoint host.
	Host *string

	// Batching configuration.
	Batching *DataflowEndpointKafkaBatching

	// Cloud event mapping config.
	CloudEventAttributes *CloudEventAttributeType

	// Compression. Can be none, gzip, lz4, or snappy. No effect if the endpoint is used as a source.
	Compression *DataflowEndpointKafkaCompression

	// Consumer group ID.
	ConsumerGroupID *string

	// Copy Broker properties. No effect if the endpoint is used as a source or if the dataflow doesn't have an Broker source.
	CopyMqttProperties *OperationalMode

	// Kafka acks. Can be all, one, or zero. No effect if the endpoint is used as a source.
	KafkaAcks *DataflowEndpointKafkaAcks

	// Partition handling strategy. Can be default or static. No effect if the endpoint is used as a source.
	PartitionStrategy *DataflowEndpointKafkaPartitionStrategy

	// TLS configuration.
	TLS *TLSProperties
}

// DataflowEndpointKafkaAuthentication - Kafka endpoint Authentication properties. NOTE - only authentication property is
// allowed per entry
type DataflowEndpointKafkaAuthentication struct {
	// REQUIRED; Mode of Authentication.
	Method *KafkaAuthMethod

	// SASL authentication.
	SaslSettings *DataflowEndpointAuthenticationSasl

	// System-assigned managed identity authentication.
	SystemAssignedManagedIdentitySettings *DataflowEndpointAuthenticationSystemAssignedManagedIdentity

	// User-assigned managed identity authentication.
	UserAssignedManagedIdentitySettings *DataflowEndpointAuthenticationUserAssignedManagedIdentity

	// X.509 certificate authentication.
	X509CertificateSettings *DataflowEndpointAuthenticationX509
}

// DataflowEndpointKafkaBatching - Kafka endpoint Batching properties
type DataflowEndpointKafkaBatching struct {
	// Batching latency in milliseconds.
	LatencyMs *int32

	// Maximum number of bytes in a batch.
	MaxBytes *int32

	// Maximum number of messages in a batch.
	MaxMessages *int32

	// Mode for batching.
	Mode *OperationalMode
}

// DataflowEndpointLocalStorage - Local persistent volume endpoint properties
type DataflowEndpointLocalStorage struct {
	// REQUIRED; Persistent volume claim name.
	PersistentVolumeClaimRef *string
}

// DataflowEndpointMqtt - Broker endpoint properties
type DataflowEndpointMqtt struct {
	// REQUIRED; authentication properties. DEFAULT: kubernetes.audience=aio-internal. NOTE - Enum field only property is allowed
	Authentication *DataflowEndpointMqttAuthentication

	// Client ID prefix. Client ID generated by the dataflow is <prefix>-TBD. Optional; no prefix if omitted.
	ClientIDPrefix *string

	// Cloud event mapping config.
	CloudEventAttributes *CloudEventAttributeType

	// Host of the Broker in the form of <hostname>:<port>. Optional; connects to Broker if omitted.
	Host *string

	// Broker KeepAlive for connection in seconds.
	KeepAliveSeconds *int32

	// The max number of messages to keep in flight. For subscribe, this is the receive maximum. For publish, this is the maximum
	// number of messages to send before waiting for an ack.
	MaxInflightMessages *int32

	// Enable or disable websockets.
	Protocol *BrokerProtocolType

	// Qos for Broker connection.
	Qos *int32

	// Whether or not to keep the retain setting.
	Retain *MqttRetainType

	// Session expiry in seconds.
	SessionExpirySeconds *int32

	// TLS configuration.
	TLS *TLSProperties
}

// DataflowEndpointMqttAuthentication - Mqtt endpoint Authentication properties. NOTE - only authentication property is allowed
// per entry.
type DataflowEndpointMqttAuthentication struct {
	// REQUIRED; Mode of Authentication.
	Method *MqttAuthMethod

	// Kubernetes service account token authentication. Default audience if not set is aio-internal
	ServiceAccountTokenSettings *DataflowEndpointAuthenticationServiceAccountToken

	// System-assigned managed identity authentication.
	SystemAssignedManagedIdentitySettings *DataflowEndpointAuthenticationSystemAssignedManagedIdentity

	// User-assigned managed identity authentication.
	UserAssignedManagedIdentitySettings *DataflowEndpointAuthenticationUserAssignedManagedIdentity

	// X.509 certificate authentication.
	X509CertificateSettings *DataflowEndpointAuthenticationX509
}

// DataflowEndpointProperties - DataflowEndpoint Resource properties. NOTE - Only one type of endpoint is supported for one
// Resource
type DataflowEndpointProperties struct {
	// REQUIRED; Endpoint Type.
	EndpointType *EndpointType

	// Azure Data Explorer endpoint.
	DataExplorerSettings *DataflowEndpointDataExplorer

	// Azure Data Lake endpoint.
	DataLakeStorageSettings *DataflowEndpointDataLakeStorage

	// Microsoft Fabric endpoint.
	FabricOneLakeSettings *DataflowEndpointFabricOneLake

	// Kafka endpoint.
	KafkaSettings *DataflowEndpointKafka

	// Local persistent volume endpoint.
	LocalStorageSettings *DataflowEndpointLocalStorage

	// Broker endpoint.
	MqttSettings *DataflowEndpointMqtt

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// DataflowEndpointResource - Instance dataflowEndpoint resource
type DataflowEndpointResource struct {
	// REQUIRED; Edge location of the resource.
	ExtendedLocation *ExtendedLocation

	// The resource-specific properties for this resource.
	Properties *DataflowEndpointProperties

	// READ-ONLY; Name of Instance dataflowEndpoint resource
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// DataflowEndpointResourceListResult - The response of a DataflowEndpointResource list operation.
type DataflowEndpointResourceListResult struct {
	// REQUIRED; The DataflowEndpointResource items on this page
	Value []*DataflowEndpointResource

	// The link to the next page of items
	NextLink *string
}

// DataflowOperation - Dataflow Operation properties. NOTE - One only method is allowed to be used for one entry.
type DataflowOperation struct {
	// REQUIRED; Type of operation.
	OperationType *OperationType

	// Built In Transformation configuration.
	BuiltInTransformationSettings *DataflowBuiltInTransformationSettings

	// Destination configuration.
	DestinationSettings *DataflowDestinationOperationSettings

	// Optional user provided name of the transformation.
	Name *string

	// Source configuration.
	SourceSettings *DataflowSourceOperationSettings
}

// DataflowProfileProperties - DataflowProfile Resource properties
type DataflowProfileProperties struct {
	// Spec defines the desired identities of NBC diagnostics settings.
	Diagnostics *ProfileDiagnostics

	// To manually scale the dataflow profile, specify the maximum number of instances you want to run.
	InstanceCount *int32

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// DataflowProfileResource - Instance dataflowProfile resource
type DataflowProfileResource struct {
	// REQUIRED; Edge location of the resource.
	ExtendedLocation *ExtendedLocation

	// The resource-specific properties for this resource.
	Properties *DataflowProfileProperties

	// READ-ONLY; Name of Instance dataflowProfile resource
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// DataflowProfileResourceListResult - The response of a DataflowProfileResource list operation.
type DataflowProfileResourceListResult struct {
	// REQUIRED; The DataflowProfileResource items on this page
	Value []*DataflowProfileResource

	// The link to the next page of items
	NextLink *string
}

// DataflowProperties - Dataflow Resource properties
type DataflowProperties struct {
	// REQUIRED; List of operations including source and destination references as well as transformation.
	Operations []*DataflowOperation

	// Mode for Dataflow. Optional; defaults to Enabled.
	Mode *OperationalMode

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState
}

// DataflowResource - Instance dataflowProfile dataflow resource
type DataflowResource struct {
	// REQUIRED; Edge location of the resource.
	ExtendedLocation *ExtendedLocation

	// The resource-specific properties for this resource.
	Properties *DataflowProperties

	// READ-ONLY; Name of Instance dataflowProfile dataflow resource
	Name *string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// DataflowResourceListResult - The response of a DataflowResource list operation.
type DataflowResourceListResult struct {
	// REQUIRED; The DataflowResource items on this page
	Value []*DataflowResource

	// The link to the next page of items
	NextLink *string
}

// DataflowSourceOperationSettings - Dataflow Source Operation properties
type DataflowSourceOperationSettings struct {
	// REQUIRED; List of source locations. Can be Broker or Kafka topics. Supports wildcards # and +.
	DataSources []*string

	// REQUIRED; Reference to the Dataflow Endpoint resource. Can only be of Broker and Kafka type.
	EndpointRef *string

	// Reference to the resource in Azure Device Registry where the data in the endpoint originates from.
	AssetRef *string

	// Schema CR reference. Data will be deserialized according to the schema, and dropped if it doesn't match.
	SchemaRef *string

	// Content is a JSON Schema. Allowed: JSON Schema/draft-7.
	SerializationFormat *SourceSerializationFormat
}

// DiagnosticsLogs - Diagnostic Log properties
type DiagnosticsLogs struct {
	// The log level. Examples - 'debug', 'info', 'warn', 'error', 'trace'.
	Level *string
}

// DiskBackedMessageBuffer properties
type DiskBackedMessageBuffer struct {
	// REQUIRED; The max size of the message buffer on disk. If a PVC template is specified using one of ephemeralVolumeClaimSpec
	// or persistentVolumeClaimSpec, then this size is used as the request and limit sizes of that template. If neither ephemeralVolumeClaimSpec
	// nor persistentVolumeClaimSpec are specified, then an emptyDir volume is mounted with this size as its limit. See <https://kubernetes.io/docs/concepts/storage/volumes/#emptydir>
	// for details.
	MaxSize *string

	// Use the specified persistent volume claim template to mount a "generic ephemeral volume" for the message buffer. See <https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes>
	// for details.
	EphemeralVolumeClaimSpec *VolumeClaimSpec

	// Use the specified persistent volume claim template to mount a persistent volume for the message buffer.
	PersistentVolumeClaimSpec *VolumeClaimSpec
}

// ExtendedLocation - Extended location is an extension of Azure locations. They provide a way to use their Azure ARC enabled
// Kubernetes clusters as target locations for deploying Azure services instances.
type ExtendedLocation struct {
	// REQUIRED; The name of the extended location.
	Name *string

	// REQUIRED; Type of ExtendedLocation.
	Type *ExtendedLocationType
}

// Frontend - The desired properties of the frontend instances of the Broker
type Frontend struct {
	// REQUIRED; The desired number of frontend instances (pods).
	Replicas *int32

	// Number of logical frontend workers per instance (pod).
	Workers *int32
}

// GenerateResourceLimits properties
type GenerateResourceLimits struct {
	// The toggle to enable/disable cpu resource limits.
	CPU *OperationalMode
}

// InstancePatchModel - The Instance update model.
type InstancePatchModel struct {
	// The managed service identities assigned to this resource.
	Identity *ManagedServiceIdentity

	// Resource tags.
	Tags map[string]*string
}

// InstanceProperties - The properties of the Instance resource.
type InstanceProperties struct {
	// REQUIRED; The reference to the Schema Registry for this AIO Instance.
	SchemaRegistryRef *SchemaRegistryRef

	// Detailed description of the Instance.
	Description *string

	// READ-ONLY; The status of the last operation.
	ProvisioningState *ProvisioningState

	// READ-ONLY; The Azure IoT Operations version.
	Version *string
}

// InstanceResource - A Instance resource is a logical container for a set of child resources.
type InstanceResource struct {
	// REQUIRED; Edge location of the resource.
	ExtendedLocation *ExtendedLocation

	// REQUIRED; The geo-location where the resource lives
	Location *string

	// The resource-specific properties for this resource.
	Properties *InstanceProperties

	// Resource tags.
	Tags map[string]*string

	// READ-ONLY; Name of instance.
	Name *string

	// The managed service identities assigned to this resource.
	Identity *ManagedServiceIdentity

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// InstanceResourceListResult - The response of a InstanceResource list operation.
type InstanceResourceListResult struct {
	// REQUIRED; The InstanceResource items on this page
	Value []*InstanceResource

	// The link to the next page of items
	NextLink *string
}

// KubernetesReference - Kubernetes reference
type KubernetesReference struct {
	// REQUIRED; Kind is the type of resource being referenced
	Kind *string

	// REQUIRED; Name is the name of resource being referenced
	Name *string

	// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the
	// core API group. For any other third-party types, APIGroup is required.
	APIGroup *string

	// Namespace is the namespace of the resource being referenced. This field is required when the resource has a namespace.
	Namespace *string
}

// ListenerPort - Defines a TCP port on which a `BrokerListener` listens.
type ListenerPort struct {
	// REQUIRED; TCP port for accepting client connections.
	Port *int32

	// Reference to client authentication settings. Omit to disable authentication.
	AuthenticationRef *string

	// Reference to client authorization settings. Omit to disable authorization.
	AuthorizationRef *string

	// Kubernetes node port. Only relevant when this port is associated with a `NodePort` listener.
	NodePort *int32

	// Protocol to use for client connections.
	Protocol *BrokerProtocolType

	// TLS server certificate settings for this port. Omit to disable TLS.
	TLS *TLSCertMethod
}

// LocalKubernetesReference - Kubernetes reference
type LocalKubernetesReference struct {
	// REQUIRED; Kind is the type of resource being referenced
	Kind *string

	// REQUIRED; Name is the name of resource being referenced
	Name *string

	// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the
	// core API group. For any other third-party types, APIGroup is required.
	APIGroup *string
}

// ManagedServiceIdentity - Managed service identity (system assigned and/or user assigned identities)
type ManagedServiceIdentity struct {
	// REQUIRED; The type of managed identity assigned to this resource.
	Type *ManagedServiceIdentityType

	// The identities assigned to this resource by the user.
	UserAssignedIdentities map[string]*UserAssignedIdentity

	// READ-ONLY; The service principal ID of the system assigned identity. This property will only be provided for a system assigned
	// identity.
	PrincipalID *string

	// READ-ONLY; The tenant ID of the system assigned identity. This property will only be provided for a system assigned identity.
	TenantID *string
}

// Metrics - Diagnostic Metrics properties
type Metrics struct {
	// The prometheus port to expose the metrics.
	PrometheusPort *int32
}

// Operation - Details of a REST API operation, returned from the Resource Provider Operations API
type Operation struct {
	// Extensible enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs.
	ActionType *ActionType

	// READ-ONLY; Localized display information for this particular operation.
	Display *OperationDisplay

	// READ-ONLY; Whether the operation applies to data-plane. This is "true" for data-plane operations and "false" for Azure
	// Resource Manager/control-plane operations.
	IsDataAction *bool

	// READ-ONLY; The name of the operation, as per Resource-Based Access Control (RBAC). Examples: "Microsoft.Compute/virtualMachines/write",
	// "Microsoft.Compute/virtualMachines/capture/action"
	Name *string

	// READ-ONLY; The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default
	// value is "user,system"
	Origin *Origin
}

// OperationDisplay - Localized display information for and operation.
type OperationDisplay struct {
	// READ-ONLY; The short, localized friendly description of the operation; suitable for tool tips and detailed views.
	Description *string

	// READ-ONLY; The concise, localized friendly name for the operation; suitable for dropdowns. E.g. "Create or Update Virtual
	// Machine", "Restart Virtual Machine".
	Operation *string

	// READ-ONLY; The localized friendly form of the resource provider name, e.g. "Microsoft Monitoring Insights" or "Microsoft
	// Compute".
	Provider *string

	// READ-ONLY; The localized friendly name of the resource type related to this operation. E.g. "Virtual Machines" or "Job
	// Schedule Collections".
	Resource *string
}

// OperationListResult - A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to
// get the next set of results.
type OperationListResult struct {
	// REQUIRED; The Operation items on this page
	Value []*Operation

	// The link to the next page of items
	NextLink *string
}

// PrincipalDefinition properties of Rule
type PrincipalDefinition struct {
	// A list of key-value pairs that match the attributes of the clients. The attributes are case-sensitive and must match the
	// attributes provided by the clients during authentication.
	Attributes []map[string]*string

	// A list of client IDs that match the clients. The client IDs are case-sensitive and must match the client IDs provided by
	// the clients during connection.
	ClientIDs []*string

	// A list of usernames that match the clients. The usernames are case-sensitive and must match the usernames provided by the
	// clients during authentication.
	Usernames []*string
}

// ProfileDiagnostics - DataflowProfile Diagnostics properties
type ProfileDiagnostics struct {
	// Diagnostic log settings for the resource.
	Logs *DiagnosticsLogs

	// The metrics settings for the resource.
	Metrics *Metrics
}

// SanForCert - Subject Alternative Names (SANs) for certificate.
type SanForCert struct {
	// REQUIRED; DNS SANs.
	DNS []*string

	// REQUIRED; IP address SANs.
	IP []*string
}

// SchemaRegistryRef - The reference to the Schema Registry for this AIO Instance.
type SchemaRegistryRef struct {
	// REQUIRED; The resource ID of the Schema Registry.
	ResourceID *string
}

// SelfCheck - Broker Diagnostic Self check properties
type SelfCheck struct {
	// The self check interval.
	IntervalSeconds *int32

	// The toggle to enable/disable self check.
	Mode *OperationalMode

	// The timeout for self check.
	TimeoutSeconds *int32
}

// SelfTracing - Diagnostic Self tracing properties
type SelfTracing struct {
	// The self tracing interval.
	IntervalSeconds *int32

	// The toggle to enable/disable self tracing.
	Mode *OperationalMode
}

// StateStoreResourceRule - State Store Resource Rule properties.
type StateStoreResourceRule struct {
	// REQUIRED; Allowed keyTypes pattern, string, binary. The key type used for matching, for example pattern tries to match
	// the key to a glob-style pattern and string checks key is equal to value provided in keys.
	KeyType *StateStoreResourceKeyTypes

	// REQUIRED; Give access to state store keys for the corresponding principals defined. When key type is pattern set glob-style
	// pattern (e.g., '*', 'clients/*').
	Keys []*string

	// REQUIRED; Give access for `Read`, `Write` and `ReadWrite` access level.
	Method *StateStoreResourceDefinitionMethods
}

// SubscriberQueueLimit - The settings of Subscriber Queue Limit.
type SubscriberQueueLimit struct {
	// The maximum length of the queue before messages start getting dropped.
	Length *int64

	// The strategy to use for dropping messages from the queue.
	Strategy *SubscriberMessageDropStrategy
}

// SystemData - Metadata pertaining to creation and last modification of the resource.
type SystemData struct {
	// The timestamp of resource creation (UTC).
	CreatedAt *time.Time

	// The identity that created the resource.
	CreatedBy *string

	// The type of identity that created the resource.
	CreatedByType *CreatedByType

	// The timestamp of resource last modification (UTC)
	LastModifiedAt *time.Time

	// The identity that last modified the resource.
	LastModifiedBy *string

	// The type of identity that last modified the resource.
	LastModifiedByType *CreatedByType
}

// TLSCertMethod - Collection of different TLS types, NOTE- Enum at a time only one of them needs to be supported
type TLSCertMethod struct {
	// REQUIRED; Mode of TLS server certificate management.
	Mode *TLSCertMethodMode

	// Option 1 - Automatic TLS server certificate management with cert-manager.
	CertManagerCertificateSpec *CertManagerCertificateSpec

	// Option 2 - Manual TLS server certificate management through a defined secret.
	Manual *X509ManualCertificate
}

// TLSProperties - Tls properties
type TLSProperties struct {
	// Mode for TLS.
	Mode *OperationalMode

	// Trusted CA certificate config map.
	TrustedCaCertificateConfigMapRef *string
}

// Traces - Broker Diagnostic Trace properties
type Traces struct {
	// The cache size in megabytes.
	CacheSizeMegabytes *int32

	// The toggle to enable/disable traces.
	Mode *OperationalMode

	// The self tracing properties.
	SelfTracing *SelfTracing

	// The span channel capacity.
	SpanChannelCapacity *int32
}

// UserAssignedIdentity - User assigned identity properties
type UserAssignedIdentity struct {
	// READ-ONLY; The client ID of the assigned identity.
	ClientID *string

	// READ-ONLY; The principal ID of the assigned identity.
	PrincipalID *string
}

// VolumeClaimResourceRequirements properties
type VolumeClaimResourceRequirements struct {
	// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
	Limits map[string]*string

	// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults
	// to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
	Requests map[string]*string
}

// VolumeClaimSpec properties
type VolumeClaimSpec struct {
	// AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
	AccessModes []*string

	// This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
	// * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source,
	// it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate
	// is enabled, this field will always have the same contents as the DataSourceRef field.
	DataSource *LocalKubernetesReference

	// Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local
	// object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume
	// binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner.
	// This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have
	// the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically
	// if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef:
	// * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim
	// objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates
	// an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be
	// enabled.
	DataSourceRef *KubernetesReference

	// Resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled
	// users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity
	// recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
	Resources *VolumeClaimResourceRequirements

	// A label query over volumes to consider for binding.
	Selector *VolumeClaimSpecSelector

	// Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
	StorageClassName *string

	// volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim
	// spec. This is a beta feature.
	VolumeMode *string

	// VolumeName is the binding reference to the PersistentVolume backing this claim.
	VolumeName *string
}

// VolumeClaimSpecSelector properties
type VolumeClaimSpecSelector struct {
	// MatchExpressions is a list of label selector requirements. The requirements are ANDed.
	MatchExpressions []*VolumeClaimSpecSelectorMatchExpressions

	// MatchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions,
	// whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
	MatchLabels map[string]*string
}

// VolumeClaimSpecSelectorMatchExpressions properties
type VolumeClaimSpecSelectorMatchExpressions struct {
	// REQUIRED; key is the label key that the selector applies to.
	Key *string

	// REQUIRED; operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
	Operator *OperatorValues

	// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator
	// is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
	Values []*string
}

// X509ManualCertificate - X509 Certificate Authentication properties.
type X509ManualCertificate struct {
	// REQUIRED; Kubernetes secret containing an X.509 client certificate. This is a reference to the secret through an identifying
	// name, not the secret itself.
	SecretRef *string
}
