# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities
from . import outputs

__all__ = [
    'AppDynamicsConnectorApiToken',
    'AppDynamicsConnectorUsernamePassword',
    'ArtifactoryConnectorCredentials',
    'AwsCCConnectorCrossAccountAccess',
    'AwsConnectorCrossAccountAccess',
    'AwsConnectorEqualJitterBackoffStrategy',
    'AwsConnectorFixedDelayBackoffStrategy',
    'AwsConnectorFullJitterBackoffStrategy',
    'AwsConnectorInheritFromDelegate',
    'AwsConnectorIrsa',
    'AwsConnectorManual',
    'AwsConnectorOidcAuthentication',
    'AwsKmsConnectorCredentials',
    'AwsKmsConnectorCredentialsAssumeRole',
    'AwsKmsConnectorCredentialsManual',
    'AwsKmsConnectorCredentialsOidcAuthentication',
    'AwsSecretManagerConnectorCredentials',
    'AwsSecretManagerConnectorCredentialsAssumeRole',
    'AwsSecretManagerConnectorCredentialsManual',
    'AwsSecretManagerConnectorCredentialsOidcAuthentication',
    'AzureCloudCostConnectorBillingExportSpec2',
    'AzureCloudCostConnectorBillingExportSpec',
    'AzureCloudProviderConnectorCredentials',
    'AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetails',
    'AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuth',
    'AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuthAzureMsiAuthUa',
    'AzureCloudProviderConnectorCredentialsAzureManualDetails',
    'AzureCloudProviderConnectorCredentialsAzureManualDetailsAuth',
    'AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientKeyCert',
    'AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientSecretKey',
    'AzureCloudProviderConnectorCredentialsAzureOidcSpec',
    'BitbucketConnectorApiAuthentication',
    'BitbucketConnectorCredentials',
    'BitbucketConnectorCredentialsHttp',
    'BitbucketConnectorCredentialsSsh',
    'CentralNotificationChannelChannel',
    'CentralNotificationChannelChannelHeader',
    'CentralNotificationChannelChannelUserGroup',
    'CentralNotificationRuleCustomNotificationTemplateRef',
    'CentralNotificationRuleCustomNotificationTemplateRefVariable',
    'CentralNotificationRuleNotificationCondition',
    'CentralNotificationRuleNotificationConditionNotificationEventConfig',
    'ConnectorAzureArtifactsCredentials',
    'ConnectorAzureRepoApiAuthentication',
    'ConnectorAzureRepoCredentials',
    'ConnectorAzureRepoCredentialsHttp',
    'ConnectorAzureRepoCredentialsSsh',
    'ConnectorCustomSecretManagerTemplateInput',
    'ConnectorCustomSecretManagerTemplateInputEnvironmentVariable',
    'ConnectorCustomhealthsourceHeader',
    'ConnectorCustomhealthsourceParam',
    'ConnectorGcpKmsManual',
    'ConnectorGcpKmsOidcAuthentication',
    'ConnectorJdbcCredentials',
    'ConnectorJdbcCredentialsServiceAccount',
    'ConnectorJdbcCredentialsUsernamePassword',
    'ConnectorPdcHost',
    'ConnectorRancherBearerToken',
    'DbSchemaChangelogScript',
    'DbSchemaSchemaSource',
    'DefaultNotificationTemplateSetEventTemplateConfigurationSet',
    'DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplate',
    'DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateVariable',
    'DockerConnectorCredentials',
    'ElasticsearchConnectorApiToken',
    'ElasticsearchConnectorNoAuthentication',
    'ElasticsearchConnectorUsernamePassword',
    'EnvironmentClustersMappingCluster',
    'EnvironmentGitDetails',
    'FeatureFlagEnvironment',
    'FeatureFlagEnvironmentAddTargetRule',
    'FeatureFlagTag',
    'FeatureFlagTargetGroupRule',
    'FeatureFlagVariation',
    'FileStoreFileCreatedBy',
    'FileStoreFileLastModifiedBy',
    'FileStoreFolderCreatedBy',
    'FileStoreFolderLastModifiedBy',
    'FiltersFilterProperties',
    'GcpCloudCostConnectorBillingExportSpec',
    'GcpConnectorInheritFromDelegate',
    'GcpConnectorManual',
    'GcpConnectorOidcAuthentication',
    'GcpSecretManagerConnectorOidcAuthentication',
    'GitConnectorCredentials',
    'GitConnectorCredentialsHttp',
    'GitConnectorCredentialsSsh',
    'GitOpsAgentMetadata',
    'GitOpsApplicationsApplication',
    'GitOpsApplicationsApplicationMetadata',
    'GitOpsApplicationsApplicationMetadataOwnerReference',
    'GitOpsApplicationsApplicationSpec',
    'GitOpsApplicationsApplicationSpecDestination',
    'GitOpsApplicationsApplicationSpecSource',
    'GitOpsApplicationsApplicationSpecSourceDirectory',
    'GitOpsApplicationsApplicationSpecSourceDirectoryJsonnet',
    'GitOpsApplicationsApplicationSpecSourceDirectoryJsonnetExtVar',
    'GitOpsApplicationsApplicationSpecSourceDirectoryJsonnetTla',
    'GitOpsApplicationsApplicationSpecSourceHelm',
    'GitOpsApplicationsApplicationSpecSourceHelmFileParameter',
    'GitOpsApplicationsApplicationSpecSourceHelmParameter',
    'GitOpsApplicationsApplicationSpecSourceKsonnet',
    'GitOpsApplicationsApplicationSpecSourceKsonnetParameter',
    'GitOpsApplicationsApplicationSpecSourceKustomize',
    'GitOpsApplicationsApplicationSpecSourcePlugin',
    'GitOpsApplicationsApplicationSpecSourcePluginEnv',
    'GitOpsApplicationsApplicationSpecSyncPolicy',
    'GitOpsApplicationsApplicationSpecSyncPolicyAutomated',
    'GitOpsApplicationsApplicationSpecSyncPolicyRetry',
    'GitOpsApplicationsApplicationSpecSyncPolicyRetryBackoff',
    'GitOpsClusterRequest',
    'GitOpsClusterRequestCluster',
    'GitOpsClusterRequestClusterConfig',
    'GitOpsClusterRequestClusterConfigExecProviderConfig',
    'GitOpsClusterRequestClusterConfigTlsClientConfig',
    'GitOpsClusterRequestClusterInfo',
    'GitOpsClusterRequestClusterInfoCacheInfo',
    'GitOpsClusterRequestClusterInfoConnectionState',
    'GitOpsClusterRequestClusterInfoConnectionStateAttemptedAt',
    'GitOpsClusterRequestClusterRefreshRequestedAt',
    'GitOpsGnupgRequest',
    'GitOpsGnupgRequestPublickey',
    'GitOpsRepoCertRequest',
    'GitOpsRepoCertRequestCertificate',
    'GitOpsRepoCertRequestCertificateItem',
    'GitOpsRepoCertRequestCertificateMetadata',
    'GitOpsRepoCredCred',
    'GitOpsRepositoryEcrGen',
    'GitOpsRepositoryEcrGenJwtAuth',
    'GitOpsRepositoryEcrGenSecretRef',
    'GitOpsRepositoryGcrGen',
    'GitOpsRepositoryGcrGenWorkloadIdentity',
    'GitOpsRepositoryGcrGenWorkloadIdentityServiceAccountRef',
    'GitOpsRepositoryRepo',
    'GitOpsRepositoryUpdateMask',
    'GithubConnectorApiAuthentication',
    'GithubConnectorApiAuthenticationGithubApp',
    'GithubConnectorCredentials',
    'GithubConnectorCredentialsHttp',
    'GithubConnectorCredentialsHttpAnonymouse',
    'GithubConnectorCredentialsHttpGithubApp',
    'GithubConnectorCredentialsSsh',
    'GitlabConnectorApiAuthentication',
    'GitlabConnectorCredentials',
    'GitlabConnectorCredentialsHttp',
    'GitlabConnectorCredentialsSsh',
    'GitopsAppProjectProject',
    'GitopsAppProjectProjectMetadata',
    'GitopsAppProjectProjectMetadataManagedField',
    'GitopsAppProjectProjectSpec',
    'GitopsAppProjectProjectSpecClusterResourceBlacklist',
    'GitopsAppProjectProjectSpecClusterResourceWhitelist',
    'GitopsAppProjectProjectSpecDestination',
    'GitopsAppProjectProjectSpecNamespaceResourceBlacklist',
    'GitopsAppProjectProjectSpecNamespaceResourceWhitelist',
    'GitopsAppProjectProjectSpecOrphanedResource',
    'GitopsAppProjectProjectSpecOrphanedResourceIgnore',
    'GitopsAppProjectProjectSpecRole',
    'GitopsAppProjectProjectSpecRoleJwtToken',
    'GitopsAppProjectProjectSpecSignatureKey',
    'GitopsAppProjectProjectSpecSyncWindow',
    'GitopsApplicationsetApplicationset',
    'GitopsApplicationsetApplicationsetMetadata',
    'GitopsApplicationsetApplicationsetSpec',
    'GitopsApplicationsetApplicationsetSpecGenerator',
    'GitopsApplicationsetApplicationsetSpecGeneratorCluster',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResource',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorGit',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitFile',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorList',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrix',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGenerator',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorCluster',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGit',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitFile',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorList',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrix',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGenerator',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorCluster',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGit',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitFile',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorList',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequest',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProvider',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevops',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloud',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabCaRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMerge',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGenerator',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorCluster',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGit',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitFile',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorList',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequest',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProvider',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevops',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloud',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabCaRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequest',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProvider',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevops',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloud',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabCaRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMerge',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGenerator',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorCluster',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGit',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitFile',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorList',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrix',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGenerator',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorCluster',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGit',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitFile',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorList',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequest',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProvider',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevops',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloud',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabCaRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMerge',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGenerator',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorCluster',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGit',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitFile',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorList',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequest',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProvider',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevops',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloud',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabCaRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequest',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProvider',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevops',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloud',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabCaRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequest',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProvider',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevops',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevopsAccessTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloud',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloudAppPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServer',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuth',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuthPasswordRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderFilter',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitea',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGiteaTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithub',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithubTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlab',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabCaRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabTokenRef',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplate',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff',
    'GitopsApplicationsetApplicationsetSpecGeneratorSelector',
    'GitopsApplicationsetApplicationsetSpecGeneratorSelectorMatchExpression',
    'GitopsApplicationsetApplicationsetSpecIgnoreApplicationDifference',
    'GitopsApplicationsetApplicationsetSpecStrategy',
    'GitopsApplicationsetApplicationsetSpecStrategyRollingSync',
    'GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStep',
    'GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStepMatchExpression',
    'GitopsApplicationsetApplicationsetSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecTemplate',
    'GitopsApplicationsetApplicationsetSpecTemplateMetadata',
    'GitopsApplicationsetApplicationsetSpecTemplateSpec',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecDestination',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecIgnoreDifference',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecInfo',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSource',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectory',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnet',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnetExtVar',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnetTla',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelm',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmFileParameter',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmParameter',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSourceKustomize',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSourcePlugin',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSourcePluginEnv',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicy',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyAutomated',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyManagedNamespaceMetadata',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetry',
    'GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetryBackoff',
    'HarRegistryConfig',
    'HarRegistryConfigAuth',
    'HelmConnectorCredentials',
    'IdpCatalogEntityGitDetails',
    'InfraModuleTestingTestingMetadata',
    'InfraVariableSetConnector',
    'InfraVariableSetEnvironmentVariable',
    'InfraVariableSetTerraformVariable',
    'InfraVariableSetTerraformVariableFile',
    'InfrastructureGitDetails',
    'InputSetGitDetails',
    'InputSetGitImportInfo',
    'InputSetInputSetImportRequest',
    'JenkinsConnectorAuth',
    'JenkinsConnectorAuthJenkinsBearerToken',
    'JenkinsConnectorAuthJenkinsUserNamePassword',
    'JiraConnectorAuth',
    'JiraConnectorAuthPersonalAccessToken',
    'JiraConnectorAuthUsernamePassword',
    'KubernetesConnectorClientKeyCert',
    'KubernetesConnectorInheritFromDelegate',
    'KubernetesConnectorOpenidConnect',
    'KubernetesConnectorServiceAccount',
    'KubernetesConnectorUsernamePassword',
    'ManualFreezeCurrentOrUpcomingWindow',
    'ManualFreezeFreezeWindow',
    'ManualFreezeFreezeWindowRecurrence',
    'ManualFreezeFreezeWindowRecurrenceRecurrenceSpec',
    'MonitoredServiceRequest',
    'MonitoredServiceRequestChangeSource',
    'MonitoredServiceRequestDependency',
    'MonitoredServiceRequestHealthSource',
    'MonitoredServiceRequestNotificationRuleRef',
    'NexusConnectorCredentials',
    'NotificationRuleRequest',
    'NotificationRuleRequestCondition',
    'NotificationRuleRequestNotificationMethod',
    'OciHelmConnectorCredentials',
    'OverridesGitDetails',
    'PipelineCentralNotificationRuleCustomNotificationTemplateRef',
    'PipelineCentralNotificationRuleCustomNotificationTemplateRefVariable',
    'PipelineCentralNotificationRuleNotificationCondition',
    'PipelineCentralNotificationRuleNotificationConditionNotificationEventConfig',
    'PipelineCentralNotificationRuleNotificationConditionNotificationEventConfigNotificationEventData',
    'PipelineFiltersFilterProperties',
    'PipelineFiltersFilterPropertiesModuleProperties',
    'PipelineFiltersFilterPropertiesModulePropertiesCd',
    'PipelineFiltersFilterPropertiesModulePropertiesCi',
    'PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfo',
    'PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfoPullRequest',
    'PipelineGitDetails',
    'PipelineGitImportInfo',
    'PipelinePipelineImportRequest',
    'PolicySetPolicy',
    'PolicySetPolicyReference',
    'PrometheusConnectorHeader',
    'ProviderSpec',
    'RepoRuleBranchBypass',
    'RepoRuleBranchPattern',
    'RepoRuleBranchPolicy',
    'RepoSource',
    'ResourceGroupIncludedScope',
    'ResourceGroupResourceFilter',
    'ResourceGroupResourceFilterResource',
    'ResourceGroupResourceFilterResourceAttributeFilter',
    'RoleAssignmentsPrincipal',
    'SecretFileAdditionalMetadata',
    'SecretFileAdditionalMetadataValue',
    'SecretSshkeyKerberos',
    'SecretSshkeyKerberosTgtKeyTabFilePathSpec',
    'SecretSshkeyKerberosTgtPasswordSpec',
    'SecretSshkeySsh',
    'SecretSshkeySshSshPasswordCredential',
    'SecretSshkeySshSshkeyPathCredential',
    'SecretSshkeySshSshkeyReferenceCredential',
    'SecretTextAdditionalMetadata',
    'SecretTextAdditionalMetadataValue',
    'SecretWinrmKerberos',
    'SecretWinrmKerberosTgtKeyTabFilePathSpec',
    'SecretWinrmKerberosTgtPasswordSpec',
    'SecretWinrmNtlm',
    'ServiceGitDetails',
    'ServiceNowConnectorAuth',
    'ServiceNowConnectorAuthAdfs',
    'ServiceNowConnectorAuthRefreshToken',
    'ServiceNowConnectorAuthUsernamePassword',
    'ServiceOverridesV2GitDetails',
    'SloRequest',
    'SloRequestNotificationRuleRef',
    'SloRequestSloTarget',
    'SpotConnectorPermanentToken',
    'TasConnectorCredentials',
    'TasConnectorCredentialsTasManualDetails',
    'TemplateFiltersFilterProperties',
    'TemplateGitDetails',
    'TemplateGitImportDetails',
    'TemplateTemplateImportRequest',
    'TerraformCloudConnectorCredentials',
    'TerraformCloudConnectorCredentialsApiToken',
    'UserRoleBinding',
    'UsergroupNotificationConfig',
    'VariablesSpec',
    'WorkspaceConnector',
    'WorkspaceEnvironmentVariable',
    'WorkspaceTerraformVariable',
    'WorkspaceTerraformVariableFile',
    'GetAppDynamicsConnectorApiTokenResult',
    'GetAppDynamicsConnectorUsernamePasswordResult',
    'GetArtifactoryConnectorCredentialResult',
    'GetAwsCCConnectorCrossAccountAccessResult',
    'GetAwsConnectorCrossAccountAccessResult',
    'GetAwsConnectorEqualJitterBackoffStrategyResult',
    'GetAwsConnectorFixedDelayBackoffStrategyResult',
    'GetAwsConnectorFullJitterBackoffStrategyResult',
    'GetAwsConnectorInheritFromDelegateResult',
    'GetAwsConnectorIrsaResult',
    'GetAwsConnectorManualResult',
    'GetAwsConnectorOidcAuthenticationResult',
    'GetAwsKmsConnectorCredentialResult',
    'GetAwsKmsConnectorCredentialAssumeRoleResult',
    'GetAwsKmsConnectorCredentialManualResult',
    'GetAwsKmsConnectorCredentialOidcAuthenticationResult',
    'GetAwsSecretManagerConnectorCredentialResult',
    'GetAwsSecretManagerConnectorCredentialAssumeRoleResult',
    'GetAwsSecretManagerConnectorCredentialManualResult',
    'GetAwsSecretManagerConnectorCredentialOidcAuthenticationResult',
    'GetAzureCloudCostConnectorBillingExportSpec2Result',
    'GetAzureCloudCostConnectorBillingExportSpecResult',
    'GetAzureCloudProviderConnectorCredentialResult',
    'GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailResult',
    'GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailAuthResult',
    'GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailAuthAzureMsiAuthUaResult',
    'GetAzureCloudProviderConnectorCredentialAzureManualDetailResult',
    'GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthResult',
    'GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthAzureClientKeyCertResult',
    'GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthAzureClientSecretKeyResult',
    'GetAzureCloudProviderConnectorCredentialAzureOidcSpecResult',
    'GetBitbucketConnectorApiAuthenticationResult',
    'GetBitbucketConnectorCredentialResult',
    'GetBitbucketConnectorCredentialHttpResult',
    'GetBitbucketConnectorCredentialSshResult',
    'GetCcmFiltersFilterPropertyResult',
    'GetCentralNotificationChannelChannelResult',
    'GetCentralNotificationChannelChannelHeaderResult',
    'GetCentralNotificationChannelChannelUserGroupResult',
    'GetCentralNotificationRuleCustomNotificationTemplateRefResult',
    'GetCentralNotificationRuleCustomNotificationTemplateRefVariableResult',
    'GetCentralNotificationRuleNotificationConditionResult',
    'GetCentralNotificationRuleNotificationConditionNotificationEventConfigResult',
    'GetConnectorAzureRepoApiAuthenticationResult',
    'GetConnectorAzureRepoCredentialResult',
    'GetConnectorAzureRepoCredentialHttpResult',
    'GetConnectorAzureRepoCredentialSshResult',
    'GetConnectorCustomSecretManagerTemplateInputResult',
    'GetConnectorCustomSecretManagerTemplateInputEnvironmentVariableResult',
    'GetConnectorCustomhealthsourceHeaderResult',
    'GetConnectorCustomhealthsourceParamResult',
    'GetConnectorGcpKmsManualResult',
    'GetConnectorGcpKmsOidcAuthenticationResult',
    'GetConnectorJdbcCredentialResult',
    'GetConnectorJdbcCredentialServiceAccountResult',
    'GetConnectorJdbcCredentialUsernamePasswordResult',
    'GetConnectorPdcHostResult',
    'GetConnectorRancherBearerTokenResult',
    'GetDbSchemaChangelogScriptResult',
    'GetDbSchemaSchemaSourceResult',
    'GetDefaultNotificationTemplateSetEventTemplateConfigurationSetResult',
    'GetDefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateResult',
    'GetDefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateVariableResult',
    'GetDockerConnectorCredentialResult',
    'GetElasticsearchConnectorApiTokenResult',
    'GetElasticsearchConnectorUsernamePasswordResult',
    'GetEnvironmentClustersMappingClusterResult',
    'GetEnvironmentGitDetailsResult',
    'GetEnvironmentListEnvironmentResult',
    'GetFileStoreFileCreatedByResult',
    'GetFileStoreFileLastModifiedByResult',
    'GetFileStoreFolderCreatedByResult',
    'GetFileStoreFolderLastModifiedByResult',
    'GetFiltersFilterPropertyResult',
    'GetGcpCloudCostConnectorBillingExportSpecResult',
    'GetGcpConnectorInheritFromDelegateResult',
    'GetGcpConnectorManualResult',
    'GetGcpConnectorOidcAuthenticationResult',
    'GetGcpProjectsProjectResult',
    'GetGcpSecretManagerConnectorOidcAuthenticationResult',
    'GetGitConnectorCredentialResult',
    'GetGitConnectorCredentialHttpResult',
    'GetGitConnectorCredentialSshResult',
    'GetGithubConnectorApiAuthenticationResult',
    'GetGithubConnectorApiAuthenticationGithubAppResult',
    'GetGithubConnectorCredentialResult',
    'GetGithubConnectorCredentialHttpResult',
    'GetGithubConnectorCredentialHttpAnonymouseResult',
    'GetGithubConnectorCredentialHttpGithubAppResult',
    'GetGithubConnectorCredentialSshResult',
    'GetGitlabConnectorApiAuthenticationResult',
    'GetGitlabConnectorCredentialResult',
    'GetGitlabConnectorCredentialHttpResult',
    'GetGitlabConnectorCredentialSshResult',
    'GetGitopsAgentDeployYamlArgocdSettingsResult',
    'GetGitopsAgentDeployYamlProxyResult',
    'GetGitopsAgentMetadataResult',
    'GetGitopsAgentOperatorYamlProxyResult',
    'GetGitopsApplicationsApplicationResult',
    'GetGitopsApplicationsApplicationMetadataResult',
    'GetGitopsApplicationsApplicationMetadataOwnerReferenceResult',
    'GetGitopsApplicationsApplicationSpecResult',
    'GetGitopsApplicationsApplicationSpecDestinationResult',
    'GetGitopsApplicationsApplicationSpecSourceResult',
    'GetGitopsApplicationsApplicationSpecSourceDirectoryResult',
    'GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetResult',
    'GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetExtVarResult',
    'GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetTlaResult',
    'GetGitopsApplicationsApplicationSpecSourceHelmResult',
    'GetGitopsApplicationsApplicationSpecSourceHelmFileParameterResult',
    'GetGitopsApplicationsApplicationSpecSourceHelmParameterResult',
    'GetGitopsApplicationsApplicationSpecSourceKsonnetResult',
    'GetGitopsApplicationsApplicationSpecSourceKsonnetParameterResult',
    'GetGitopsApplicationsApplicationSpecSourceKustomizeResult',
    'GetGitopsApplicationsApplicationSpecSourcePluginResult',
    'GetGitopsApplicationsApplicationSpecSourcePluginEnvResult',
    'GetGitopsApplicationsApplicationSpecSyncPolicyResult',
    'GetGitopsApplicationsApplicationSpecSyncPolicyAutomatedResult',
    'GetGitopsApplicationsApplicationSpecSyncPolicyRetryResult',
    'GetGitopsApplicationsApplicationSpecSyncPolicyRetryBackoffResult',
    'GetGitopsClusterRequestResult',
    'GetGitopsClusterRequestClusterResult',
    'GetGitopsClusterRequestClusterConfigResult',
    'GetGitopsClusterRequestClusterConfigExecProviderConfigResult',
    'GetGitopsClusterRequestClusterConfigTlsClientConfigResult',
    'GetGitopsClusterRequestClusterInfoResult',
    'GetGitopsClusterRequestClusterInfoCacheInfoResult',
    'GetGitopsClusterRequestClusterInfoConnectionStateResult',
    'GetGitopsClusterRequestClusterInfoConnectionStateAttemptedAtResult',
    'GetGitopsClusterRequestClusterRefreshRequestedAtResult',
    'GetGitopsGnupgRequestResult',
    'GetGitopsGnupgRequestPublickeyResult',
    'GetGitopsRepoCredCredResult',
    'GetGitopsRepositoryRepoResult',
    'GetHarRegistryConfigResult',
    'GetHarRegistryConfigAuthResult',
    'GetHelmConnectorCredentialResult',
    'GetIdpCatalogEntityGitDetailResult',
    'GetInfraModuleTestingMetadataResult',
    'GetInfraModuleTestingTestingMetadataResult',
    'GetInfraModulesModuleResult',
    'GetInfraVariableSetConnectorResult',
    'GetInfraVariableSetEnvironmentVariableResult',
    'GetInfraVariableSetTerraformVariableResult',
    'GetInfraVariableSetTerraformVariableFileResult',
    'GetInfrastructureGitDetailsResult',
    'GetInputSetGitDetailsResult',
    'GetJenkinsConnectorAuthResult',
    'GetJenkinsConnectorAuthJenkinsBearerTokenResult',
    'GetJenkinsConnectorAuthJenkinsUserNamePasswordResult',
    'GetJiraConnectorAuthResult',
    'GetJiraConnectorAuthPersonalAccessTokenResult',
    'GetJiraConnectorAuthUsernamePasswordResult',
    'GetKubernetesConnectorClientKeyCertResult',
    'GetKubernetesConnectorInheritFromDelegateResult',
    'GetKubernetesConnectorOpenidConnectResult',
    'GetKubernetesConnectorServiceAccountResult',
    'GetKubernetesConnectorUsernamePasswordResult',
    'GetManualFreezeCurrentOrUpcomingWindowResult',
    'GetManualFreezeFreezeWindowResult',
    'GetManualFreezeFreezeWindowRecurrenceResult',
    'GetManualFreezeFreezeWindowRecurrenceRecurrenceSpecResult',
    'GetNexusConnectorCredentialResult',
    'GetOciHelmConnectorCredentialResult',
    'GetOverridesGitDetailsResult',
    'GetPermissionsPermissionResult',
    'GetPipelineCentralNotificationRuleCustomNotificationTemplateRefResult',
    'GetPipelineCentralNotificationRuleCustomNotificationTemplateRefVariableResult',
    'GetPipelineCentralNotificationRuleNotificationConditionResult',
    'GetPipelineCentralNotificationRuleNotificationConditionNotificationEventConfigResult',
    'GetPipelineCentralNotificationRuleNotificationConditionNotificationEventConfigNotificationEventDataResult',
    'GetPipelineFiltersFilterPropertyResult',
    'GetPipelineFiltersFilterPropertyModulePropertiesResult',
    'GetPipelineFiltersFilterPropertyModulePropertiesCdResult',
    'GetPipelineFiltersFilterPropertyModulePropertiesCiResult',
    'GetPipelineFiltersFilterPropertyModulePropertiesCiCiExecutionInfoResult',
    'GetPipelineFiltersFilterPropertyModulePropertiesCiCiExecutionInfoPullRequestResult',
    'GetPipelineGitDetailsResult',
    'GetPipelineListPipelineResult',
    'GetPolicySetPolicyResult',
    'GetPolicySetPolicyReferenceResult',
    'GetProjectListProjectResult',
    'GetPrometheusConnectorHeaderResult',
    'GetRepoRuleBranchBypassResult',
    'GetRepoRuleBranchPatternResult',
    'GetRepoRuleBranchPolicyResult',
    'GetRepoSourceResult',
    'GetResourceGroupIncludedScopeResult',
    'GetResourceGroupResourceFilterResult',
    'GetResourceGroupResourceFilterResourceResult',
    'GetResourceGroupResourceFilterResourceAttributeFilterResult',
    'GetRoleAssignmentsPrincipalResult',
    'GetSecretFileAdditionalMetadataResult',
    'GetSecretFileAdditionalMetadataValueResult',
    'GetSecretSshkeyKerberoResult',
    'GetSecretSshkeyKerberoTgtKeyTabFilePathSpecResult',
    'GetSecretSshkeyKerberoTgtPasswordSpecResult',
    'GetSecretSshkeySshResult',
    'GetSecretSshkeySshSshPasswordCredentialResult',
    'GetSecretSshkeySshSshkeyPathCredentialResult',
    'GetSecretSshkeySshSshkeyReferenceCredentialResult',
    'GetSecretTextAdditionalMetadataResult',
    'GetSecretTextAdditionalMetadataValueResult',
    'GetSecretWinrmKerberoResult',
    'GetSecretWinrmKerberoTgtKeyTabFilePathSpecResult',
    'GetSecretWinrmKerberoTgtPasswordSpecResult',
    'GetSecretWinrmNtlmResult',
    'GetServiceGitDetailsResult',
    'GetServiceListServiceResult',
    'GetServiceNowConnectorAuthResult',
    'GetServiceNowConnectorAuthAdfResult',
    'GetServiceNowConnectorAuthRefreshTokenResult',
    'GetServiceNowConnectorAuthUsernamePasswordResult',
    'GetServiceOverridesV2GitDetailsResult',
    'GetSpotConnectorPermanentTokenResult',
    'GetTasConnectorCredentialResult',
    'GetTasConnectorCredentialTasManualDetailResult',
    'GetTemplateFiltersFilterPropertyResult',
    'GetTemplateGitDetailsResult',
    'GetTerraformCloudConnectorCredentialResult',
    'GetTerraformCloudConnectorCredentialApiTokenResult',
    'GetUsergroupNotificationConfigResult',
    'GetVariablesSpecResult',
    'GetWorkspaceConnectorResult',
    'GetWorkspaceEnvironmentVariableResult',
    'GetWorkspaceOutputValueOutputValueResult',
    'GetWorkspaceTerraformVariableResult',
    'GetWorkspaceTerraformVariableFileResult',
]

@pulumi.output_type
class AppDynamicsConnectorApiToken(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientId":
            suggest = "client_id"
        elif key == "clientSecretRef":
            suggest = "client_secret_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AppDynamicsConnectorApiToken. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AppDynamicsConnectorApiToken.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AppDynamicsConnectorApiToken.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 client_id: _builtins.str,
                 client_secret_ref: _builtins.str):
        """
        :param _builtins.str client_id: The client id used for connecting to App Dynamics.
        :param _builtins.str client_secret_ref: Reference to the Harness secret containing the App Dynamics client secret. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_ref", client_secret_ref)

    @_builtins.property
    @pulumi.getter(name="clientId")
    def client_id(self) -> _builtins.str:
        """
        The client id used for connecting to App Dynamics.
        """
        return pulumi.get(self, "client_id")

    @_builtins.property
    @pulumi.getter(name="clientSecretRef")
    def client_secret_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the App Dynamics client secret. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_secret_ref")


@pulumi.output_type
class AppDynamicsConnectorUsernamePassword(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AppDynamicsConnectorUsernamePassword. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AppDynamicsConnectorUsernamePassword.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AppDynamicsConnectorUsernamePassword.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class ArtifactoryConnectorCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ArtifactoryConnectorCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ArtifactoryConnectorCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ArtifactoryConnectorCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class AwsCCConnectorCrossAccountAccess(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "externalId":
            suggest = "external_id"
        elif key == "roleArn":
            suggest = "role_arn"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsCCConnectorCrossAccountAccess. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsCCConnectorCrossAccountAccess.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsCCConnectorCrossAccountAccess.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 external_id: _builtins.str,
                 role_arn: _builtins.str):
        """
        :param _builtins.str external_id: The external id of the role to use for cross-account access. This is a random unique value to provide additional secure authentication.
        :param _builtins.str role_arn: The ARN of the role to use for cross-account access.
        """
        pulumi.set(__self__, "external_id", external_id)
        pulumi.set(__self__, "role_arn", role_arn)

    @_builtins.property
    @pulumi.getter(name="externalId")
    def external_id(self) -> _builtins.str:
        """
        The external id of the role to use for cross-account access. This is a random unique value to provide additional secure authentication.
        """
        return pulumi.get(self, "external_id")

    @_builtins.property
    @pulumi.getter(name="roleArn")
    def role_arn(self) -> _builtins.str:
        """
        The ARN of the role to use for cross-account access.
        """
        return pulumi.get(self, "role_arn")


@pulumi.output_type
class AwsConnectorCrossAccountAccess(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "roleArn":
            suggest = "role_arn"
        elif key == "externalId":
            suggest = "external_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsConnectorCrossAccountAccess. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsConnectorCrossAccountAccess.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsConnectorCrossAccountAccess.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 role_arn: _builtins.str,
                 external_id: Optional[_builtins.str] = None):
        """
        :param _builtins.str role_arn: The Amazon Resource Name (ARN) of the role that you want to assume. This is an IAM role in the target AWS account.
        :param _builtins.str external_id: If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        """
        pulumi.set(__self__, "role_arn", role_arn)
        if external_id is not None:
            pulumi.set(__self__, "external_id", external_id)

    @_builtins.property
    @pulumi.getter(name="roleArn")
    def role_arn(self) -> _builtins.str:
        """
        The Amazon Resource Name (ARN) of the role that you want to assume. This is an IAM role in the target AWS account.
        """
        return pulumi.get(self, "role_arn")

    @_builtins.property
    @pulumi.getter(name="externalId")
    def external_id(self) -> Optional[_builtins.str]:
        """
        If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        """
        return pulumi.get(self, "external_id")


@pulumi.output_type
class AwsConnectorEqualJitterBackoffStrategy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "baseDelay":
            suggest = "base_delay"
        elif key == "maxBackoffTime":
            suggest = "max_backoff_time"
        elif key == "retryCount":
            suggest = "retry_count"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsConnectorEqualJitterBackoffStrategy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsConnectorEqualJitterBackoffStrategy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsConnectorEqualJitterBackoffStrategy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 base_delay: Optional[_builtins.int] = None,
                 max_backoff_time: Optional[_builtins.int] = None,
                 retry_count: Optional[_builtins.int] = None):
        """
        :param _builtins.int base_delay: Base delay.
        :param _builtins.int max_backoff_time: Max BackOff Time.
        :param _builtins.int retry_count: Retry Count.
        """
        if base_delay is not None:
            pulumi.set(__self__, "base_delay", base_delay)
        if max_backoff_time is not None:
            pulumi.set(__self__, "max_backoff_time", max_backoff_time)
        if retry_count is not None:
            pulumi.set(__self__, "retry_count", retry_count)

    @_builtins.property
    @pulumi.getter(name="baseDelay")
    def base_delay(self) -> Optional[_builtins.int]:
        """
        Base delay.
        """
        return pulumi.get(self, "base_delay")

    @_builtins.property
    @pulumi.getter(name="maxBackoffTime")
    def max_backoff_time(self) -> Optional[_builtins.int]:
        """
        Max BackOff Time.
        """
        return pulumi.get(self, "max_backoff_time")

    @_builtins.property
    @pulumi.getter(name="retryCount")
    def retry_count(self) -> Optional[_builtins.int]:
        """
        Retry Count.
        """
        return pulumi.get(self, "retry_count")


@pulumi.output_type
class AwsConnectorFixedDelayBackoffStrategy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fixedBackoff":
            suggest = "fixed_backoff"
        elif key == "retryCount":
            suggest = "retry_count"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsConnectorFixedDelayBackoffStrategy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsConnectorFixedDelayBackoffStrategy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsConnectorFixedDelayBackoffStrategy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 fixed_backoff: Optional[_builtins.int] = None,
                 retry_count: Optional[_builtins.int] = None):
        """
        :param _builtins.int fixed_backoff: Fixed Backoff.
        :param _builtins.int retry_count: Retry Count.
        """
        if fixed_backoff is not None:
            pulumi.set(__self__, "fixed_backoff", fixed_backoff)
        if retry_count is not None:
            pulumi.set(__self__, "retry_count", retry_count)

    @_builtins.property
    @pulumi.getter(name="fixedBackoff")
    def fixed_backoff(self) -> Optional[_builtins.int]:
        """
        Fixed Backoff.
        """
        return pulumi.get(self, "fixed_backoff")

    @_builtins.property
    @pulumi.getter(name="retryCount")
    def retry_count(self) -> Optional[_builtins.int]:
        """
        Retry Count.
        """
        return pulumi.get(self, "retry_count")


@pulumi.output_type
class AwsConnectorFullJitterBackoffStrategy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "baseDelay":
            suggest = "base_delay"
        elif key == "maxBackoffTime":
            suggest = "max_backoff_time"
        elif key == "retryCount":
            suggest = "retry_count"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsConnectorFullJitterBackoffStrategy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsConnectorFullJitterBackoffStrategy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsConnectorFullJitterBackoffStrategy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 base_delay: Optional[_builtins.int] = None,
                 max_backoff_time: Optional[_builtins.int] = None,
                 retry_count: Optional[_builtins.int] = None):
        """
        :param _builtins.int base_delay: Base delay.
        :param _builtins.int max_backoff_time: Max BackOff Time.
        :param _builtins.int retry_count: Retry Count.
        """
        if base_delay is not None:
            pulumi.set(__self__, "base_delay", base_delay)
        if max_backoff_time is not None:
            pulumi.set(__self__, "max_backoff_time", max_backoff_time)
        if retry_count is not None:
            pulumi.set(__self__, "retry_count", retry_count)

    @_builtins.property
    @pulumi.getter(name="baseDelay")
    def base_delay(self) -> Optional[_builtins.int]:
        """
        Base delay.
        """
        return pulumi.get(self, "base_delay")

    @_builtins.property
    @pulumi.getter(name="maxBackoffTime")
    def max_backoff_time(self) -> Optional[_builtins.int]:
        """
        Max BackOff Time.
        """
        return pulumi.get(self, "max_backoff_time")

    @_builtins.property
    @pulumi.getter(name="retryCount")
    def retry_count(self) -> Optional[_builtins.int]:
        """
        Retry Count.
        """
        return pulumi.get(self, "retry_count")


@pulumi.output_type
class AwsConnectorInheritFromDelegate(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "delegateSelectors":
            suggest = "delegate_selectors"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsConnectorInheritFromDelegate. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsConnectorInheritFromDelegate.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsConnectorInheritFromDelegate.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 delegate_selectors: Sequence[_builtins.str],
                 region: Optional[_builtins.str] = None):
        """
        :param Sequence[_builtins.str] delegate_selectors: The delegates to inherit the credentials from.
        :param _builtins.str region: Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        The delegates to inherit the credentials from.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[_builtins.str]:
        """
        Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "region")


@pulumi.output_type
class AwsConnectorIrsa(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "delegateSelectors":
            suggest = "delegate_selectors"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsConnectorIrsa. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsConnectorIrsa.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsConnectorIrsa.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 delegate_selectors: Sequence[_builtins.str],
                 region: Optional[_builtins.str] = None):
        """
        :param Sequence[_builtins.str] delegate_selectors: The delegates to inherit the credentials from.
        :param _builtins.str region: Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        The delegates to inherit the credentials from.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[_builtins.str]:
        """
        Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "region")


@pulumi.output_type
class AwsConnectorManual(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretKeyRef":
            suggest = "secret_key_ref"
        elif key == "accessKey":
            suggest = "access_key"
        elif key == "accessKeyRef":
            suggest = "access_key_ref"
        elif key == "delegateSelectors":
            suggest = "delegate_selectors"
        elif key == "sessionTokenRef":
            suggest = "session_token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsConnectorManual. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsConnectorManual.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsConnectorManual.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 secret_key_ref: _builtins.str,
                 access_key: Optional[_builtins.str] = None,
                 access_key_ref: Optional[_builtins.str] = None,
                 delegate_selectors: Optional[Sequence[_builtins.str]] = None,
                 region: Optional[_builtins.str] = None,
                 session_token_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str secret_key_ref: Reference to the Harness secret containing the aws secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str access_key: AWS access key.
        :param _builtins.str access_key_ref: Reference to the Harness secret containing the aws access key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param Sequence[_builtins.str] delegate_selectors: Connect only use delegates with these tags.
        :param _builtins.str region: Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str session_token_ref: Reference to the Harness secret containing the aws session token. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "secret_key_ref", secret_key_ref)
        if access_key is not None:
            pulumi.set(__self__, "access_key", access_key)
        if access_key_ref is not None:
            pulumi.set(__self__, "access_key_ref", access_key_ref)
        if delegate_selectors is not None:
            pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if session_token_ref is not None:
            pulumi.set(__self__, "session_token_ref", session_token_ref)

    @_builtins.property
    @pulumi.getter(name="secretKeyRef")
    def secret_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the aws secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "secret_key_ref")

    @_builtins.property
    @pulumi.getter(name="accessKey")
    def access_key(self) -> Optional[_builtins.str]:
        """
        AWS access key.
        """
        return pulumi.get(self, "access_key")

    @_builtins.property
    @pulumi.getter(name="accessKeyRef")
    def access_key_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the Harness secret containing the aws access key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "access_key_ref")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Optional[Sequence[_builtins.str]]:
        """
        Connect only use delegates with these tags.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[_builtins.str]:
        """
        Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "region")

    @_builtins.property
    @pulumi.getter(name="sessionTokenRef")
    def session_token_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the Harness secret containing the aws session token. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "session_token_ref")


@pulumi.output_type
class AwsConnectorOidcAuthentication(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "iamRoleArn":
            suggest = "iam_role_arn"
        elif key == "delegateSelectors":
            suggest = "delegate_selectors"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsConnectorOidcAuthentication. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsConnectorOidcAuthentication.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsConnectorOidcAuthentication.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 iam_role_arn: _builtins.str,
                 delegate_selectors: Optional[Sequence[_builtins.str]] = None,
                 region: Optional[_builtins.str] = None):
        """
        :param _builtins.str iam_role_arn: The IAM Role to assume the credentials from.
        :param Sequence[_builtins.str] delegate_selectors: The delegates to inherit the credentials from.
        :param _builtins.str region: Test Region to perform Connection test of AWS Connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "iam_role_arn", iam_role_arn)
        if delegate_selectors is not None:
            pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @_builtins.property
    @pulumi.getter(name="iamRoleArn")
    def iam_role_arn(self) -> _builtins.str:
        """
        The IAM Role to assume the credentials from.
        """
        return pulumi.get(self, "iam_role_arn")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Optional[Sequence[_builtins.str]]:
        """
        The delegates to inherit the credentials from.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[_builtins.str]:
        """
        Test Region to perform Connection test of AWS Connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "region")


@pulumi.output_type
class AwsKmsConnectorCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "assumeRole":
            suggest = "assume_role"
        elif key == "inheritFromDelegate":
            suggest = "inherit_from_delegate"
        elif key == "oidcAuthentication":
            suggest = "oidc_authentication"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsKmsConnectorCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsKmsConnectorCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsKmsConnectorCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 assume_role: Optional['outputs.AwsKmsConnectorCredentialsAssumeRole'] = None,
                 inherit_from_delegate: Optional[_builtins.bool] = None,
                 manual: Optional['outputs.AwsKmsConnectorCredentialsManual'] = None,
                 oidc_authentication: Optional['outputs.AwsKmsConnectorCredentialsOidcAuthentication'] = None):
        """
        :param 'AwsKmsConnectorCredentialsAssumeRoleArgs' assume_role: Connect using STS assume role.
        :param _builtins.bool inherit_from_delegate: Inherit the credentials from from the delegate.
        :param 'AwsKmsConnectorCredentialsManualArgs' manual: Specify the AWS key and secret used for authenticating.
        :param 'AwsKmsConnectorCredentialsOidcAuthenticationArgs' oidc_authentication: Connect using OIDC authentication.
        """
        if assume_role is not None:
            pulumi.set(__self__, "assume_role", assume_role)
        if inherit_from_delegate is not None:
            pulumi.set(__self__, "inherit_from_delegate", inherit_from_delegate)
        if manual is not None:
            pulumi.set(__self__, "manual", manual)
        if oidc_authentication is not None:
            pulumi.set(__self__, "oidc_authentication", oidc_authentication)

    @_builtins.property
    @pulumi.getter(name="assumeRole")
    def assume_role(self) -> Optional['outputs.AwsKmsConnectorCredentialsAssumeRole']:
        """
        Connect using STS assume role.
        """
        return pulumi.get(self, "assume_role")

    @_builtins.property
    @pulumi.getter(name="inheritFromDelegate")
    def inherit_from_delegate(self) -> Optional[_builtins.bool]:
        """
        Inherit the credentials from from the delegate.
        """
        return pulumi.get(self, "inherit_from_delegate")

    @_builtins.property
    @pulumi.getter
    def manual(self) -> Optional['outputs.AwsKmsConnectorCredentialsManual']:
        """
        Specify the AWS key and secret used for authenticating.
        """
        return pulumi.get(self, "manual")

    @_builtins.property
    @pulumi.getter(name="oidcAuthentication")
    def oidc_authentication(self) -> Optional['outputs.AwsKmsConnectorCredentialsOidcAuthentication']:
        """
        Connect using OIDC authentication.
        """
        return pulumi.get(self, "oidc_authentication")


@pulumi.output_type
class AwsKmsConnectorCredentialsAssumeRole(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "roleArn":
            suggest = "role_arn"
        elif key == "externalId":
            suggest = "external_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsKmsConnectorCredentialsAssumeRole. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsKmsConnectorCredentialsAssumeRole.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsKmsConnectorCredentialsAssumeRole.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: _builtins.int,
                 role_arn: _builtins.str,
                 external_id: Optional[_builtins.str] = None):
        """
        :param _builtins.int duration: The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the client request body. The minimum value is 1 hour.
        :param _builtins.str role_arn: The ARN of the role to assume.
        :param _builtins.str external_id: If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        """
        pulumi.set(__self__, "duration", duration)
        pulumi.set(__self__, "role_arn", role_arn)
        if external_id is not None:
            pulumi.set(__self__, "external_id", external_id)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> _builtins.int:
        """
        The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the client request body. The minimum value is 1 hour.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter(name="roleArn")
    def role_arn(self) -> _builtins.str:
        """
        The ARN of the role to assume.
        """
        return pulumi.get(self, "role_arn")

    @_builtins.property
    @pulumi.getter(name="externalId")
    def external_id(self) -> Optional[_builtins.str]:
        """
        If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        """
        return pulumi.get(self, "external_id")


@pulumi.output_type
class AwsKmsConnectorCredentialsManual(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "accessKeyRef":
            suggest = "access_key_ref"
        elif key == "secretKeyRef":
            suggest = "secret_key_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsKmsConnectorCredentialsManual. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsKmsConnectorCredentialsManual.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsKmsConnectorCredentialsManual.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 access_key_ref: _builtins.str,
                 secret_key_ref: _builtins.str):
        """
        :param _builtins.str access_key_ref: The reference to the Harness secret containing the AWS access key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str secret_key_ref: The reference to the Harness secret containing the AWS secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "access_key_ref", access_key_ref)
        pulumi.set(__self__, "secret_key_ref", secret_key_ref)

    @_builtins.property
    @pulumi.getter(name="accessKeyRef")
    def access_key_ref(self) -> _builtins.str:
        """
        The reference to the Harness secret containing the AWS access key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "access_key_ref")

    @_builtins.property
    @pulumi.getter(name="secretKeyRef")
    def secret_key_ref(self) -> _builtins.str:
        """
        The reference to the Harness secret containing the AWS secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "secret_key_ref")


@pulumi.output_type
class AwsKmsConnectorCredentialsOidcAuthentication(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "iamRoleArn":
            suggest = "iam_role_arn"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsKmsConnectorCredentialsOidcAuthentication. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsKmsConnectorCredentialsOidcAuthentication.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsKmsConnectorCredentialsOidcAuthentication.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 iam_role_arn: _builtins.str):
        """
        :param _builtins.str iam_role_arn: The ARN of the IAM role to assume.
        """
        pulumi.set(__self__, "iam_role_arn", iam_role_arn)

    @_builtins.property
    @pulumi.getter(name="iamRoleArn")
    def iam_role_arn(self) -> _builtins.str:
        """
        The ARN of the IAM role to assume.
        """
        return pulumi.get(self, "iam_role_arn")


@pulumi.output_type
class AwsSecretManagerConnectorCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "assumeRole":
            suggest = "assume_role"
        elif key == "inheritFromDelegate":
            suggest = "inherit_from_delegate"
        elif key == "oidcAuthentication":
            suggest = "oidc_authentication"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsSecretManagerConnectorCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsSecretManagerConnectorCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsSecretManagerConnectorCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 assume_role: Optional['outputs.AwsSecretManagerConnectorCredentialsAssumeRole'] = None,
                 inherit_from_delegate: Optional[_builtins.bool] = None,
                 manual: Optional['outputs.AwsSecretManagerConnectorCredentialsManual'] = None,
                 oidc_authentication: Optional['outputs.AwsSecretManagerConnectorCredentialsOidcAuthentication'] = None):
        """
        :param 'AwsSecretManagerConnectorCredentialsAssumeRoleArgs' assume_role: Connect using STS assume role.
        :param _builtins.bool inherit_from_delegate: Inherit the credentials from from the delegate.
        :param 'AwsSecretManagerConnectorCredentialsManualArgs' manual: Specify the AWS key and secret used for authenticating.
        :param 'AwsSecretManagerConnectorCredentialsOidcAuthenticationArgs' oidc_authentication: Authentication using harness oidc.
        """
        if assume_role is not None:
            pulumi.set(__self__, "assume_role", assume_role)
        if inherit_from_delegate is not None:
            pulumi.set(__self__, "inherit_from_delegate", inherit_from_delegate)
        if manual is not None:
            pulumi.set(__self__, "manual", manual)
        if oidc_authentication is not None:
            pulumi.set(__self__, "oidc_authentication", oidc_authentication)

    @_builtins.property
    @pulumi.getter(name="assumeRole")
    def assume_role(self) -> Optional['outputs.AwsSecretManagerConnectorCredentialsAssumeRole']:
        """
        Connect using STS assume role.
        """
        return pulumi.get(self, "assume_role")

    @_builtins.property
    @pulumi.getter(name="inheritFromDelegate")
    def inherit_from_delegate(self) -> Optional[_builtins.bool]:
        """
        Inherit the credentials from from the delegate.
        """
        return pulumi.get(self, "inherit_from_delegate")

    @_builtins.property
    @pulumi.getter
    def manual(self) -> Optional['outputs.AwsSecretManagerConnectorCredentialsManual']:
        """
        Specify the AWS key and secret used for authenticating.
        """
        return pulumi.get(self, "manual")

    @_builtins.property
    @pulumi.getter(name="oidcAuthentication")
    def oidc_authentication(self) -> Optional['outputs.AwsSecretManagerConnectorCredentialsOidcAuthentication']:
        """
        Authentication using harness oidc.
        """
        return pulumi.get(self, "oidc_authentication")


@pulumi.output_type
class AwsSecretManagerConnectorCredentialsAssumeRole(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "roleArn":
            suggest = "role_arn"
        elif key == "externalId":
            suggest = "external_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsSecretManagerConnectorCredentialsAssumeRole. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsSecretManagerConnectorCredentialsAssumeRole.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsSecretManagerConnectorCredentialsAssumeRole.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: _builtins.int,
                 role_arn: _builtins.str,
                 external_id: Optional[_builtins.str] = None):
        """
        :param _builtins.int duration: The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the client request body. The minimum value is 1 hour.
        :param _builtins.str role_arn: The ARN of the role to assume.
        :param _builtins.str external_id: If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        """
        pulumi.set(__self__, "duration", duration)
        pulumi.set(__self__, "role_arn", role_arn)
        if external_id is not None:
            pulumi.set(__self__, "external_id", external_id)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> _builtins.int:
        """
        The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the client request body. The minimum value is 1 hour.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter(name="roleArn")
    def role_arn(self) -> _builtins.str:
        """
        The ARN of the role to assume.
        """
        return pulumi.get(self, "role_arn")

    @_builtins.property
    @pulumi.getter(name="externalId")
    def external_id(self) -> Optional[_builtins.str]:
        """
        If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        """
        return pulumi.get(self, "external_id")


@pulumi.output_type
class AwsSecretManagerConnectorCredentialsManual(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretKeyRef":
            suggest = "secret_key_ref"
        elif key == "accessKeyPlainText":
            suggest = "access_key_plain_text"
        elif key == "accessKeyRef":
            suggest = "access_key_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsSecretManagerConnectorCredentialsManual. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsSecretManagerConnectorCredentialsManual.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsSecretManagerConnectorCredentialsManual.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 secret_key_ref: _builtins.str,
                 access_key_plain_text: Optional[_builtins.str] = None,
                 access_key_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str secret_key_ref: The reference to the Harness secret containing the AWS secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str access_key_plain_text: The plain text AWS access key.
        :param _builtins.str access_key_ref: The reference to the Harness secret containing the AWS access key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "secret_key_ref", secret_key_ref)
        if access_key_plain_text is not None:
            pulumi.set(__self__, "access_key_plain_text", access_key_plain_text)
        if access_key_ref is not None:
            pulumi.set(__self__, "access_key_ref", access_key_ref)

    @_builtins.property
    @pulumi.getter(name="secretKeyRef")
    def secret_key_ref(self) -> _builtins.str:
        """
        The reference to the Harness secret containing the AWS secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "secret_key_ref")

    @_builtins.property
    @pulumi.getter(name="accessKeyPlainText")
    def access_key_plain_text(self) -> Optional[_builtins.str]:
        """
        The plain text AWS access key.
        """
        return pulumi.get(self, "access_key_plain_text")

    @_builtins.property
    @pulumi.getter(name="accessKeyRef")
    def access_key_ref(self) -> Optional[_builtins.str]:
        """
        The reference to the Harness secret containing the AWS access key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "access_key_ref")


@pulumi.output_type
class AwsSecretManagerConnectorCredentialsOidcAuthentication(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "iamRoleArn":
            suggest = "iam_role_arn"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AwsSecretManagerConnectorCredentialsOidcAuthentication. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AwsSecretManagerConnectorCredentialsOidcAuthentication.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AwsSecretManagerConnectorCredentialsOidcAuthentication.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 iam_role_arn: _builtins.str):
        """
        :param _builtins.str iam_role_arn: The IAM role ARN.
        """
        pulumi.set(__self__, "iam_role_arn", iam_role_arn)

    @_builtins.property
    @pulumi.getter(name="iamRoleArn")
    def iam_role_arn(self) -> _builtins.str:
        """
        The IAM role ARN.
        """
        return pulumi.get(self, "iam_role_arn")


@pulumi.output_type
class AzureCloudCostConnectorBillingExportSpec2(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "billingType":
            suggest = "billing_type"
        elif key == "containerName":
            suggest = "container_name"
        elif key == "directoryName":
            suggest = "directory_name"
        elif key == "reportName":
            suggest = "report_name"
        elif key == "storageAccountName":
            suggest = "storage_account_name"
        elif key == "subscriptionId":
            suggest = "subscription_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AzureCloudCostConnectorBillingExportSpec2. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AzureCloudCostConnectorBillingExportSpec2.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AzureCloudCostConnectorBillingExportSpec2.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 billing_type: _builtins.str,
                 container_name: _builtins.str,
                 directory_name: _builtins.str,
                 report_name: _builtins.str,
                 storage_account_name: _builtins.str,
                 subscription_id: _builtins.str):
        """
        :param _builtins.str billing_type: Billing type.
        :param _builtins.str container_name: Name of the container.
        :param _builtins.str directory_name: Name of the directory.
        :param _builtins.str report_name: Name of the report.
        :param _builtins.str storage_account_name: Name of the storage account.
        :param _builtins.str subscription_id: Subsription Id.
        """
        pulumi.set(__self__, "billing_type", billing_type)
        pulumi.set(__self__, "container_name", container_name)
        pulumi.set(__self__, "directory_name", directory_name)
        pulumi.set(__self__, "report_name", report_name)
        pulumi.set(__self__, "storage_account_name", storage_account_name)
        pulumi.set(__self__, "subscription_id", subscription_id)

    @_builtins.property
    @pulumi.getter(name="billingType")
    def billing_type(self) -> _builtins.str:
        """
        Billing type.
        """
        return pulumi.get(self, "billing_type")

    @_builtins.property
    @pulumi.getter(name="containerName")
    def container_name(self) -> _builtins.str:
        """
        Name of the container.
        """
        return pulumi.get(self, "container_name")

    @_builtins.property
    @pulumi.getter(name="directoryName")
    def directory_name(self) -> _builtins.str:
        """
        Name of the directory.
        """
        return pulumi.get(self, "directory_name")

    @_builtins.property
    @pulumi.getter(name="reportName")
    def report_name(self) -> _builtins.str:
        """
        Name of the report.
        """
        return pulumi.get(self, "report_name")

    @_builtins.property
    @pulumi.getter(name="storageAccountName")
    def storage_account_name(self) -> _builtins.str:
        """
        Name of the storage account.
        """
        return pulumi.get(self, "storage_account_name")

    @_builtins.property
    @pulumi.getter(name="subscriptionId")
    def subscription_id(self) -> _builtins.str:
        """
        Subsription Id.
        """
        return pulumi.get(self, "subscription_id")


@pulumi.output_type
class AzureCloudCostConnectorBillingExportSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "billingType":
            suggest = "billing_type"
        elif key == "containerName":
            suggest = "container_name"
        elif key == "directoryName":
            suggest = "directory_name"
        elif key == "reportName":
            suggest = "report_name"
        elif key == "storageAccountName":
            suggest = "storage_account_name"
        elif key == "subscriptionId":
            suggest = "subscription_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AzureCloudCostConnectorBillingExportSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AzureCloudCostConnectorBillingExportSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AzureCloudCostConnectorBillingExportSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 billing_type: _builtins.str,
                 container_name: _builtins.str,
                 directory_name: _builtins.str,
                 report_name: _builtins.str,
                 storage_account_name: _builtins.str,
                 subscription_id: _builtins.str):
        """
        :param _builtins.str billing_type: Billing type.
        :param _builtins.str container_name: Name of the container.
        :param _builtins.str directory_name: Name of the directory.
        :param _builtins.str report_name: Name of the report.
        :param _builtins.str storage_account_name: Name of the storage account.
        :param _builtins.str subscription_id: Subsription Id.
        """
        pulumi.set(__self__, "billing_type", billing_type)
        pulumi.set(__self__, "container_name", container_name)
        pulumi.set(__self__, "directory_name", directory_name)
        pulumi.set(__self__, "report_name", report_name)
        pulumi.set(__self__, "storage_account_name", storage_account_name)
        pulumi.set(__self__, "subscription_id", subscription_id)

    @_builtins.property
    @pulumi.getter(name="billingType")
    def billing_type(self) -> _builtins.str:
        """
        Billing type.
        """
        return pulumi.get(self, "billing_type")

    @_builtins.property
    @pulumi.getter(name="containerName")
    def container_name(self) -> _builtins.str:
        """
        Name of the container.
        """
        return pulumi.get(self, "container_name")

    @_builtins.property
    @pulumi.getter(name="directoryName")
    def directory_name(self) -> _builtins.str:
        """
        Name of the directory.
        """
        return pulumi.get(self, "directory_name")

    @_builtins.property
    @pulumi.getter(name="reportName")
    def report_name(self) -> _builtins.str:
        """
        Name of the report.
        """
        return pulumi.get(self, "report_name")

    @_builtins.property
    @pulumi.getter(name="storageAccountName")
    def storage_account_name(self) -> _builtins.str:
        """
        Name of the storage account.
        """
        return pulumi.get(self, "storage_account_name")

    @_builtins.property
    @pulumi.getter(name="subscriptionId")
    def subscription_id(self) -> _builtins.str:
        """
        Subsription Id.
        """
        return pulumi.get(self, "subscription_id")


@pulumi.output_type
class AzureCloudProviderConnectorCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "azureInheritFromDelegateDetails":
            suggest = "azure_inherit_from_delegate_details"
        elif key == "azureManualDetails":
            suggest = "azure_manual_details"
        elif key == "azureOidcSpec":
            suggest = "azure_oidc_spec"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AzureCloudProviderConnectorCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AzureCloudProviderConnectorCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AzureCloudProviderConnectorCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: _builtins.str,
                 azure_inherit_from_delegate_details: Optional['outputs.AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetails'] = None,
                 azure_manual_details: Optional['outputs.AzureCloudProviderConnectorCredentialsAzureManualDetails'] = None,
                 azure_oidc_spec: Optional['outputs.AzureCloudProviderConnectorCredentialsAzureOidcSpec'] = None):
        """
        :param _builtins.str type: Type can be InheritFromDelegate, ManualConfig or OidcAuthentication
        :param 'AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsArgs' azure_inherit_from_delegate_details: Authenticate to Azure Cloud Provider using details inheriting from delegate.
        :param 'AzureCloudProviderConnectorCredentialsAzureManualDetailsArgs' azure_manual_details: Authenticate to Azure Cloud Provider using manual details.
        :param 'AzureCloudProviderConnectorCredentialsAzureOidcSpecArgs' azure_oidc_spec: Authenticate to Azure Cloud Provider using OIDC.
        """
        pulumi.set(__self__, "type", type)
        if azure_inherit_from_delegate_details is not None:
            pulumi.set(__self__, "azure_inherit_from_delegate_details", azure_inherit_from_delegate_details)
        if azure_manual_details is not None:
            pulumi.set(__self__, "azure_manual_details", azure_manual_details)
        if azure_oidc_spec is not None:
            pulumi.set(__self__, "azure_oidc_spec", azure_oidc_spec)

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type can be InheritFromDelegate, ManualConfig or OidcAuthentication
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter(name="azureInheritFromDelegateDetails")
    def azure_inherit_from_delegate_details(self) -> Optional['outputs.AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetails']:
        """
        Authenticate to Azure Cloud Provider using details inheriting from delegate.
        """
        return pulumi.get(self, "azure_inherit_from_delegate_details")

    @_builtins.property
    @pulumi.getter(name="azureManualDetails")
    def azure_manual_details(self) -> Optional['outputs.AzureCloudProviderConnectorCredentialsAzureManualDetails']:
        """
        Authenticate to Azure Cloud Provider using manual details.
        """
        return pulumi.get(self, "azure_manual_details")

    @_builtins.property
    @pulumi.getter(name="azureOidcSpec")
    def azure_oidc_spec(self) -> Optional['outputs.AzureCloudProviderConnectorCredentialsAzureOidcSpec']:
        """
        Authenticate to Azure Cloud Provider using OIDC.
        """
        return pulumi.get(self, "azure_oidc_spec")


@pulumi.output_type
class AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetails(dict):
    def __init__(__self__, *,
                 auth: Optional['outputs.AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuth'] = None):
        """
        :param 'AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuthArgs' auth: Auth to authenticate to Azure Cloud Provider using details inheriting from delegate.
        """
        if auth is not None:
            pulumi.set(__self__, "auth", auth)

    @_builtins.property
    @pulumi.getter
    def auth(self) -> Optional['outputs.AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuth']:
        """
        Auth to authenticate to Azure Cloud Provider using details inheriting from delegate.
        """
        return pulumi.get(self, "auth")


@pulumi.output_type
class AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "azureMsiAuthUa":
            suggest = "azure_msi_auth_ua"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: _builtins.str,
                 azure_msi_auth_ua: Optional['outputs.AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuthAzureMsiAuthUa'] = None):
        """
        :param _builtins.str type: Type can either be SystemAssignedManagedIdentity or UserAssignedManagedIdentity.
        :param 'AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuthAzureMsiAuthUaArgs' azure_msi_auth_ua: Azure UserAssigned MSI auth details.
        """
        pulumi.set(__self__, "type", type)
        if azure_msi_auth_ua is not None:
            pulumi.set(__self__, "azure_msi_auth_ua", azure_msi_auth_ua)

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type can either be SystemAssignedManagedIdentity or UserAssignedManagedIdentity.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter(name="azureMsiAuthUa")
    def azure_msi_auth_ua(self) -> Optional['outputs.AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuthAzureMsiAuthUa']:
        """
        Azure UserAssigned MSI auth details.
        """
        return pulumi.get(self, "azure_msi_auth_ua")


@pulumi.output_type
class AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuthAzureMsiAuthUa(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientId":
            suggest = "client_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuthAzureMsiAuthUa. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuthAzureMsiAuthUa.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AzureCloudProviderConnectorCredentialsAzureInheritFromDelegateDetailsAuthAzureMsiAuthUa.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 client_id: Optional[_builtins.str] = None):
        """
        :param _builtins.str client_id: Client Id of the ManagedIdentity resource.
        """
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)

    @_builtins.property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[_builtins.str]:
        """
        Client Id of the ManagedIdentity resource.
        """
        return pulumi.get(self, "client_id")


@pulumi.output_type
class AzureCloudProviderConnectorCredentialsAzureManualDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "applicationId":
            suggest = "application_id"
        elif key == "tenantId":
            suggest = "tenant_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AzureCloudProviderConnectorCredentialsAzureManualDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AzureCloudProviderConnectorCredentialsAzureManualDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AzureCloudProviderConnectorCredentialsAzureManualDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 application_id: Optional[_builtins.str] = None,
                 auth: Optional['outputs.AzureCloudProviderConnectorCredentialsAzureManualDetailsAuth'] = None,
                 tenant_id: Optional[_builtins.str] = None):
        """
        :param _builtins.str application_id: Application ID of the Azure App.
        :param 'AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthArgs' auth: Contains Azure auth details.
        :param _builtins.str tenant_id: The Azure Active Directory (AAD) directory ID where you created your application.
        """
        if application_id is not None:
            pulumi.set(__self__, "application_id", application_id)
        if auth is not None:
            pulumi.set(__self__, "auth", auth)
        if tenant_id is not None:
            pulumi.set(__self__, "tenant_id", tenant_id)

    @_builtins.property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> Optional[_builtins.str]:
        """
        Application ID of the Azure App.
        """
        return pulumi.get(self, "application_id")

    @_builtins.property
    @pulumi.getter
    def auth(self) -> Optional['outputs.AzureCloudProviderConnectorCredentialsAzureManualDetailsAuth']:
        """
        Contains Azure auth details.
        """
        return pulumi.get(self, "auth")

    @_builtins.property
    @pulumi.getter(name="tenantId")
    def tenant_id(self) -> Optional[_builtins.str]:
        """
        The Azure Active Directory (AAD) directory ID where you created your application.
        """
        return pulumi.get(self, "tenant_id")


@pulumi.output_type
class AzureCloudProviderConnectorCredentialsAzureManualDetailsAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "azureClientKeyCert":
            suggest = "azure_client_key_cert"
        elif key == "azureClientSecretKey":
            suggest = "azure_client_secret_key"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AzureCloudProviderConnectorCredentialsAzureManualDetailsAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AzureCloudProviderConnectorCredentialsAzureManualDetailsAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AzureCloudProviderConnectorCredentialsAzureManualDetailsAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 azure_client_key_cert: Optional['outputs.AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientKeyCert'] = None,
                 azure_client_secret_key: Optional['outputs.AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientSecretKey'] = None,
                 type: Optional[_builtins.str] = None):
        """
        :param 'AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientKeyCertArgs' azure_client_key_cert: Azure client key certificate details.
        :param 'AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientSecretKeyArgs' azure_client_secret_key: Azure Client Secret Key details.
        :param _builtins.str type: Type can either be Certificate or Secret.
        """
        if azure_client_key_cert is not None:
            pulumi.set(__self__, "azure_client_key_cert", azure_client_key_cert)
        if azure_client_secret_key is not None:
            pulumi.set(__self__, "azure_client_secret_key", azure_client_secret_key)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="azureClientKeyCert")
    def azure_client_key_cert(self) -> Optional['outputs.AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientKeyCert']:
        """
        Azure client key certificate details.
        """
        return pulumi.get(self, "azure_client_key_cert")

    @_builtins.property
    @pulumi.getter(name="azureClientSecretKey")
    def azure_client_secret_key(self) -> Optional['outputs.AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientSecretKey']:
        """
        Azure Client Secret Key details.
        """
        return pulumi.get(self, "azure_client_secret_key")

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[_builtins.str]:
        """
        Type can either be Certificate or Secret.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientKeyCert(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "certificateRef":
            suggest = "certificate_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientKeyCert. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientKeyCert.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientKeyCert.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 certificate_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str certificate_ref: Reference of the secret for the certificate. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        if certificate_ref is not None:
            pulumi.set(__self__, "certificate_ref", certificate_ref)

    @_builtins.property
    @pulumi.getter(name="certificateRef")
    def certificate_ref(self) -> Optional[_builtins.str]:
        """
        Reference of the secret for the certificate. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "certificate_ref")


@pulumi.output_type
class AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientSecretKey(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretRef":
            suggest = "secret_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientSecretKey. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientSecretKey.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AzureCloudProviderConnectorCredentialsAzureManualDetailsAuthAzureClientSecretKey.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 secret_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str secret_ref: Reference of the secret for the secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        if secret_ref is not None:
            pulumi.set(__self__, "secret_ref", secret_ref)

    @_builtins.property
    @pulumi.getter(name="secretRef")
    def secret_ref(self) -> Optional[_builtins.str]:
        """
        Reference of the secret for the secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "secret_ref")


@pulumi.output_type
class AzureCloudProviderConnectorCredentialsAzureOidcSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "applicationId":
            suggest = "application_id"
        elif key == "tenantId":
            suggest = "tenant_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in AzureCloudProviderConnectorCredentialsAzureOidcSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        AzureCloudProviderConnectorCredentialsAzureOidcSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        AzureCloudProviderConnectorCredentialsAzureOidcSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 application_id: Optional[_builtins.str] = None,
                 audience: Optional[_builtins.str] = None,
                 tenant_id: Optional[_builtins.str] = None):
        """
        :param _builtins.str application_id: Application ID of the Azure App.
        :param _builtins.str audience: The Azure Audience.
        :param _builtins.str tenant_id: The Azure Active Directory (AAD) directory ID where you created your application.
        """
        if application_id is not None:
            pulumi.set(__self__, "application_id", application_id)
        if audience is not None:
            pulumi.set(__self__, "audience", audience)
        if tenant_id is not None:
            pulumi.set(__self__, "tenant_id", tenant_id)

    @_builtins.property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> Optional[_builtins.str]:
        """
        Application ID of the Azure App.
        """
        return pulumi.get(self, "application_id")

    @_builtins.property
    @pulumi.getter
    def audience(self) -> Optional[_builtins.str]:
        """
        The Azure Audience.
        """
        return pulumi.get(self, "audience")

    @_builtins.property
    @pulumi.getter(name="tenantId")
    def tenant_id(self) -> Optional[_builtins.str]:
        """
        The Azure Active Directory (AAD) directory ID where you created your application.
        """
        return pulumi.get(self, "tenant_id")


@pulumi.output_type
class BitbucketConnectorApiAuthentication(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in BitbucketConnectorApiAuthentication. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        BitbucketConnectorApiAuthentication.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        BitbucketConnectorApiAuthentication.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 token_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str token_ref: Personal access token for interacting with the BitBucket api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: The username used for connecting to the api.
        :param _builtins.str username_ref: The name of the Harness secret containing the username. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Personal access token for interacting with the BitBucket api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        The username used for connecting to the api.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        The name of the Harness secret containing the username. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class BitbucketConnectorCredentials(dict):
    def __init__(__self__, *,
                 http: Optional['outputs.BitbucketConnectorCredentialsHttp'] = None,
                 ssh: Optional['outputs.BitbucketConnectorCredentialsSsh'] = None):
        """
        :param 'BitbucketConnectorCredentialsHttpArgs' http: Authenticate using Username and password over http(s) for the connection.
        :param 'BitbucketConnectorCredentialsSshArgs' ssh: Authenticate using SSH for the connection.
        """
        if http is not None:
            pulumi.set(__self__, "http", http)
        if ssh is not None:
            pulumi.set(__self__, "ssh", ssh)

    @_builtins.property
    @pulumi.getter
    def http(self) -> Optional['outputs.BitbucketConnectorCredentialsHttp']:
        """
        Authenticate using Username and password over http(s) for the connection.
        """
        return pulumi.get(self, "http")

    @_builtins.property
    @pulumi.getter
    def ssh(self) -> Optional['outputs.BitbucketConnectorCredentialsSsh']:
        """
        Authenticate using SSH for the connection.
        """
        return pulumi.get(self, "ssh")


@pulumi.output_type
class BitbucketConnectorCredentialsHttp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in BitbucketConnectorCredentialsHttp. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        BitbucketConnectorCredentialsHttp.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        BitbucketConnectorCredentialsHttp.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional[_builtins.str] = None,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class BitbucketConnectorCredentialsSsh(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "sshKeyRef":
            suggest = "ssh_key_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in BitbucketConnectorCredentialsSsh. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        BitbucketConnectorCredentialsSsh.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        BitbucketConnectorCredentialsSsh.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ssh_key_ref: _builtins.str):
        """
        :param _builtins.str ssh_key_ref: Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "ssh_key_ref", ssh_key_ref)

    @_builtins.property
    @pulumi.getter(name="sshKeyRef")
    def ssh_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ssh_key_ref")


@pulumi.output_type
class CentralNotificationChannelChannel(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "apiKey":
            suggest = "api_key"
        elif key == "datadogUrls":
            suggest = "datadog_urls"
        elif key == "delegateSelectors":
            suggest = "delegate_selectors"
        elif key == "emailIds":
            suggest = "email_ids"
        elif key == "executeOnDelegate":
            suggest = "execute_on_delegate"
        elif key == "msTeamKeys":
            suggest = "ms_team_keys"
        elif key == "pagerDutyIntegrationKeys":
            suggest = "pager_duty_integration_keys"
        elif key == "slackWebhookUrls":
            suggest = "slack_webhook_urls"
        elif key == "userGroups":
            suggest = "user_groups"
        elif key == "webhookUrls":
            suggest = "webhook_urls"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in CentralNotificationChannelChannel. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        CentralNotificationChannelChannel.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        CentralNotificationChannelChannel.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api_key: Optional[_builtins.str] = None,
                 datadog_urls: Optional[Sequence[_builtins.str]] = None,
                 delegate_selectors: Optional[Sequence[_builtins.str]] = None,
                 email_ids: Optional[Sequence[_builtins.str]] = None,
                 execute_on_delegate: Optional[_builtins.bool] = None,
                 headers: Optional[Sequence['outputs.CentralNotificationChannelChannelHeader']] = None,
                 ms_team_keys: Optional[Sequence[_builtins.str]] = None,
                 pager_duty_integration_keys: Optional[Sequence[_builtins.str]] = None,
                 slack_webhook_urls: Optional[Sequence[_builtins.str]] = None,
                 user_groups: Optional[Sequence['outputs.CentralNotificationChannelChannelUserGroup']] = None,
                 webhook_urls: Optional[Sequence[_builtins.str]] = None):
        if api_key is not None:
            pulumi.set(__self__, "api_key", api_key)
        if datadog_urls is not None:
            pulumi.set(__self__, "datadog_urls", datadog_urls)
        if delegate_selectors is not None:
            pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        if email_ids is not None:
            pulumi.set(__self__, "email_ids", email_ids)
        if execute_on_delegate is not None:
            pulumi.set(__self__, "execute_on_delegate", execute_on_delegate)
        if headers is not None:
            pulumi.set(__self__, "headers", headers)
        if ms_team_keys is not None:
            pulumi.set(__self__, "ms_team_keys", ms_team_keys)
        if pager_duty_integration_keys is not None:
            pulumi.set(__self__, "pager_duty_integration_keys", pager_duty_integration_keys)
        if slack_webhook_urls is not None:
            pulumi.set(__self__, "slack_webhook_urls", slack_webhook_urls)
        if user_groups is not None:
            pulumi.set(__self__, "user_groups", user_groups)
        if webhook_urls is not None:
            pulumi.set(__self__, "webhook_urls", webhook_urls)

    @_builtins.property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "api_key")

    @_builtins.property
    @pulumi.getter(name="datadogUrls")
    def datadog_urls(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "datadog_urls")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter(name="emailIds")
    def email_ids(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "email_ids")

    @_builtins.property
    @pulumi.getter(name="executeOnDelegate")
    def execute_on_delegate(self) -> Optional[_builtins.bool]:
        return pulumi.get(self, "execute_on_delegate")

    @_builtins.property
    @pulumi.getter
    def headers(self) -> Optional[Sequence['outputs.CentralNotificationChannelChannelHeader']]:
        return pulumi.get(self, "headers")

    @_builtins.property
    @pulumi.getter(name="msTeamKeys")
    def ms_team_keys(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "ms_team_keys")

    @_builtins.property
    @pulumi.getter(name="pagerDutyIntegrationKeys")
    def pager_duty_integration_keys(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "pager_duty_integration_keys")

    @_builtins.property
    @pulumi.getter(name="slackWebhookUrls")
    def slack_webhook_urls(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "slack_webhook_urls")

    @_builtins.property
    @pulumi.getter(name="userGroups")
    def user_groups(self) -> Optional[Sequence['outputs.CentralNotificationChannelChannelUserGroup']]:
        return pulumi.get(self, "user_groups")

    @_builtins.property
    @pulumi.getter(name="webhookUrls")
    def webhook_urls(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "webhook_urls")


@pulumi.output_type
class CentralNotificationChannelChannelHeader(dict):
    def __init__(__self__, *,
                 key: _builtins.str,
                 value: _builtins.str):
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        return pulumi.get(self, "value")


@pulumi.output_type
class CentralNotificationChannelChannelUserGroup(dict):
    def __init__(__self__, *,
                 identifier: _builtins.str):
        pulumi.set(__self__, "identifier", identifier)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        return pulumi.get(self, "identifier")


@pulumi.output_type
class CentralNotificationRuleCustomNotificationTemplateRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "templateRef":
            suggest = "template_ref"
        elif key == "versionLabel":
            suggest = "version_label"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in CentralNotificationRuleCustomNotificationTemplateRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        CentralNotificationRuleCustomNotificationTemplateRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        CentralNotificationRuleCustomNotificationTemplateRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 template_ref: _builtins.str,
                 version_label: _builtins.str,
                 variables: Optional[Sequence['outputs.CentralNotificationRuleCustomNotificationTemplateRefVariable']] = None):
        pulumi.set(__self__, "template_ref", template_ref)
        pulumi.set(__self__, "version_label", version_label)
        if variables is not None:
            pulumi.set(__self__, "variables", variables)

    @_builtins.property
    @pulumi.getter(name="templateRef")
    def template_ref(self) -> _builtins.str:
        return pulumi.get(self, "template_ref")

    @_builtins.property
    @pulumi.getter(name="versionLabel")
    def version_label(self) -> _builtins.str:
        return pulumi.get(self, "version_label")

    @_builtins.property
    @pulumi.getter
    def variables(self) -> Optional[Sequence['outputs.CentralNotificationRuleCustomNotificationTemplateRefVariable']]:
        return pulumi.get(self, "variables")


@pulumi.output_type
class CentralNotificationRuleCustomNotificationTemplateRefVariable(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 value: _builtins.str,
                 type: Optional[_builtins.str] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "type")


@pulumi.output_type
class CentralNotificationRuleNotificationCondition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "conditionName":
            suggest = "condition_name"
        elif key == "notificationEventConfigs":
            suggest = "notification_event_configs"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in CentralNotificationRuleNotificationCondition. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        CentralNotificationRuleNotificationCondition.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        CentralNotificationRuleNotificationCondition.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 condition_name: _builtins.str,
                 notification_event_configs: Sequence['outputs.CentralNotificationRuleNotificationConditionNotificationEventConfig']):
        pulumi.set(__self__, "condition_name", condition_name)
        pulumi.set(__self__, "notification_event_configs", notification_event_configs)

    @_builtins.property
    @pulumi.getter(name="conditionName")
    def condition_name(self) -> _builtins.str:
        return pulumi.get(self, "condition_name")

    @_builtins.property
    @pulumi.getter(name="notificationEventConfigs")
    def notification_event_configs(self) -> Sequence['outputs.CentralNotificationRuleNotificationConditionNotificationEventConfig']:
        return pulumi.get(self, "notification_event_configs")


@pulumi.output_type
class CentralNotificationRuleNotificationConditionNotificationEventConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "notificationEntity":
            suggest = "notification_entity"
        elif key == "notificationEvent":
            suggest = "notification_event"
        elif key == "entityIdentifiers":
            suggest = "entity_identifiers"
        elif key == "notificationEventData":
            suggest = "notification_event_data"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in CentralNotificationRuleNotificationConditionNotificationEventConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        CentralNotificationRuleNotificationConditionNotificationEventConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        CentralNotificationRuleNotificationConditionNotificationEventConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 notification_entity: _builtins.str,
                 notification_event: _builtins.str,
                 entity_identifiers: Optional[Sequence[_builtins.str]] = None,
                 notification_event_data: Optional[Mapping[str, _builtins.str]] = None):
        pulumi.set(__self__, "notification_entity", notification_entity)
        pulumi.set(__self__, "notification_event", notification_event)
        if entity_identifiers is not None:
            pulumi.set(__self__, "entity_identifiers", entity_identifiers)
        if notification_event_data is not None:
            pulumi.set(__self__, "notification_event_data", notification_event_data)

    @_builtins.property
    @pulumi.getter(name="notificationEntity")
    def notification_entity(self) -> _builtins.str:
        return pulumi.get(self, "notification_entity")

    @_builtins.property
    @pulumi.getter(name="notificationEvent")
    def notification_event(self) -> _builtins.str:
        return pulumi.get(self, "notification_event")

    @_builtins.property
    @pulumi.getter(name="entityIdentifiers")
    def entity_identifiers(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "entity_identifiers")

    @_builtins.property
    @pulumi.getter(name="notificationEventData")
    def notification_event_data(self) -> Optional[Mapping[str, _builtins.str]]:
        return pulumi.get(self, "notification_event_data")


@pulumi.output_type
class ConnectorAzureArtifactsCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorAzureArtifactsCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorAzureArtifactsCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorAzureArtifactsCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 token_ref: _builtins.str):
        """
        :param _builtins.str token_ref: Reference to a secret containing the token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class ConnectorAzureRepoApiAuthentication(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorAzureRepoApiAuthentication. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorAzureRepoApiAuthentication.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorAzureRepoApiAuthentication.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 token_ref: _builtins.str):
        """
        :param _builtins.str token_ref: Personal access token for interacting with the azure api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Personal access token for interacting with the azure api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class ConnectorAzureRepoCredentials(dict):
    def __init__(__self__, *,
                 http: Optional['outputs.ConnectorAzureRepoCredentialsHttp'] = None,
                 ssh: Optional['outputs.ConnectorAzureRepoCredentialsSsh'] = None):
        """
        :param 'ConnectorAzureRepoCredentialsHttpArgs' http: Authenticate using Username and token over http(s) for the connection.
        :param 'ConnectorAzureRepoCredentialsSshArgs' ssh: Authenticate using SSH for the connection.
        """
        if http is not None:
            pulumi.set(__self__, "http", http)
        if ssh is not None:
            pulumi.set(__self__, "ssh", ssh)

    @_builtins.property
    @pulumi.getter
    def http(self) -> Optional['outputs.ConnectorAzureRepoCredentialsHttp']:
        """
        Authenticate using Username and token over http(s) for the connection.
        """
        return pulumi.get(self, "http")

    @_builtins.property
    @pulumi.getter
    def ssh(self) -> Optional['outputs.ConnectorAzureRepoCredentialsSsh']:
        """
        Authenticate using SSH for the connection.
        """
        return pulumi.get(self, "ssh")


@pulumi.output_type
class ConnectorAzureRepoCredentialsHttp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorAzureRepoCredentialsHttp. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorAzureRepoCredentialsHttp.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorAzureRepoCredentialsHttp.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 token_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str token_ref: Reference to a secret containing the personal access to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the personal access to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class ConnectorAzureRepoCredentialsSsh(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "sshKeyRef":
            suggest = "ssh_key_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorAzureRepoCredentialsSsh. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorAzureRepoCredentialsSsh.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorAzureRepoCredentialsSsh.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ssh_key_ref: _builtins.str):
        """
        :param _builtins.str ssh_key_ref: Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "ssh_key_ref", ssh_key_ref)

    @_builtins.property
    @pulumi.getter(name="sshKeyRef")
    def ssh_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ssh_key_ref")


@pulumi.output_type
class ConnectorCustomSecretManagerTemplateInput(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "environmentVariables":
            suggest = "environment_variables"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorCustomSecretManagerTemplateInput. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorCustomSecretManagerTemplateInput.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorCustomSecretManagerTemplateInput.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 environment_variables: Optional[Sequence['outputs.ConnectorCustomSecretManagerTemplateInputEnvironmentVariable']] = None):
        if environment_variables is not None:
            pulumi.set(__self__, "environment_variables", environment_variables)

    @_builtins.property
    @pulumi.getter(name="environmentVariables")
    def environment_variables(self) -> Optional[Sequence['outputs.ConnectorCustomSecretManagerTemplateInputEnvironmentVariable']]:
        return pulumi.get(self, "environment_variables")


@pulumi.output_type
class ConnectorCustomSecretManagerTemplateInputEnvironmentVariable(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 type: _builtins.str,
                 value: _builtins.str,
                 default: Optional[_builtins.bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "value", value)
        if default is not None:
            pulumi.set(__self__, "default", default)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter
    def default(self) -> Optional[_builtins.bool]:
        return pulumi.get(self, "default")


@pulumi.output_type
class ConnectorCustomhealthsourceHeader(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "encryptedValueRef":
            suggest = "encrypted_value_ref"
        elif key == "valueEncrypted":
            suggest = "value_encrypted"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorCustomhealthsourceHeader. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorCustomhealthsourceHeader.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorCustomhealthsourceHeader.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 encrypted_value_ref: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None,
                 value_encrypted: Optional[_builtins.bool] = None):
        """
        :param _builtins.str key: Key.
        :param _builtins.str encrypted_value_ref: Reference to the Harness secret containing the encrypted value. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str value: Value.
        :param _builtins.bool value_encrypted: Encrypted value.
        """
        pulumi.set(__self__, "key", key)
        if encrypted_value_ref is not None:
            pulumi.set(__self__, "encrypted_value_ref", encrypted_value_ref)
        if value is not None:
            pulumi.set(__self__, "value", value)
        if value_encrypted is not None:
            pulumi.set(__self__, "value_encrypted", value_encrypted)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="encryptedValueRef")
    def encrypted_value_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the Harness secret containing the encrypted value. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "encrypted_value_ref")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value.
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueEncrypted")
    def value_encrypted(self) -> Optional[_builtins.bool]:
        """
        Encrypted value.
        """
        return pulumi.get(self, "value_encrypted")


@pulumi.output_type
class ConnectorCustomhealthsourceParam(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "encryptedValueRef":
            suggest = "encrypted_value_ref"
        elif key == "valueEncrypted":
            suggest = "value_encrypted"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorCustomhealthsourceParam. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorCustomhealthsourceParam.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorCustomhealthsourceParam.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 encrypted_value_ref: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None,
                 value_encrypted: Optional[_builtins.bool] = None):
        """
        :param _builtins.str key: Key.
        :param _builtins.str encrypted_value_ref: Reference to the Harness secret containing the encrypted value. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str value: Value.
        :param _builtins.bool value_encrypted: Encrypted value.
        """
        pulumi.set(__self__, "key", key)
        if encrypted_value_ref is not None:
            pulumi.set(__self__, "encrypted_value_ref", encrypted_value_ref)
        if value is not None:
            pulumi.set(__self__, "value", value)
        if value_encrypted is not None:
            pulumi.set(__self__, "value_encrypted", value_encrypted)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="encryptedValueRef")
    def encrypted_value_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the Harness secret containing the encrypted value. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "encrypted_value_ref")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value.
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueEncrypted")
    def value_encrypted(self) -> Optional[_builtins.bool]:
        """
        Encrypted value.
        """
        return pulumi.get(self, "value_encrypted")


@pulumi.output_type
class ConnectorGcpKmsManual(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "delegateSelectors":
            suggest = "delegate_selectors"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorGcpKmsManual. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorGcpKmsManual.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorGcpKmsManual.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 credentials: _builtins.str,
                 delegate_selectors: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str credentials: Reference to the Harness secret containing the secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param Sequence[_builtins.str] delegate_selectors: The delegates to connect with.
        """
        pulumi.set(__self__, "credentials", credentials)
        if delegate_selectors is not None:
            pulumi.set(__self__, "delegate_selectors", delegate_selectors)

    @_builtins.property
    @pulumi.getter
    def credentials(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "credentials")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Optional[Sequence[_builtins.str]]:
        """
        The delegates to connect with.
        """
        return pulumi.get(self, "delegate_selectors")


@pulumi.output_type
class ConnectorGcpKmsOidcAuthentication(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "gcpProjectId":
            suggest = "gcp_project_id"
        elif key == "providerId":
            suggest = "provider_id"
        elif key == "serviceAccountEmail":
            suggest = "service_account_email"
        elif key == "workloadPoolId":
            suggest = "workload_pool_id"
        elif key == "delegateSelectors":
            suggest = "delegate_selectors"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorGcpKmsOidcAuthentication. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorGcpKmsOidcAuthentication.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorGcpKmsOidcAuthentication.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 gcp_project_id: _builtins.str,
                 provider_id: _builtins.str,
                 service_account_email: _builtins.str,
                 workload_pool_id: _builtins.str,
                 delegate_selectors: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str gcp_project_id: The project number of the GCP project that is used to create the workload identity.
        :param _builtins.str provider_id: The OIDC provider ID value configured in GCP.
        :param _builtins.str service_account_email: The service account linked to workload identity pool while setting GCP workload identity provider.
        :param _builtins.str workload_pool_id: The workload pool ID value created in GCP.
        :param Sequence[_builtins.str] delegate_selectors: The delegates to inherit the credentials from.
        """
        pulumi.set(__self__, "gcp_project_id", gcp_project_id)
        pulumi.set(__self__, "provider_id", provider_id)
        pulumi.set(__self__, "service_account_email", service_account_email)
        pulumi.set(__self__, "workload_pool_id", workload_pool_id)
        if delegate_selectors is not None:
            pulumi.set(__self__, "delegate_selectors", delegate_selectors)

    @_builtins.property
    @pulumi.getter(name="gcpProjectId")
    def gcp_project_id(self) -> _builtins.str:
        """
        The project number of the GCP project that is used to create the workload identity.
        """
        return pulumi.get(self, "gcp_project_id")

    @_builtins.property
    @pulumi.getter(name="providerId")
    def provider_id(self) -> _builtins.str:
        """
        The OIDC provider ID value configured in GCP.
        """
        return pulumi.get(self, "provider_id")

    @_builtins.property
    @pulumi.getter(name="serviceAccountEmail")
    def service_account_email(self) -> _builtins.str:
        """
        The service account linked to workload identity pool while setting GCP workload identity provider.
        """
        return pulumi.get(self, "service_account_email")

    @_builtins.property
    @pulumi.getter(name="workloadPoolId")
    def workload_pool_id(self) -> _builtins.str:
        """
        The workload pool ID value created in GCP.
        """
        return pulumi.get(self, "workload_pool_id")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Optional[Sequence[_builtins.str]]:
        """
        The delegates to inherit the credentials from.
        """
        return pulumi.get(self, "delegate_selectors")


@pulumi.output_type
class ConnectorJdbcCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "authType":
            suggest = "auth_type"
        elif key == "passwordRef":
            suggest = "password_ref"
        elif key == "serviceAccount":
            suggest = "service_account"
        elif key == "usernamePassword":
            suggest = "username_password"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorJdbcCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorJdbcCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorJdbcCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 auth_type: Optional[_builtins.str] = None,
                 password_ref: Optional[_builtins.str] = None,
                 service_account: Optional['outputs.ConnectorJdbcCredentialsServiceAccount'] = None,
                 username: Optional[_builtins.str] = None,
                 username_password: Optional['outputs.ConnectorJdbcCredentialsUsernamePassword'] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str auth_type: Authentication types for JDBC connector
        :param _builtins.str password_ref: The reference to the Harness secret containing the password to use for the database server. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param 'ConnectorJdbcCredentialsServiceAccountArgs' service_account: Authenticate using service account.
        :param _builtins.str username: The username to use for the database server.
        :param 'ConnectorJdbcCredentialsUsernamePasswordArgs' username_password: Authenticate using username password.
        :param _builtins.str username_ref: The reference to the Harness secret containing the username to use for the database server. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if service_account is not None:
            pulumi.set(__self__, "service_account", service_account)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_password is not None:
            pulumi.set(__self__, "username_password", username_password)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[_builtins.str]:
        """
        Authentication types for JDBC connector
        """
        return pulumi.get(self, "auth_type")

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional[_builtins.str]:
        """
        The reference to the Harness secret containing the password to use for the database server. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter(name="serviceAccount")
    def service_account(self) -> Optional['outputs.ConnectorJdbcCredentialsServiceAccount']:
        """
        Authenticate using service account.
        """
        return pulumi.get(self, "service_account")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        The username to use for the database server.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernamePassword")
    def username_password(self) -> Optional['outputs.ConnectorJdbcCredentialsUsernamePassword']:
        """
        Authenticate using username password.
        """
        return pulumi.get(self, "username_password")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        The reference to the Harness secret containing the username to use for the database server. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class ConnectorJdbcCredentialsServiceAccount(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorJdbcCredentialsServiceAccount. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorJdbcCredentialsServiceAccount.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorJdbcCredentialsServiceAccount.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 token_ref: _builtins.str):
        """
        :param _builtins.str token_ref: Reference to a secret containing the token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class ConnectorJdbcCredentialsUsernamePassword(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorJdbcCredentialsUsernamePassword. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorJdbcCredentialsUsernamePassword.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorJdbcCredentialsUsernamePassword.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class ConnectorPdcHost(dict):
    def __init__(__self__, *,
                 hostname: _builtins.str,
                 attributes: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.str hostname: hostname
        :param Mapping[str, _builtins.str] attributes: attributes for current host
        """
        pulumi.set(__self__, "hostname", hostname)
        if attributes is not None:
            pulumi.set(__self__, "attributes", attributes)

    @_builtins.property
    @pulumi.getter
    def hostname(self) -> _builtins.str:
        """
        hostname
        """
        return pulumi.get(self, "hostname")

    @_builtins.property
    @pulumi.getter
    def attributes(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        attributes for current host
        """
        return pulumi.get(self, "attributes")


@pulumi.output_type
class ConnectorRancherBearerToken(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "bearerTokenRef":
            suggest = "bearer_token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ConnectorRancherBearerToken. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ConnectorRancherBearerToken.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ConnectorRancherBearerToken.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 bearer_token_ref: _builtins.str):
        """
        :param _builtins.str bearer_token_ref: Reference to the secret containing the bearer token for the rancher cluster. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "bearer_token_ref", bearer_token_ref)

    @_builtins.property
    @pulumi.getter(name="bearerTokenRef")
    def bearer_token_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the bearer token for the rancher cluster. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "bearer_token_ref")


@pulumi.output_type
class DbSchemaChangelogScript(dict):
    def __init__(__self__, *,
                 command: Optional[_builtins.str] = None,
                 image: Optional[_builtins.str] = None,
                 location: Optional[_builtins.str] = None,
                 shell: Optional[_builtins.str] = None,
                 toml: Optional[_builtins.str] = None):
        """
        :param _builtins.str command: Script to clone changeSets
        :param _builtins.str image: The fully-qualified name (FQN) of the image
        :param _builtins.str location: Path to changeLog file
        :param _builtins.str shell: Type of the shell. For example Sh or Bash
        :param _builtins.str toml: Config file, to define various settings and properties for managing database schema change
        """
        if command is not None:
            pulumi.set(__self__, "command", command)
        if image is not None:
            pulumi.set(__self__, "image", image)
        if location is not None:
            pulumi.set(__self__, "location", location)
        if shell is not None:
            pulumi.set(__self__, "shell", shell)
        if toml is not None:
            pulumi.set(__self__, "toml", toml)

    @_builtins.property
    @pulumi.getter
    def command(self) -> Optional[_builtins.str]:
        """
        Script to clone changeSets
        """
        return pulumi.get(self, "command")

    @_builtins.property
    @pulumi.getter
    def image(self) -> Optional[_builtins.str]:
        """
        The fully-qualified name (FQN) of the image
        """
        return pulumi.get(self, "image")

    @_builtins.property
    @pulumi.getter
    def location(self) -> Optional[_builtins.str]:
        """
        Path to changeLog file
        """
        return pulumi.get(self, "location")

    @_builtins.property
    @pulumi.getter
    def shell(self) -> Optional[_builtins.str]:
        """
        Type of the shell. For example Sh or Bash
        """
        return pulumi.get(self, "shell")

    @_builtins.property
    @pulumi.getter
    def toml(self) -> Optional[_builtins.str]:
        """
        Config file, to define various settings and properties for managing database schema change
        """
        return pulumi.get(self, "toml")


@pulumi.output_type
class DbSchemaSchemaSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "archivePath":
            suggest = "archive_path"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DbSchemaSchemaSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DbSchemaSchemaSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DbSchemaSchemaSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 connector: _builtins.str,
                 location: _builtins.str,
                 archive_path: Optional[_builtins.str] = None,
                 repo: Optional[_builtins.str] = None,
                 toml: Optional[_builtins.str] = None):
        """
        :param _builtins.str connector: Connector to repository at which to find details about the database schema
        :param _builtins.str location: The path within the specified repository at which to find details about the database schema
        :param _builtins.str archive_path: If connector type is artifactory, path to the archive file which contains the changeLog
        :param _builtins.str repo: If connector url is of account, which repository to connect to using the connector
        :param _builtins.str toml: Config file, to define various settings and properties for managing database schema change
        """
        pulumi.set(__self__, "connector", connector)
        pulumi.set(__self__, "location", location)
        if archive_path is not None:
            pulumi.set(__self__, "archive_path", archive_path)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)
        if toml is not None:
            pulumi.set(__self__, "toml", toml)

    @_builtins.property
    @pulumi.getter
    def connector(self) -> _builtins.str:
        """
        Connector to repository at which to find details about the database schema
        """
        return pulumi.get(self, "connector")

    @_builtins.property
    @pulumi.getter
    def location(self) -> _builtins.str:
        """
        The path within the specified repository at which to find details about the database schema
        """
        return pulumi.get(self, "location")

    @_builtins.property
    @pulumi.getter(name="archivePath")
    def archive_path(self) -> Optional[_builtins.str]:
        """
        If connector type is artifactory, path to the archive file which contains the changeLog
        """
        return pulumi.get(self, "archive_path")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> Optional[_builtins.str]:
        """
        If connector url is of account, which repository to connect to using the connector
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def toml(self) -> Optional[_builtins.str]:
        """
        Config file, to define various settings and properties for managing database schema change
        """
        return pulumi.get(self, "toml")


@pulumi.output_type
class DefaultNotificationTemplateSetEventTemplateConfigurationSet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "notificationEvents":
            suggest = "notification_events"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DefaultNotificationTemplateSetEventTemplateConfigurationSet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DefaultNotificationTemplateSetEventTemplateConfigurationSet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DefaultNotificationTemplateSetEventTemplateConfigurationSet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 notification_events: Sequence[_builtins.str],
                 template: 'outputs.DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplate'):
        """
        :param Sequence[_builtins.str] notification_events: List of notification events like PIPELINE_START
        :param 'DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateArgs' template: Template reference configuration
        """
        pulumi.set(__self__, "notification_events", notification_events)
        pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="notificationEvents")
    def notification_events(self) -> Sequence[_builtins.str]:
        """
        List of notification events like PIPELINE_START
        """
        return pulumi.get(self, "notification_events")

    @_builtins.property
    @pulumi.getter
    def template(self) -> 'outputs.DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplate':
        """
        Template reference configuration
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplate(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "templateRef":
            suggest = "template_ref"
        elif key == "versionLabel":
            suggest = "version_label"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplate. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplate.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplate.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 template_ref: _builtins.str,
                 version_label: _builtins.str,
                 variables: Optional[Sequence['outputs.DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateVariable']] = None):
        """
        :param Sequence['DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateVariableArgs'] variables: List of variables passed to the template
        """
        pulumi.set(__self__, "template_ref", template_ref)
        pulumi.set(__self__, "version_label", version_label)
        if variables is not None:
            pulumi.set(__self__, "variables", variables)

    @_builtins.property
    @pulumi.getter(name="templateRef")
    def template_ref(self) -> _builtins.str:
        return pulumi.get(self, "template_ref")

    @_builtins.property
    @pulumi.getter(name="versionLabel")
    def version_label(self) -> _builtins.str:
        return pulumi.get(self, "version_label")

    @_builtins.property
    @pulumi.getter
    def variables(self) -> Optional[Sequence['outputs.DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateVariable']]:
        """
        List of variables passed to the template
        """
        return pulumi.get(self, "variables")


@pulumi.output_type
class DefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateVariable(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 type: _builtins.str,
                 value: _builtins.str):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        return pulumi.get(self, "value")


@pulumi.output_type
class DockerConnectorCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DockerConnectorCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DockerConnectorCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DockerConnectorCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str password_ref: The reference to the Harness secret containing the password to use for the docker registry. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: The username to use for the docker registry.
        :param _builtins.str username_ref: The reference to the Harness secret containing the username to use for the docker registry. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        The reference to the Harness secret containing the password to use for the docker registry. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        The username to use for the docker registry.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        The reference to the Harness secret containing the username to use for the docker registry. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class ElasticsearchConnectorApiToken(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientId":
            suggest = "client_id"
        elif key == "clientSecretRef":
            suggest = "client_secret_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ElasticsearchConnectorApiToken. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ElasticsearchConnectorApiToken.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ElasticsearchConnectorApiToken.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 client_id: _builtins.str,
                 client_secret_ref: _builtins.str):
        """
        :param _builtins.str client_id: The API Key id used for connecting to ElasticSearch.
        :param _builtins.str client_secret_ref: Reference to the Harness secret containing the ElasticSearch client secret. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_ref", client_secret_ref)

    @_builtins.property
    @pulumi.getter(name="clientId")
    def client_id(self) -> _builtins.str:
        """
        The API Key id used for connecting to ElasticSearch.
        """
        return pulumi.get(self, "client_id")

    @_builtins.property
    @pulumi.getter(name="clientSecretRef")
    def client_secret_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the ElasticSearch client secret. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_secret_ref")


@pulumi.output_type
class ElasticsearchConnectorNoAuthentication(dict):
    def __init__(__self__):
        pass


@pulumi.output_type
class ElasticsearchConnectorUsernamePassword(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ElasticsearchConnectorUsernamePassword. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ElasticsearchConnectorUsernamePassword.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ElasticsearchConnectorUsernamePassword.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class EnvironmentClustersMappingCluster(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "agentIdentifier":
            suggest = "agent_identifier"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in EnvironmentClustersMappingCluster. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        EnvironmentClustersMappingCluster.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        EnvironmentClustersMappingCluster.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 agent_identifier: Optional[_builtins.str] = None,
                 identifier: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 scope: Optional[_builtins.str] = None):
        """
        :param _builtins.str agent_identifier: agent identifier of the cluster (include scope prefix)
        :param _builtins.str identifier: identifier of the cluster
        :param _builtins.str name: name of the cluster
        :param _builtins.str scope: scope at which the cluster exists in harness gitops, one of "ACCOUNT", "ORGANIZATION", "PROJECT". Scope of environment to which clusters are being mapped must be lower or equal to in hierarchy than the scope of the cluster
        """
        if agent_identifier is not None:
            pulumi.set(__self__, "agent_identifier", agent_identifier)
        if identifier is not None:
            pulumi.set(__self__, "identifier", identifier)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if scope is not None:
            pulumi.set(__self__, "scope", scope)

    @_builtins.property
    @pulumi.getter(name="agentIdentifier")
    def agent_identifier(self) -> Optional[_builtins.str]:
        """
        agent identifier of the cluster (include scope prefix)
        """
        return pulumi.get(self, "agent_identifier")

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> Optional[_builtins.str]:
        """
        identifier of the cluster
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        name of the cluster
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def scope(self) -> Optional[_builtins.str]:
        """
        scope at which the cluster exists in harness gitops, one of "ACCOUNT", "ORGANIZATION", "PROJECT". Scope of environment to which clusters are being mapped must be lower or equal to in hierarchy than the scope of the cluster
        """
        return pulumi.get(self, "scope")


@pulumi.output_type
class EnvironmentGitDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "baseBranch":
            suggest = "base_branch"
        elif key == "commitMessage":
            suggest = "commit_message"
        elif key == "connectorRef":
            suggest = "connector_ref"
        elif key == "filePath":
            suggest = "file_path"
        elif key == "importFromGit":
            suggest = "import_from_git"
        elif key == "isForceImport":
            suggest = "is_force_import"
        elif key == "isHarnesscodeRepo":
            suggest = "is_harnesscode_repo"
        elif key == "isNewBranch":
            suggest = "is_new_branch"
        elif key == "lastCommitId":
            suggest = "last_commit_id"
        elif key == "lastObjectId":
            suggest = "last_object_id"
        elif key == "loadFromCache":
            suggest = "load_from_cache"
        elif key == "loadFromFallbackBranch":
            suggest = "load_from_fallback_branch"
        elif key == "parentEntityConnectorRef":
            suggest = "parent_entity_connector_ref"
        elif key == "parentEntityRepoName":
            suggest = "parent_entity_repo_name"
        elif key == "repoName":
            suggest = "repo_name"
        elif key == "storeType":
            suggest = "store_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in EnvironmentGitDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        EnvironmentGitDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        EnvironmentGitDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 base_branch: Optional[_builtins.str] = None,
                 branch: Optional[_builtins.str] = None,
                 commit_message: Optional[_builtins.str] = None,
                 connector_ref: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 import_from_git: Optional[_builtins.bool] = None,
                 is_force_import: Optional[_builtins.bool] = None,
                 is_harnesscode_repo: Optional[_builtins.bool] = None,
                 is_new_branch: Optional[_builtins.bool] = None,
                 last_commit_id: Optional[_builtins.str] = None,
                 last_object_id: Optional[_builtins.str] = None,
                 load_from_cache: Optional[_builtins.str] = None,
                 load_from_fallback_branch: Optional[_builtins.bool] = None,
                 parent_entity_connector_ref: Optional[_builtins.str] = None,
                 parent_entity_repo_name: Optional[_builtins.str] = None,
                 repo_name: Optional[_builtins.str] = None,
                 store_type: Optional[_builtins.str] = None):
        """
        :param _builtins.str base_branch: Name of the default branch (this checks out a new branch titled by branch_name).
        :param _builtins.str branch: Name of the branch.
        :param _builtins.str commit_message: Commit message used for the merge commit.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.bool import_from_git: import environment from git
        :param _builtins.bool is_force_import: force import environment from remote even if same file path already exist
        :param _builtins.bool is_harnesscode_repo: If the gitProvider is HarnessCode
        :param _builtins.bool is_new_branch: If a new branch creation is requested.
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating Pipeline.
        :param _builtins.str load_from_cache: If the Entity is to be fetched from cache
        :param _builtins.bool load_from_fallback_branch: If the Entity is to be fetched from fallbackBranch
        :param _builtins.str parent_entity_connector_ref: Identifier of the Harness Connector used for CRUD operations on the Parent Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str parent_entity_repo_name: Name of the repository where parent entity lies.
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str store_type: Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        if base_branch is not None:
            pulumi.set(__self__, "base_branch", base_branch)
        if branch is not None:
            pulumi.set(__self__, "branch", branch)
        if commit_message is not None:
            pulumi.set(__self__, "commit_message", commit_message)
        if connector_ref is not None:
            pulumi.set(__self__, "connector_ref", connector_ref)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if import_from_git is not None:
            pulumi.set(__self__, "import_from_git", import_from_git)
        if is_force_import is not None:
            pulumi.set(__self__, "is_force_import", is_force_import)
        if is_harnesscode_repo is not None:
            pulumi.set(__self__, "is_harnesscode_repo", is_harnesscode_repo)
        if is_new_branch is not None:
            pulumi.set(__self__, "is_new_branch", is_new_branch)
        if last_commit_id is not None:
            pulumi.set(__self__, "last_commit_id", last_commit_id)
        if last_object_id is not None:
            pulumi.set(__self__, "last_object_id", last_object_id)
        if load_from_cache is not None:
            pulumi.set(__self__, "load_from_cache", load_from_cache)
        if load_from_fallback_branch is not None:
            pulumi.set(__self__, "load_from_fallback_branch", load_from_fallback_branch)
        if parent_entity_connector_ref is not None:
            pulumi.set(__self__, "parent_entity_connector_ref", parent_entity_connector_ref)
        if parent_entity_repo_name is not None:
            pulumi.set(__self__, "parent_entity_repo_name", parent_entity_repo_name)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)
        if store_type is not None:
            pulumi.set(__self__, "store_type", store_type)

    @_builtins.property
    @pulumi.getter(name="baseBranch")
    def base_branch(self) -> Optional[_builtins.str]:
        """
        Name of the default branch (this checks out a new branch titled by branch_name).
        """
        return pulumi.get(self, "base_branch")

    @_builtins.property
    @pulumi.getter
    def branch(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch")

    @_builtins.property
    @pulumi.getter(name="commitMessage")
    def commit_message(self) -> Optional[_builtins.str]:
        """
        Commit message used for the merge commit.
        """
        return pulumi.get(self, "commit_message")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="importFromGit")
    def import_from_git(self) -> Optional[_builtins.bool]:
        """
        import environment from git
        """
        return pulumi.get(self, "import_from_git")

    @_builtins.property
    @pulumi.getter(name="isForceImport")
    def is_force_import(self) -> Optional[_builtins.bool]:
        """
        force import environment from remote even if same file path already exist
        """
        return pulumi.get(self, "is_force_import")

    @_builtins.property
    @pulumi.getter(name="isHarnesscodeRepo")
    def is_harnesscode_repo(self) -> Optional[_builtins.bool]:
        """
        If the gitProvider is HarnessCode
        """
        return pulumi.get(self, "is_harnesscode_repo")

    @_builtins.property
    @pulumi.getter(name="isNewBranch")
    def is_new_branch(self) -> Optional[_builtins.bool]:
        """
        If a new branch creation is requested.
        """
        return pulumi.get(self, "is_new_branch")

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> Optional[_builtins.str]:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> Optional[_builtins.str]:
        """
        Last object identifier (for Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="loadFromCache")
    def load_from_cache(self) -> Optional[_builtins.str]:
        """
        If the Entity is to be fetched from cache
        """
        return pulumi.get(self, "load_from_cache")

    @_builtins.property
    @pulumi.getter(name="loadFromFallbackBranch")
    def load_from_fallback_branch(self) -> Optional[_builtins.bool]:
        """
        If the Entity is to be fetched from fallbackBranch
        """
        return pulumi.get(self, "load_from_fallback_branch")

    @_builtins.property
    @pulumi.getter(name="parentEntityConnectorRef")
    def parent_entity_connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for CRUD operations on the Parent Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "parent_entity_connector_ref")

    @_builtins.property
    @pulumi.getter(name="parentEntityRepoName")
    def parent_entity_repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository where parent entity lies.
        """
        return pulumi.get(self, "parent_entity_repo_name")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="storeType")
    def store_type(self) -> Optional[_builtins.str]:
        """
        Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        return pulumi.get(self, "store_type")


@pulumi.output_type
class FeatureFlagEnvironment(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "addTargetRules":
            suggest = "add_target_rules"
        elif key == "defaultOffVariation":
            suggest = "default_off_variation"
        elif key == "defaultOnVariation":
            suggest = "default_on_variation"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in FeatureFlagEnvironment. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        FeatureFlagEnvironment.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        FeatureFlagEnvironment.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 identifier: _builtins.str,
                 add_target_rules: Optional[Sequence['outputs.FeatureFlagEnvironmentAddTargetRule']] = None,
                 default_off_variation: Optional[_builtins.str] = None,
                 default_on_variation: Optional[_builtins.str] = None,
                 state: Optional[_builtins.str] = None):
        """
        :param _builtins.str identifier: Identifier of the Environment
        :param Sequence['FeatureFlagEnvironmentAddTargetRuleArgs'] add_target_rules: The targeting rules for the flag
        :param _builtins.str default_off_variation: Default variation to be served when flag is 'off'
        :param _builtins.str default_on_variation: Default variation to be served when flag is 'on'
        :param _builtins.str state: State of the flag in this environment. Possible values are 'on' and 'off'
        """
        pulumi.set(__self__, "identifier", identifier)
        if add_target_rules is not None:
            pulumi.set(__self__, "add_target_rules", add_target_rules)
        if default_off_variation is not None:
            pulumi.set(__self__, "default_off_variation", default_off_variation)
        if default_on_variation is not None:
            pulumi.set(__self__, "default_on_variation", default_on_variation)
        if state is not None:
            pulumi.set(__self__, "state", state)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        """
        Identifier of the Environment
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter(name="addTargetRules")
    def add_target_rules(self) -> Optional[Sequence['outputs.FeatureFlagEnvironmentAddTargetRule']]:
        """
        The targeting rules for the flag
        """
        return pulumi.get(self, "add_target_rules")

    @_builtins.property
    @pulumi.getter(name="defaultOffVariation")
    def default_off_variation(self) -> Optional[_builtins.str]:
        """
        Default variation to be served when flag is 'off'
        """
        return pulumi.get(self, "default_off_variation")

    @_builtins.property
    @pulumi.getter(name="defaultOnVariation")
    def default_on_variation(self) -> Optional[_builtins.str]:
        """
        Default variation to be served when flag is 'on'
        """
        return pulumi.get(self, "default_on_variation")

    @_builtins.property
    @pulumi.getter
    def state(self) -> Optional[_builtins.str]:
        """
        State of the flag in this environment. Possible values are 'on' and 'off'
        """
        return pulumi.get(self, "state")


@pulumi.output_type
class FeatureFlagEnvironmentAddTargetRule(dict):
    def __init__(__self__, *,
                 targets: Optional[Sequence[_builtins.str]] = None,
                 variation: Optional[_builtins.str] = None):
        """
        :param Sequence[_builtins.str] targets: The targets that should be served this variation
        :param _builtins.str variation: The identifier of the variation
        """
        if targets is not None:
            pulumi.set(__self__, "targets", targets)
        if variation is not None:
            pulumi.set(__self__, "variation", variation)

    @_builtins.property
    @pulumi.getter
    def targets(self) -> Optional[Sequence[_builtins.str]]:
        """
        The targets that should be served this variation
        """
        return pulumi.get(self, "targets")

    @_builtins.property
    @pulumi.getter
    def variation(self) -> Optional[_builtins.str]:
        """
        The identifier of the variation
        """
        return pulumi.get(self, "variation")


@pulumi.output_type
class FeatureFlagTag(dict):
    def __init__(__self__, *,
                 identifier: _builtins.str):
        """
        :param _builtins.str identifier: The identifier of the tag
        """
        pulumi.set(__self__, "identifier", identifier)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        """
        The identifier of the tag
        """
        return pulumi.get(self, "identifier")


@pulumi.output_type
class FeatureFlagTargetGroupRule(dict):
    def __init__(__self__, *,
                 attribute: _builtins.str,
                 op: _builtins.str,
                 values: Sequence[_builtins.str],
                 id: Optional[_builtins.str] = None,
                 negate: Optional[_builtins.bool] = None):
        """
        :param _builtins.str attribute: The attribute to use in the clause.  This can be any target attribute
        :param _builtins.str op: The type of operation such as equals, starts_with, contains
        :param Sequence[_builtins.str] values: The values that are compared against the operator
        :param _builtins.str id: The rule ID. Gets auto-generated by the system
        :param _builtins.bool negate: Is the operation negated?
        """
        pulumi.set(__self__, "attribute", attribute)
        pulumi.set(__self__, "op", op)
        pulumi.set(__self__, "values", values)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if negate is not None:
            pulumi.set(__self__, "negate", negate)

    @_builtins.property
    @pulumi.getter
    def attribute(self) -> _builtins.str:
        """
        The attribute to use in the clause.  This can be any target attribute
        """
        return pulumi.get(self, "attribute")

    @_builtins.property
    @pulumi.getter
    def op(self) -> _builtins.str:
        """
        The type of operation such as equals, starts_with, contains
        """
        return pulumi.get(self, "op")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Sequence[_builtins.str]:
        """
        The values that are compared against the operator
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter
    def id(self) -> Optional[_builtins.str]:
        """
        The rule ID. Gets auto-generated by the system
        """
        return pulumi.get(self, "id")

    @_builtins.property
    @pulumi.getter
    def negate(self) -> Optional[_builtins.bool]:
        """
        Is the operation negated?
        """
        return pulumi.get(self, "negate")


@pulumi.output_type
class FeatureFlagVariation(dict):
    def __init__(__self__, *,
                 description: _builtins.str,
                 identifier: _builtins.str,
                 name: _builtins.str,
                 value: _builtins.str):
        """
        :param _builtins.str description: The description of the variation
        :param _builtins.str identifier: The identifier of the variation
        :param _builtins.str name: The user friendly name of the variation
        :param _builtins.str value: The value of the variation
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def description(self) -> _builtins.str:
        """
        The description of the variation
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        """
        The identifier of the variation
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        The user friendly name of the variation
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        The value of the variation
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class FileStoreFileCreatedBy(dict):
    def __init__(__self__, *,
                 email: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param _builtins.str email: User email
        :param _builtins.str name: User name
        """
        if email is not None:
            pulumi.set(__self__, "email", email)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def email(self) -> Optional[_builtins.str]:
        """
        User email
        """
        return pulumi.get(self, "email")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        User name
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class FileStoreFileLastModifiedBy(dict):
    def __init__(__self__, *,
                 email: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param _builtins.str email: User email
        :param _builtins.str name: User name
        """
        if email is not None:
            pulumi.set(__self__, "email", email)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def email(self) -> Optional[_builtins.str]:
        """
        User email
        """
        return pulumi.get(self, "email")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        User name
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class FileStoreFolderCreatedBy(dict):
    def __init__(__self__, *,
                 email: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param _builtins.str email: User email
        :param _builtins.str name: User name
        """
        if email is not None:
            pulumi.set(__self__, "email", email)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def email(self) -> Optional[_builtins.str]:
        """
        User email
        """
        return pulumi.get(self, "email")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        User name
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class FileStoreFolderLastModifiedBy(dict):
    def __init__(__self__, *,
                 email: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param _builtins.str email: User email
        :param _builtins.str name: User name
        """
        if email is not None:
            pulumi.set(__self__, "email", email)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def email(self) -> Optional[_builtins.str]:
        """
        User email
        """
        return pulumi.get(self, "email")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        User name
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class FiltersFilterProperties(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "filterType":
            suggest = "filter_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in FiltersFilterProperties. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        FiltersFilterProperties.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        FiltersFilterProperties.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 filter_type: _builtins.str,
                 tags: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str filter_type: Corresponding Entity of the filter. Currently supported types are {Connector, DelegateProfile, Delegate, EnvironmentGroup, FileStore, Environment}.
        :param Sequence[_builtins.str] tags: Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        pulumi.set(__self__, "filter_type", filter_type)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @_builtins.property
    @pulumi.getter(name="filterType")
    def filter_type(self) -> _builtins.str:
        """
        Corresponding Entity of the filter. Currently supported types are {Connector, DelegateProfile, Delegate, EnvironmentGroup, FileStore, Environment}.
        """
        return pulumi.get(self, "filter_type")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Optional[Sequence[_builtins.str]]:
        """
        Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        return pulumi.get(self, "tags")


@pulumi.output_type
class GcpCloudCostConnectorBillingExportSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "dataSetId":
            suggest = "data_set_id"
        elif key == "tableId":
            suggest = "table_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GcpCloudCostConnectorBillingExportSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GcpCloudCostConnectorBillingExportSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GcpCloudCostConnectorBillingExportSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 data_set_id: _builtins.str,
                 table_id: _builtins.str):
        """
        :param _builtins.str data_set_id: Data Set Id.
        :param _builtins.str table_id: Table Id.
        """
        pulumi.set(__self__, "data_set_id", data_set_id)
        pulumi.set(__self__, "table_id", table_id)

    @_builtins.property
    @pulumi.getter(name="dataSetId")
    def data_set_id(self) -> _builtins.str:
        """
        Data Set Id.
        """
        return pulumi.get(self, "data_set_id")

    @_builtins.property
    @pulumi.getter(name="tableId")
    def table_id(self) -> _builtins.str:
        """
        Table Id.
        """
        return pulumi.get(self, "table_id")


@pulumi.output_type
class GcpConnectorInheritFromDelegate(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "delegateSelectors":
            suggest = "delegate_selectors"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GcpConnectorInheritFromDelegate. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GcpConnectorInheritFromDelegate.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GcpConnectorInheritFromDelegate.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 delegate_selectors: Sequence[_builtins.str]):
        """
        :param Sequence[_builtins.str] delegate_selectors: The delegates to inherit the credentials from.
        """
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        The delegates to inherit the credentials from.
        """
        return pulumi.get(self, "delegate_selectors")


@pulumi.output_type
class GcpConnectorManual(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretKeyRef":
            suggest = "secret_key_ref"
        elif key == "delegateSelectors":
            suggest = "delegate_selectors"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GcpConnectorManual. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GcpConnectorManual.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GcpConnectorManual.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 secret_key_ref: _builtins.str,
                 delegate_selectors: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str secret_key_ref: Reference to the Harness secret containing the secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param Sequence[_builtins.str] delegate_selectors: The delegates to connect with.
        """
        pulumi.set(__self__, "secret_key_ref", secret_key_ref)
        if delegate_selectors is not None:
            pulumi.set(__self__, "delegate_selectors", delegate_selectors)

    @_builtins.property
    @pulumi.getter(name="secretKeyRef")
    def secret_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "secret_key_ref")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Optional[Sequence[_builtins.str]]:
        """
        The delegates to connect with.
        """
        return pulumi.get(self, "delegate_selectors")


@pulumi.output_type
class GcpConnectorOidcAuthentication(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "gcpProjectId":
            suggest = "gcp_project_id"
        elif key == "providerId":
            suggest = "provider_id"
        elif key == "serviceAccountEmail":
            suggest = "service_account_email"
        elif key == "workloadPoolId":
            suggest = "workload_pool_id"
        elif key == "delegateSelectors":
            suggest = "delegate_selectors"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GcpConnectorOidcAuthentication. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GcpConnectorOidcAuthentication.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GcpConnectorOidcAuthentication.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 gcp_project_id: _builtins.str,
                 provider_id: _builtins.str,
                 service_account_email: _builtins.str,
                 workload_pool_id: _builtins.str,
                 delegate_selectors: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str gcp_project_id: The project number of the GCP project that is used to create the workload identity.
        :param _builtins.str provider_id: The OIDC provider ID value configured in GCP.
        :param _builtins.str service_account_email: The service account linked to workload identity pool while setting GCP workload identity provider.
        :param _builtins.str workload_pool_id: The workload pool ID value created in GCP.
        :param Sequence[_builtins.str] delegate_selectors: The delegates to inherit the credentials from.
        """
        pulumi.set(__self__, "gcp_project_id", gcp_project_id)
        pulumi.set(__self__, "provider_id", provider_id)
        pulumi.set(__self__, "service_account_email", service_account_email)
        pulumi.set(__self__, "workload_pool_id", workload_pool_id)
        if delegate_selectors is not None:
            pulumi.set(__self__, "delegate_selectors", delegate_selectors)

    @_builtins.property
    @pulumi.getter(name="gcpProjectId")
    def gcp_project_id(self) -> _builtins.str:
        """
        The project number of the GCP project that is used to create the workload identity.
        """
        return pulumi.get(self, "gcp_project_id")

    @_builtins.property
    @pulumi.getter(name="providerId")
    def provider_id(self) -> _builtins.str:
        """
        The OIDC provider ID value configured in GCP.
        """
        return pulumi.get(self, "provider_id")

    @_builtins.property
    @pulumi.getter(name="serviceAccountEmail")
    def service_account_email(self) -> _builtins.str:
        """
        The service account linked to workload identity pool while setting GCP workload identity provider.
        """
        return pulumi.get(self, "service_account_email")

    @_builtins.property
    @pulumi.getter(name="workloadPoolId")
    def workload_pool_id(self) -> _builtins.str:
        """
        The workload pool ID value created in GCP.
        """
        return pulumi.get(self, "workload_pool_id")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Optional[Sequence[_builtins.str]]:
        """
        The delegates to inherit the credentials from.
        """
        return pulumi.get(self, "delegate_selectors")


@pulumi.output_type
class GcpSecretManagerConnectorOidcAuthentication(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "gcpProjectId":
            suggest = "gcp_project_id"
        elif key == "providerId":
            suggest = "provider_id"
        elif key == "serviceAccountEmail":
            suggest = "service_account_email"
        elif key == "workloadPoolId":
            suggest = "workload_pool_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GcpSecretManagerConnectorOidcAuthentication. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GcpSecretManagerConnectorOidcAuthentication.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GcpSecretManagerConnectorOidcAuthentication.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 gcp_project_id: _builtins.str,
                 provider_id: _builtins.str,
                 service_account_email: _builtins.str,
                 workload_pool_id: _builtins.str):
        """
        :param _builtins.str gcp_project_id: The project number of the GCP project that is used to create the workload identity.
        :param _builtins.str provider_id: The OIDC provider ID value configured in GCP.
        :param _builtins.str service_account_email: The service account linked to workload identity pool while setting GCP workload identity provider.
        :param _builtins.str workload_pool_id: The workload pool ID value created in GCP.
        """
        pulumi.set(__self__, "gcp_project_id", gcp_project_id)
        pulumi.set(__self__, "provider_id", provider_id)
        pulumi.set(__self__, "service_account_email", service_account_email)
        pulumi.set(__self__, "workload_pool_id", workload_pool_id)

    @_builtins.property
    @pulumi.getter(name="gcpProjectId")
    def gcp_project_id(self) -> _builtins.str:
        """
        The project number of the GCP project that is used to create the workload identity.
        """
        return pulumi.get(self, "gcp_project_id")

    @_builtins.property
    @pulumi.getter(name="providerId")
    def provider_id(self) -> _builtins.str:
        """
        The OIDC provider ID value configured in GCP.
        """
        return pulumi.get(self, "provider_id")

    @_builtins.property
    @pulumi.getter(name="serviceAccountEmail")
    def service_account_email(self) -> _builtins.str:
        """
        The service account linked to workload identity pool while setting GCP workload identity provider.
        """
        return pulumi.get(self, "service_account_email")

    @_builtins.property
    @pulumi.getter(name="workloadPoolId")
    def workload_pool_id(self) -> _builtins.str:
        """
        The workload pool ID value created in GCP.
        """
        return pulumi.get(self, "workload_pool_id")


@pulumi.output_type
class GitConnectorCredentials(dict):
    def __init__(__self__, *,
                 http: Optional['outputs.GitConnectorCredentialsHttp'] = None,
                 ssh: Optional['outputs.GitConnectorCredentialsSsh'] = None):
        """
        :param 'GitConnectorCredentialsHttpArgs' http: Authenticate using Username and password over http(s) for the connection.
        :param 'GitConnectorCredentialsSshArgs' ssh: Authenticate using SSH for the connection.
        """
        if http is not None:
            pulumi.set(__self__, "http", http)
        if ssh is not None:
            pulumi.set(__self__, "ssh", ssh)

    @_builtins.property
    @pulumi.getter
    def http(self) -> Optional['outputs.GitConnectorCredentialsHttp']:
        """
        Authenticate using Username and password over http(s) for the connection.
        """
        return pulumi.get(self, "http")

    @_builtins.property
    @pulumi.getter
    def ssh(self) -> Optional['outputs.GitConnectorCredentialsSsh']:
        """
        Authenticate using SSH for the connection.
        """
        return pulumi.get(self, "ssh")


@pulumi.output_type
class GitConnectorCredentialsHttp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitConnectorCredentialsHttp. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitConnectorCredentialsHttp.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitConnectorCredentialsHttp.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GitConnectorCredentialsSsh(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "sshKeyRef":
            suggest = "ssh_key_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitConnectorCredentialsSsh. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitConnectorCredentialsSsh.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitConnectorCredentialsSsh.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ssh_key_ref: _builtins.str):
        """
        :param _builtins.str ssh_key_ref: Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "ssh_key_ref", ssh_key_ref)

    @_builtins.property
    @pulumi.getter(name="sshKeyRef")
    def ssh_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ssh_key_ref")


@pulumi.output_type
class GitOpsAgentMetadata(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "highAvailability":
            suggest = "high_availability"
        elif key == "isNamespaced":
            suggest = "is_namespaced"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsAgentMetadata. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsAgentMetadata.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsAgentMetadata.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 high_availability: Optional[_builtins.bool] = None,
                 is_namespaced: Optional[_builtins.bool] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.bool high_availability: Indicates if the agent is deployed in HA mode.
        :param _builtins.bool is_namespaced: Indicates if the agent is namespaced.
        :param _builtins.str namespace: The kubernetes namespace where the agent should be installed.
        """
        if high_availability is not None:
            pulumi.set(__self__, "high_availability", high_availability)
        if is_namespaced is not None:
            pulumi.set(__self__, "is_namespaced", is_namespaced)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter(name="highAvailability")
    def high_availability(self) -> Optional[_builtins.bool]:
        """
        Indicates if the agent is deployed in HA mode.
        """
        return pulumi.get(self, "high_availability")

    @_builtins.property
    @pulumi.getter(name="isNamespaced")
    def is_namespaced(self) -> Optional[_builtins.bool]:
        """
        Indicates if the agent is namespaced.
        """
        return pulumi.get(self, "is_namespaced")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The kubernetes namespace where the agent should be installed.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitOpsApplicationsApplication(dict):
    def __init__(__self__, *,
                 metadatas: Sequence['outputs.GitOpsApplicationsApplicationMetadata'],
                 specs: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpec']] = None):
        """
        :param Sequence['GitOpsApplicationsApplicationMetadataArgs'] metadatas: Metadata corresponding to the resources. This includes all the objects a user must create.
        :param Sequence['GitOpsApplicationsApplicationSpecArgs'] specs: Specifications of the GitOps application. This includes the repository URL, application definition, source, destination and sync policy.
        """
        pulumi.set(__self__, "metadatas", metadatas)
        if specs is not None:
            pulumi.set(__self__, "specs", specs)

    @_builtins.property
    @pulumi.getter
    def metadatas(self) -> Sequence['outputs.GitOpsApplicationsApplicationMetadata']:
        """
        Metadata corresponding to the resources. This includes all the objects a user must create.
        """
        return pulumi.get(self, "metadatas")

    @_builtins.property
    @pulumi.getter
    def specs(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpec']]:
        """
        Specifications of the GitOps application. This includes the repository URL, application definition, source, destination and sync policy.
        """
        return pulumi.get(self, "specs")


@pulumi.output_type
class GitOpsApplicationsApplicationMetadata(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clusterName":
            suggest = "cluster_name"
        elif key == "generateName":
            suggest = "generate_name"
        elif key == "ownerReferences":
            suggest = "owner_references"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsApplicationsApplicationMetadata. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsApplicationsApplicationMetadata.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsApplicationsApplicationMetadata.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 cluster_name: Optional[_builtins.str] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 generate_name: Optional[_builtins.str] = None,
                 generation: Optional[_builtins.str] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 owner_references: Optional[Sequence['outputs.GitOpsApplicationsApplicationMetadataOwnerReference']] = None,
                 uid: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations are unstructured key value pairs corresponding to a resource. External tools set these to store and retrieve arbitrary metadata.
        :param _builtins.str cluster_name: Name of the cluster corresponding to the object. API server ignores this if set in any create or update request.
        :param Sequence[_builtins.str] finalizers: Before the object is removed from the register, it must be empty. Each element serves as a unique identifier for the component that is accountable for removing that entry from the list. Entries in this list can only be removed if the object's deletionTimestamp is not null. The processing and removal of finalizers can happen in any sequence. No order is enforced as it may block the finalizers. Finalizers is a shared field that can be reordered by any actor with authority. If the finalizer list is processed in order, this could result in a scenario where the component in charge of the list's first finalizer is waiting for a signal (generated by a field value, an external system, or another) produced by a component in charge of the list's later finalizer.
        :param _builtins.str generate_name: An optional prefix that the server will only apply if the Name field is empty to create a unique name. The name returned to the client will differ from the name passed if this field is used. A unique suffix will be added to this value as well. The supplied value must adhere to the same validation guidelines as the Name field and may be reduced by the suffix length necessary to ensure that it is unique on the server. The server will NOT return a 409 if this field is supplied and the created name already exists; instead, it will either return 201 Created or 500 with Reason ServerTimeout, indicating that a unique name could not be found in the allotted time and the client should try again later.
        :param _builtins.str generation: A sequence number representing a specific generation of the desired state. This is a read-only value populated by the system.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services.
        :param _builtins.str name: Name must be unique within a namespace. It is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Name cannot be updated.
        :param _builtins.str namespace: Namespace of the GitOps application. An empty namespace is equivalent to the namespace of the GitOps agent.
        :param Sequence['GitOpsApplicationsApplicationMetadataOwnerReferenceArgs'] owner_references: List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.
        :param _builtins.str uid: UID is the unique identifier in time and space value for this object. It is generated by the server on successful creation of a resource and is not allowed to change on PUT operations.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if cluster_name is not None:
            pulumi.set(__self__, "cluster_name", cluster_name)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if generate_name is not None:
            pulumi.set(__self__, "generate_name", generate_name)
        if generation is not None:
            pulumi.set(__self__, "generation", generation)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if owner_references is not None:
            pulumi.set(__self__, "owner_references", owner_references)
        if uid is not None:
            pulumi.set(__self__, "uid", uid)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations are unstructured key value pairs corresponding to a resource. External tools set these to store and retrieve arbitrary metadata.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter(name="clusterName")
    def cluster_name(self) -> Optional[_builtins.str]:
        """
        Name of the cluster corresponding to the object. API server ignores this if set in any create or update request.
        """
        return pulumi.get(self, "cluster_name")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        Before the object is removed from the register, it must be empty. Each element serves as a unique identifier for the component that is accountable for removing that entry from the list. Entries in this list can only be removed if the object's deletionTimestamp is not null. The processing and removal of finalizers can happen in any sequence. No order is enforced as it may block the finalizers. Finalizers is a shared field that can be reordered by any actor with authority. If the finalizer list is processed in order, this could result in a scenario where the component in charge of the list's first finalizer is waiting for a signal (generated by a field value, an external system, or another) produced by a component in charge of the list's later finalizer.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter(name="generateName")
    def generate_name(self) -> Optional[_builtins.str]:
        """
        An optional prefix that the server will only apply if the Name field is empty to create a unique name. The name returned to the client will differ from the name passed if this field is used. A unique suffix will be added to this value as well. The supplied value must adhere to the same validation guidelines as the Name field and may be reduced by the suffix length necessary to ensure that it is unique on the server. The server will NOT return a 409 if this field is supplied and the created name already exists; instead, it will either return 201 Created or 500 with Reason ServerTimeout, indicating that a unique name could not be found in the allotted time and the client should try again later.
        """
        return pulumi.get(self, "generate_name")

    @_builtins.property
    @pulumi.getter
    def generation(self) -> Optional[_builtins.str]:
        """
        A sequence number representing a specific generation of the desired state. This is a read-only value populated by the system.
        """
        return pulumi.get(self, "generation")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name must be unique within a namespace. It is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Name cannot be updated.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the GitOps application. An empty namespace is equivalent to the namespace of the GitOps agent.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter(name="ownerReferences")
    def owner_references(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationMetadataOwnerReference']]:
        """
        List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.
        """
        return pulumi.get(self, "owner_references")

    @_builtins.property
    @pulumi.getter
    def uid(self) -> Optional[_builtins.str]:
        """
        UID is the unique identifier in time and space value for this object. It is generated by the server on successful creation of a resource and is not allowed to change on PUT operations.
        """
        return pulumi.get(self, "uid")


@pulumi.output_type
class GitOpsApplicationsApplicationMetadataOwnerReference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "apiVersion":
            suggest = "api_version"
        elif key == "blockOwnerDeletion":
            suggest = "block_owner_deletion"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsApplicationsApplicationMetadataOwnerReference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsApplicationsApplicationMetadataOwnerReference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsApplicationsApplicationMetadataOwnerReference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api_version: Optional[_builtins.str] = None,
                 block_owner_deletion: Optional[_builtins.bool] = None,
                 controller: Optional[_builtins.bool] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 uid: Optional[_builtins.str] = None):
        """
        :param _builtins.str api_version: API version of the referent.
        :param _builtins.bool block_owner_deletion: If true, AND if the owner has the "foregroundDeletion" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs "delete" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.
        :param _builtins.bool controller: Indicates if the reference points to the managing controller.
        :param _builtins.str kind: Kind of the referent.
        :param _builtins.str name: Name of the referent.
        :param _builtins.str uid: UID of the referent.
        """
        if api_version is not None:
            pulumi.set(__self__, "api_version", api_version)
        if block_owner_deletion is not None:
            pulumi.set(__self__, "block_owner_deletion", block_owner_deletion)
        if controller is not None:
            pulumi.set(__self__, "controller", controller)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if uid is not None:
            pulumi.set(__self__, "uid", uid)

    @_builtins.property
    @pulumi.getter(name="apiVersion")
    def api_version(self) -> Optional[_builtins.str]:
        """
        API version of the referent.
        """
        return pulumi.get(self, "api_version")

    @_builtins.property
    @pulumi.getter(name="blockOwnerDeletion")
    def block_owner_deletion(self) -> Optional[_builtins.bool]:
        """
        If true, AND if the owner has the "foregroundDeletion" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs "delete" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.
        """
        return pulumi.get(self, "block_owner_deletion")

    @_builtins.property
    @pulumi.getter
    def controller(self) -> Optional[_builtins.bool]:
        """
        Indicates if the reference points to the managing controller.
        """
        return pulumi.get(self, "controller")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        Kind of the referent.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the referent.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def uid(self) -> Optional[_builtins.str]:
        """
        UID of the referent.
        """
        return pulumi.get(self, "uid")


@pulumi.output_type
class GitOpsApplicationsApplicationSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicies":
            suggest = "sync_policies"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsApplicationsApplicationSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsApplicationsApplicationSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsApplicationsApplicationSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destinations: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecDestination']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSource']] = None,
                 sync_policies: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSyncPolicy']] = None):
        """
        :param Sequence['GitOpsApplicationsApplicationSpecDestinationArgs'] destinations: Information about the GitOps application's destination.
        :param _builtins.str project: The ArgoCD project name corresponding to this GitOps application. Value must match mappings of ArgoCD projects to harness project.
        :param _builtins.str revision_history_limit: Revision history limit for the application.
        :param Sequence['GitOpsApplicationsApplicationSpecSourceArgs'] source: Contains all information about the source of the GitOps application.
        :param Sequence['GitOpsApplicationsApplicationSpecSourceArgs'] sources: List of sources for the GitOps application. Multi Source support
        :param Sequence['GitOpsApplicationsApplicationSpecSyncPolicyArgs'] sync_policies: Controls when a sync will be performed in response to updates in git.
        """
        if destinations is not None:
            pulumi.set(__self__, "destinations", destinations)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policies is not None:
            pulumi.set(__self__, "sync_policies", sync_policies)

    @_builtins.property
    @pulumi.getter
    def destinations(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecDestination']]:
        """
        Information about the GitOps application's destination.
        """
        return pulumi.get(self, "destinations")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The ArgoCD project name corresponding to this GitOps application. Value must match mappings of ArgoCD projects to harness project.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Revision history limit for the application.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSource']]:
        """
        Contains all information about the source of the GitOps application.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSource']]:
        """
        List of sources for the GitOps application. Multi Source support
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicies")
    def sync_policies(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSyncPolicy']]:
        """
        Controls when a sync will be performed in response to updates in git.
        """
        return pulumi.get(self, "sync_policies")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: URL of the target cluster and must be set to the kubernetes control plane API.
        :param _builtins.str namespace: Target namespace of the GitOps application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster server for the GitOps application.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the kubernetes control plane API.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace of the GitOps application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster server for the GitOps application.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsApplicationsApplicationSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsApplicationsApplicationSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsApplicationsApplicationSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 repo_url: _builtins.str,
                 target_revision: _builtins.str,
                 chart: Optional[_builtins.str] = None,
                 directories: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceDirectory']] = None,
                 helms: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceHelm']] = None,
                 ksonnets: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceKsonnet']] = None,
                 kustomizes: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceKustomize']] = None,
                 name: Optional[_builtins.str] = None,
                 path: Optional[_builtins.str] = None,
                 plugins: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourcePlugin']] = None,
                 ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str repo_url: URL to the repository (git or helm) that contains the GitOps application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the GitOps application to. In case of git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag of the chart's version.
        :param _builtins.str chart: Helm chart name, and must be specified for the GitOps applications sourced from a helm repo.
        :param Sequence['GitOpsApplicationsApplicationSpecSourceDirectoryArgs'] directories: Options for applications of type plain YAML or Jsonnet.
        :param Sequence['GitOpsApplicationsApplicationSpecSourceHelmArgs'] helms: Helm specific options.
        :param Sequence['GitOpsApplicationsApplicationSpecSourceKsonnetArgs'] ksonnets: Ksonnet specific options.
        :param Sequence['GitOpsApplicationsApplicationSpecSourceKustomizeArgs'] kustomizes: Options specific to a GitOps application source specific to Kustomize.
        :param _builtins.str name: Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
        :param _builtins.str path: Directory path within the git repository, and is only valid for the GitOps applications sourced from git.
        :param Sequence['GitOpsApplicationsApplicationSpecSourcePluginArgs'] plugins: Options specific to config management plugins.
        :param _builtins.str ref: Reference name to be used in other source spec, used for multi-source applications.
        """
        pulumi.set(__self__, "repo_url", repo_url)
        pulumi.set(__self__, "target_revision", target_revision)
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directories is not None:
            pulumi.set(__self__, "directories", directories)
        if helms is not None:
            pulumi.set(__self__, "helms", helms)
        if ksonnets is not None:
            pulumi.set(__self__, "ksonnets", ksonnets)
        if kustomizes is not None:
            pulumi.set(__self__, "kustomizes", kustomizes)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugins is not None:
            pulumi.set(__self__, "plugins", plugins)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> _builtins.str:
        """
        URL to the repository (git or helm) that contains the GitOps application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> _builtins.str:
        """
        Revision of the source to sync the GitOps application to. In case of git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag of the chart's version.
        """
        return pulumi.get(self, "target_revision")

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name, and must be specified for the GitOps applications sourced from a helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directories(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceDirectory']]:
        """
        Options for applications of type plain YAML or Jsonnet.
        """
        return pulumi.get(self, "directories")

    @_builtins.property
    @pulumi.getter
    def helms(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceHelm']]:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helms")

    @_builtins.property
    @pulumi.getter
    def ksonnets(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceKsonnet']]:
        """
        Ksonnet specific options.
        """
        return pulumi.get(self, "ksonnets")

    @_builtins.property
    @pulumi.getter
    def kustomizes(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceKustomize']]:
        """
        Options specific to a GitOps application source specific to Kustomize.
        """
        return pulumi.get(self, "kustomizes")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the git repository, and is only valid for the GitOps applications sourced from git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugins(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourcePlugin']]:
        """
        Options specific to config management plugins.
        """
        return pulumi.get(self, "plugins")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference name to be used in other source spec, used for multi-source applications.
        """
        return pulumi.get(self, "ref")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnets: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceDirectoryJsonnet']] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation.
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation.
        :param Sequence['GitOpsApplicationsApplicationSpecSourceDirectoryJsonnetArgs'] jsonnets: Options specific to applications of type Jsonnet.
        :param _builtins.bool recurse: Indicates to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnets is not None:
            pulumi.set(__self__, "jsonnets", jsonnets)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation.
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation.
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnets(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceDirectoryJsonnet']]:
        """
        Options specific to applications of type Jsonnet.
        """
        return pulumi.get(self, "jsonnets")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Indicates to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsApplicationsApplicationSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsApplicationsApplicationSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsApplicationsApplicationSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitOpsApplicationsApplicationSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of jsonnet external variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitOpsApplicationsApplicationSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of jsonnet top-level arguments(TLAS).
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of jsonnet external variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceDirectoryJsonnetTla']]:
        """
        List of jsonnet top-level arguments(TLAS).
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Code of the external variables of jsonnet application.
        :param _builtins.str name: Name of the external variables of jsonnet application.
        :param _builtins.str value: Value of the external variables of jsonnet application.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Code of the external variables of jsonnet application.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the external variables of jsonnet application.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the external variables of jsonnet application.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Code of the TLAS of the jsonnet application.
        :param _builtins.str name: Name of the TLAS of the jsonnet application.
        :param _builtins.str value: Value of the TLAS of the jsonnet application.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Code of the TLAS of the jsonnet application.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the TLAS of the jsonnet application.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the TLAS of the jsonnet application.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsApplicationsApplicationSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsApplicationsApplicationSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsApplicationsApplicationSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitOpsApplicationsApplicationSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitOpsApplicationsApplicationSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsApplicationsApplicationSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsApplicationsApplicationSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsApplicationsApplicationSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSourceKsonnet(dict):
    def __init__(__self__, *,
                 environment: Optional[_builtins.str] = None,
                 parameters: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceKsonnetParameter']] = None):
        """
        :param _builtins.str environment: Ksonnet application environment name.
        :param Sequence['GitOpsApplicationsApplicationSpecSourceKsonnetParameterArgs'] parameters: List of ksonnet component parameter override values.
        """
        if environment is not None:
            pulumi.set(__self__, "environment", environment)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @_builtins.property
    @pulumi.getter
    def environment(self) -> Optional[_builtins.str]:
        """
        Ksonnet application environment name.
        """
        return pulumi.get(self, "environment")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourceKsonnetParameter']]:
        """
        List of ksonnet component parameter override values.
        """
        return pulumi.get(self, "parameters")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSourceKsonnetParameter(dict):
    def __init__(__self__, *,
                 component: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str component: Component of the parameter of the ksonnet application.
        :param _builtins.str name: Name of the parameter of the ksonnet application.
        :param _builtins.str value: Value of the parameter of the ksonnet application.
        """
        if component is not None:
            pulumi.set(__self__, "component", component)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def component(self) -> Optional[_builtins.str]:
        """
        Component of the parameter of the ksonnet application.
        """
        return pulumi.get(self, "component")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the parameter of the ksonnet application.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the parameter of the ksonnet application.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsApplicationsApplicationSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsApplicationsApplicationSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsApplicationsApplicationSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix prepended to resources for kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for kustomize apps.
        :param _builtins.str version: Version of kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix prepended to resources for kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitOpsApplicationsApplicationSpecSourcePluginEnvArgs'] envs: Entry in the GitOps application's environment.
        :param _builtins.str name: Name of the plugin.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSourcePluginEnv']]:
        """
        Entry in the GitOps application's environment.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the variable, usually expressed in uppercase.
        :param _builtins.str value: Value of the variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the variable, usually expressed in uppercase.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsApplicationsApplicationSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsApplicationsApplicationSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsApplicationsApplicationSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automateds: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSyncPolicyAutomated']] = None,
                 retries: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSyncPolicyRetry']] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param Sequence['GitOpsApplicationsApplicationSpecSyncPolicyAutomatedArgs'] automateds: Controls the behavior of an automated sync.
        :param Sequence['GitOpsApplicationsApplicationSpecSyncPolicyRetryArgs'] retries: Contains information about the strategy to apply when a sync failed.
        :param Sequence[_builtins.str] sync_options: Options allow you to specify whole app sync-options.
        """
        if automateds is not None:
            pulumi.set(__self__, "automateds", automateds)
        if retries is not None:
            pulumi.set(__self__, "retries", retries)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automateds(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSyncPolicyAutomated']]:
        """
        Controls the behavior of an automated sync.
        """
        return pulumi.get(self, "automateds")

    @_builtins.property
    @pulumi.getter
    def retries(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSyncPolicyRetry']]:
        """
        Contains information about the strategy to apply when a sync failed.
        """
        return pulumi.get(self, "retries")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        Options allow you to specify whole app sync-options.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsApplicationsApplicationSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsApplicationsApplicationSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsApplicationsApplicationSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Indicates to allows apps to have zero live resources (default: false).
        :param _builtins.bool prune: Indicates whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false).
        :param _builtins.bool self_heal: Indicates whether to revert resources back to their desired state upon modification in the cluster (default: false).
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Indicates to allows apps to have zero live resources (default: false).
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Indicates whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false).
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Indicates whether to revert resources back to their desired state upon modification in the cluster (default: false).
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoffs: Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSyncPolicyRetryBackoff']] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param Sequence['GitOpsApplicationsApplicationSpecSyncPolicyRetryBackoffArgs'] backoffs: Backoff strategy to use on subsequent retries for failing syncs.
        :param _builtins.str limit: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoffs is not None:
            pulumi.set(__self__, "backoffs", backoffs)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoffs(self) -> Optional[Sequence['outputs.GitOpsApplicationsApplicationSpecSyncPolicyRetryBackoff']]:
        """
        Backoff strategy to use on subsequent retries for failing syncs.
        """
        return pulumi.get(self, "backoffs")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitOpsApplicationsApplicationSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsApplicationsApplicationSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsApplicationsApplicationSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsApplicationsApplicationSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h").
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed of the backoff strategy.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h").
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed of the backoff strategy.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitOpsClusterRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "updatedFields":
            suggest = "updated_fields"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsClusterRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsClusterRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsClusterRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 clusters: Optional[Sequence['outputs.GitOpsClusterRequestCluster']] = None,
                 tags: Optional[Sequence[_builtins.str]] = None,
                 updated_fields: Optional[Sequence[_builtins.str]] = None,
                 upsert: Optional[_builtins.bool] = None):
        """
        :param Sequence['GitOpsClusterRequestClusterArgs'] clusters: GitOps cluster details.
        :param Sequence[_builtins.str] tags: Tags for the GitOps cluster. These can be used to search or filter the GitOps agents.
        :param Sequence[_builtins.str] updated_fields: Fields which are updated.
        :param _builtins.bool upsert: Indicates if the GitOps cluster should be updated if existing and inserted if not.
        """
        if clusters is not None:
            pulumi.set(__self__, "clusters", clusters)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if updated_fields is not None:
            pulumi.set(__self__, "updated_fields", updated_fields)
        if upsert is not None:
            pulumi.set(__self__, "upsert", upsert)

    @_builtins.property
    @pulumi.getter
    def clusters(self) -> Optional[Sequence['outputs.GitOpsClusterRequestCluster']]:
        """
        GitOps cluster details.
        """
        return pulumi.get(self, "clusters")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Optional[Sequence[_builtins.str]]:
        """
        Tags for the GitOps cluster. These can be used to search or filter the GitOps agents.
        """
        return pulumi.get(self, "tags")

    @_builtins.property
    @pulumi.getter(name="updatedFields")
    def updated_fields(self) -> Optional[Sequence[_builtins.str]]:
        """
        Fields which are updated.
        """
        return pulumi.get(self, "updated_fields")

    @_builtins.property
    @pulumi.getter
    def upsert(self) -> Optional[_builtins.bool]:
        """
        Indicates if the GitOps cluster should be updated if existing and inserted if not.
        """
        return pulumi.get(self, "upsert")


@pulumi.output_type
class GitOpsClusterRequestCluster(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clusterResources":
            suggest = "cluster_resources"
        elif key == "refreshRequestedAts":
            suggest = "refresh_requested_ats"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsClusterRequestCluster. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsClusterRequestCluster.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsClusterRequestCluster.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 configs: Sequence['outputs.GitOpsClusterRequestClusterConfig'],
                 server: _builtins.str,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 cluster_resources: Optional[_builtins.bool] = None,
                 infos: Optional[Sequence['outputs.GitOpsClusterRequestClusterInfo']] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespaces: Optional[Sequence[_builtins.str]] = None,
                 project: Optional[_builtins.str] = None,
                 refresh_requested_ats: Optional[Sequence['outputs.GitOpsClusterRequestClusterRefreshRequestedAt']] = None,
                 shard: Optional[_builtins.str] = None):
        """
        :param Sequence['GitOpsClusterRequestClusterConfigArgs'] configs: GitOps cluster config.
        :param _builtins.str server: API server URL of the kubernetes cluster.
        :param Mapping[str, _builtins.str] annotations: Annotations for cluster secret metadata.
        :param _builtins.bool cluster_resources: Indicates if cluster level resources should be managed. This setting is used only if cluster is connected in a namespaced mode.
        :param Sequence['GitOpsClusterRequestClusterInfoArgs'] infos: Information about cluster cache and state.
        :param Mapping[str, _builtins.str] labels: Labels for cluster secret metadata.
        :param _builtins.str name: Name of the cluster. If omitted, the server address will be used.
        :param Sequence[_builtins.str] namespaces: List of namespaces which are accessible in that cluster. Cluster level resources will be ignored if namespace list is not empty.
        :param _builtins.str project: The ArgoCD project name corresponding to this GitOps cluster. An empty string means that the GitOps cluster belongs to the default project created by Harness.
        :param Sequence['GitOpsClusterRequestClusterRefreshRequestedAtArgs'] refresh_requested_ats: Time when cluster cache refresh has been requested.
        :param _builtins.str shard: Shard number to be managed by a specific application controller pod. Calculated on the fly by the application controller if not specified.
        """
        pulumi.set(__self__, "configs", configs)
        pulumi.set(__self__, "server", server)
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if cluster_resources is not None:
            pulumi.set(__self__, "cluster_resources", cluster_resources)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespaces is not None:
            pulumi.set(__self__, "namespaces", namespaces)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if refresh_requested_ats is not None:
            pulumi.set(__self__, "refresh_requested_ats", refresh_requested_ats)
        if shard is not None:
            pulumi.set(__self__, "shard", shard)

    @_builtins.property
    @pulumi.getter
    def configs(self) -> Sequence['outputs.GitOpsClusterRequestClusterConfig']:
        """
        GitOps cluster config.
        """
        return pulumi.get(self, "configs")

    @_builtins.property
    @pulumi.getter
    def server(self) -> _builtins.str:
        """
        API server URL of the kubernetes cluster.
        """
        return pulumi.get(self, "server")

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations for cluster secret metadata.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter(name="clusterResources")
    def cluster_resources(self) -> Optional[_builtins.bool]:
        """
        Indicates if cluster level resources should be managed. This setting is used only if cluster is connected in a namespaced mode.
        """
        return pulumi.get(self, "cluster_resources")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitOpsClusterRequestClusterInfo']]:
        """
        Information about cluster cache and state.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels for cluster secret metadata.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the cluster. If omitted, the server address will be used.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespaces(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of namespaces which are accessible in that cluster. Cluster level resources will be ignored if namespace list is not empty.
        """
        return pulumi.get(self, "namespaces")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The ArgoCD project name corresponding to this GitOps cluster. An empty string means that the GitOps cluster belongs to the default project created by Harness.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="refreshRequestedAts")
    def refresh_requested_ats(self) -> Optional[Sequence['outputs.GitOpsClusterRequestClusterRefreshRequestedAt']]:
        """
        Time when cluster cache refresh has been requested.
        """
        return pulumi.get(self, "refresh_requested_ats")

    @_builtins.property
    @pulumi.getter
    def shard(self) -> Optional[_builtins.str]:
        """
        Shard number to be managed by a specific application controller pod. Calculated on the fly by the application controller if not specified.
        """
        return pulumi.get(self, "shard")


@pulumi.output_type
class GitOpsClusterRequestClusterConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "awsClusterName":
            suggest = "aws_cluster_name"
        elif key == "bearerToken":
            suggest = "bearer_token"
        elif key == "clusterConnectionType":
            suggest = "cluster_connection_type"
        elif key == "disableCompression":
            suggest = "disable_compression"
        elif key == "execProviderConfigs":
            suggest = "exec_provider_configs"
        elif key == "proxyUrl":
            suggest = "proxy_url"
        elif key == "roleARN":
            suggest = "role_arn"
        elif key == "tlsClientConfigs":
            suggest = "tls_client_configs"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsClusterRequestClusterConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsClusterRequestClusterConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsClusterRequestClusterConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 aws_cluster_name: Optional[_builtins.str] = None,
                 bearer_token: Optional[_builtins.str] = None,
                 cluster_connection_type: Optional[_builtins.str] = None,
                 disable_compression: Optional[_builtins.bool] = None,
                 exec_provider_configs: Optional[Sequence['outputs.GitOpsClusterRequestClusterConfigExecProviderConfig']] = None,
                 password: Optional[_builtins.str] = None,
                 proxy_url: Optional[_builtins.str] = None,
                 role_arn: Optional[_builtins.str] = None,
                 tls_client_configs: Optional[Sequence['outputs.GitOpsClusterRequestClusterConfigTlsClientConfig']] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param _builtins.str aws_cluster_name: AWS Cluster name. If set then AWS CLI EKS token command will be used to access cluster.
        :param _builtins.str bearer_token: Bearer authentication token the cluster.
        :param _builtins.str cluster_connection_type: Identifies the authentication method used to connect to the cluster.
        :param _builtins.bool disable_compression: DisableCompression bypasses automatic GZip compression requests to to the cluster's API server. Corresponds to running kubectl with --disable-compression
        :param Sequence['GitOpsClusterRequestClusterConfigExecProviderConfigArgs'] exec_provider_configs: Configuration for an exec provider.
        :param _builtins.str password: Password of the server of the cluster.
        :param _builtins.str proxy_url: The URL to the proxy to be used for all requests send to the cluster's API server
        :param _builtins.str role_arn: Optional role ARN. If set then used for AWS IAM Authenticator.
        :param Sequence['GitOpsClusterRequestClusterConfigTlsClientConfigArgs'] tls_client_configs: Settings to enable transport layer security.
        :param _builtins.str username: Username of the server of the cluster.
        """
        if aws_cluster_name is not None:
            pulumi.set(__self__, "aws_cluster_name", aws_cluster_name)
        if bearer_token is not None:
            pulumi.set(__self__, "bearer_token", bearer_token)
        if cluster_connection_type is not None:
            pulumi.set(__self__, "cluster_connection_type", cluster_connection_type)
        if disable_compression is not None:
            pulumi.set(__self__, "disable_compression", disable_compression)
        if exec_provider_configs is not None:
            pulumi.set(__self__, "exec_provider_configs", exec_provider_configs)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if proxy_url is not None:
            pulumi.set(__self__, "proxy_url", proxy_url)
        if role_arn is not None:
            pulumi.set(__self__, "role_arn", role_arn)
        if tls_client_configs is not None:
            pulumi.set(__self__, "tls_client_configs", tls_client_configs)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="awsClusterName")
    def aws_cluster_name(self) -> Optional[_builtins.str]:
        """
        AWS Cluster name. If set then AWS CLI EKS token command will be used to access cluster.
        """
        return pulumi.get(self, "aws_cluster_name")

    @_builtins.property
    @pulumi.getter(name="bearerToken")
    def bearer_token(self) -> Optional[_builtins.str]:
        """
        Bearer authentication token the cluster.
        """
        return pulumi.get(self, "bearer_token")

    @_builtins.property
    @pulumi.getter(name="clusterConnectionType")
    def cluster_connection_type(self) -> Optional[_builtins.str]:
        """
        Identifies the authentication method used to connect to the cluster.
        """
        return pulumi.get(self, "cluster_connection_type")

    @_builtins.property
    @pulumi.getter(name="disableCompression")
    def disable_compression(self) -> Optional[_builtins.bool]:
        """
        DisableCompression bypasses automatic GZip compression requests to to the cluster's API server. Corresponds to running kubectl with --disable-compression
        """
        return pulumi.get(self, "disable_compression")

    @_builtins.property
    @pulumi.getter(name="execProviderConfigs")
    def exec_provider_configs(self) -> Optional[Sequence['outputs.GitOpsClusterRequestClusterConfigExecProviderConfig']]:
        """
        Configuration for an exec provider.
        """
        return pulumi.get(self, "exec_provider_configs")

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[_builtins.str]:
        """
        Password of the server of the cluster.
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter(name="proxyUrl")
    def proxy_url(self) -> Optional[_builtins.str]:
        """
        The URL to the proxy to be used for all requests send to the cluster's API server
        """
        return pulumi.get(self, "proxy_url")

    @_builtins.property
    @pulumi.getter(name="roleARN")
    def role_arn(self) -> Optional[_builtins.str]:
        """
        Optional role ARN. If set then used for AWS IAM Authenticator.
        """
        return pulumi.get(self, "role_arn")

    @_builtins.property
    @pulumi.getter(name="tlsClientConfigs")
    def tls_client_configs(self) -> Optional[Sequence['outputs.GitOpsClusterRequestClusterConfigTlsClientConfig']]:
        """
        Settings to enable transport layer security.
        """
        return pulumi.get(self, "tls_client_configs")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username of the server of the cluster.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitOpsClusterRequestClusterConfigExecProviderConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "apiVersion":
            suggest = "api_version"
        elif key == "installHint":
            suggest = "install_hint"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsClusterRequestClusterConfigExecProviderConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsClusterRequestClusterConfigExecProviderConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsClusterRequestClusterConfigExecProviderConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api_version: Optional[_builtins.str] = None,
                 args: Optional[Sequence[_builtins.str]] = None,
                 command: Optional[_builtins.str] = None,
                 env: Optional[Mapping[str, _builtins.str]] = None,
                 install_hint: Optional[_builtins.str] = None):
        """
        :param _builtins.str api_version: Preferred input version of the ExecInfo.
        :param Sequence[_builtins.str] args: Arguments to pass to the command when executing it.
        :param _builtins.str command: Command to execute.
        :param Mapping[str, _builtins.str] env: Additional environment variables to expose to the process.
        :param _builtins.str install_hint: Message displayed when the executable is not found.
        """
        if api_version is not None:
            pulumi.set(__self__, "api_version", api_version)
        if args is not None:
            pulumi.set(__self__, "args", args)
        if command is not None:
            pulumi.set(__self__, "command", command)
        if env is not None:
            pulumi.set(__self__, "env", env)
        if install_hint is not None:
            pulumi.set(__self__, "install_hint", install_hint)

    @_builtins.property
    @pulumi.getter(name="apiVersion")
    def api_version(self) -> Optional[_builtins.str]:
        """
        Preferred input version of the ExecInfo.
        """
        return pulumi.get(self, "api_version")

    @_builtins.property
    @pulumi.getter
    def args(self) -> Optional[Sequence[_builtins.str]]:
        """
        Arguments to pass to the command when executing it.
        """
        return pulumi.get(self, "args")

    @_builtins.property
    @pulumi.getter
    def command(self) -> Optional[_builtins.str]:
        """
        Command to execute.
        """
        return pulumi.get(self, "command")

    @_builtins.property
    @pulumi.getter
    def env(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Additional environment variables to expose to the process.
        """
        return pulumi.get(self, "env")

    @_builtins.property
    @pulumi.getter(name="installHint")
    def install_hint(self) -> Optional[_builtins.str]:
        """
        Message displayed when the executable is not found.
        """
        return pulumi.get(self, "install_hint")


@pulumi.output_type
class GitOpsClusterRequestClusterConfigTlsClientConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "caData":
            suggest = "ca_data"
        elif key == "certData":
            suggest = "cert_data"
        elif key == "keyData":
            suggest = "key_data"
        elif key == "serverName":
            suggest = "server_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsClusterRequestClusterConfigTlsClientConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsClusterRequestClusterConfigTlsClientConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsClusterRequestClusterConfigTlsClientConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ca_data: Optional[_builtins.str] = None,
                 cert_data: Optional[_builtins.str] = None,
                 insecure: Optional[_builtins.bool] = None,
                 key_data: Optional[_builtins.str] = None,
                 server_name: Optional[_builtins.str] = None):
        """
        :param _builtins.str ca_data: CA data holds PEM-encoded bytes (typically read from a root certificates bundle). Use this if you are using self-signed certificates. CAData takes precedence over CAFile. The value should be base64 encoded.
        :param _builtins.str cert_data: Certificate data holds PEM-encoded bytes (typically read from a client certificate file). CertData takes precedence over CertFile. Use this if you are using mTLS. The value should be base64 encoded.
        :param _builtins.bool insecure: Indicates if the TLS connection to the cluster should be insecure.
        :param _builtins.str key_data: Key data holds PEM-encoded bytes (typically read from a client certificate key file). KeyData takes precedence over KeyFile. Use this if you are using mTLS. The value should be base64 encoded.
        :param _builtins.str server_name: Server name for SNI in the client to check server certificates against. If ServerName is empty, the hostname used to contact the server is used.
        """
        if ca_data is not None:
            pulumi.set(__self__, "ca_data", ca_data)
        if cert_data is not None:
            pulumi.set(__self__, "cert_data", cert_data)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if key_data is not None:
            pulumi.set(__self__, "key_data", key_data)
        if server_name is not None:
            pulumi.set(__self__, "server_name", server_name)

    @_builtins.property
    @pulumi.getter(name="caData")
    def ca_data(self) -> Optional[_builtins.str]:
        """
        CA data holds PEM-encoded bytes (typically read from a root certificates bundle). Use this if you are using self-signed certificates. CAData takes precedence over CAFile. The value should be base64 encoded.
        """
        return pulumi.get(self, "ca_data")

    @_builtins.property
    @pulumi.getter(name="certData")
    def cert_data(self) -> Optional[_builtins.str]:
        """
        Certificate data holds PEM-encoded bytes (typically read from a client certificate file). CertData takes precedence over CertFile. Use this if you are using mTLS. The value should be base64 encoded.
        """
        return pulumi.get(self, "cert_data")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Indicates if the TLS connection to the cluster should be insecure.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="keyData")
    def key_data(self) -> Optional[_builtins.str]:
        """
        Key data holds PEM-encoded bytes (typically read from a client certificate key file). KeyData takes precedence over KeyFile. Use this if you are using mTLS. The value should be base64 encoded.
        """
        return pulumi.get(self, "key_data")

    @_builtins.property
    @pulumi.getter(name="serverName")
    def server_name(self) -> Optional[_builtins.str]:
        """
        Server name for SNI in the client to check server certificates against. If ServerName is empty, the hostname used to contact the server is used.
        """
        return pulumi.get(self, "server_name")


@pulumi.output_type
class GitOpsClusterRequestClusterInfo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "apiVersions":
            suggest = "api_versions"
        elif key == "applicationsCount":
            suggest = "applications_count"
        elif key == "cacheInfos":
            suggest = "cache_infos"
        elif key == "connectionStates":
            suggest = "connection_states"
        elif key == "serverVersion":
            suggest = "server_version"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsClusterRequestClusterInfo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsClusterRequestClusterInfo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsClusterRequestClusterInfo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api_versions: Optional[Sequence[_builtins.str]] = None,
                 applications_count: Optional[_builtins.str] = None,
                 cache_infos: Optional[Sequence['outputs.GitOpsClusterRequestClusterInfoCacheInfo']] = None,
                 connection_states: Optional[Sequence['outputs.GitOpsClusterRequestClusterInfoConnectionState']] = None,
                 server_version: Optional[_builtins.str] = None):
        """
        :param Sequence[_builtins.str] api_versions: List of API versions supported by the cluster.
        :param _builtins.str applications_count: Number of applications managed by Argo CD on the cluster.
        :param Sequence['GitOpsClusterRequestClusterInfoCacheInfoArgs'] cache_infos: Information about the cluster cache.
        :param Sequence['GitOpsClusterRequestClusterInfoConnectionStateArgs'] connection_states: Information about the connection to the cluster.
        :param _builtins.str server_version: Kubernetes version of the cluster.
        """
        if api_versions is not None:
            pulumi.set(__self__, "api_versions", api_versions)
        if applications_count is not None:
            pulumi.set(__self__, "applications_count", applications_count)
        if cache_infos is not None:
            pulumi.set(__self__, "cache_infos", cache_infos)
        if connection_states is not None:
            pulumi.set(__self__, "connection_states", connection_states)
        if server_version is not None:
            pulumi.set(__self__, "server_version", server_version)

    @_builtins.property
    @pulumi.getter(name="apiVersions")
    def api_versions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of API versions supported by the cluster.
        """
        return pulumi.get(self, "api_versions")

    @_builtins.property
    @pulumi.getter(name="applicationsCount")
    def applications_count(self) -> Optional[_builtins.str]:
        """
        Number of applications managed by Argo CD on the cluster.
        """
        return pulumi.get(self, "applications_count")

    @_builtins.property
    @pulumi.getter(name="cacheInfos")
    def cache_infos(self) -> Optional[Sequence['outputs.GitOpsClusterRequestClusterInfoCacheInfo']]:
        """
        Information about the cluster cache.
        """
        return pulumi.get(self, "cache_infos")

    @_builtins.property
    @pulumi.getter(name="connectionStates")
    def connection_states(self) -> Optional[Sequence['outputs.GitOpsClusterRequestClusterInfoConnectionState']]:
        """
        Information about the connection to the cluster.
        """
        return pulumi.get(self, "connection_states")

    @_builtins.property
    @pulumi.getter(name="serverVersion")
    def server_version(self) -> Optional[_builtins.str]:
        """
        Kubernetes version of the cluster.
        """
        return pulumi.get(self, "server_version")


@pulumi.output_type
class GitOpsClusterRequestClusterInfoCacheInfo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "apisCount":
            suggest = "apis_count"
        elif key == "lastCacheSyncTime":
            suggest = "last_cache_sync_time"
        elif key == "resourcesCount":
            suggest = "resources_count"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsClusterRequestClusterInfoCacheInfo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsClusterRequestClusterInfoCacheInfo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsClusterRequestClusterInfoCacheInfo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 apis_count: Optional[_builtins.str] = None,
                 last_cache_sync_time: Optional[_builtins.str] = None,
                 resources_count: Optional[_builtins.str] = None):
        """
        :param _builtins.str apis_count: Number of observed kubernetes API count.
        :param _builtins.str last_cache_sync_time: Time of most recent cache synchronization.
        :param _builtins.str resources_count: Number of observed kubernetes resources.
        """
        if apis_count is not None:
            pulumi.set(__self__, "apis_count", apis_count)
        if last_cache_sync_time is not None:
            pulumi.set(__self__, "last_cache_sync_time", last_cache_sync_time)
        if resources_count is not None:
            pulumi.set(__self__, "resources_count", resources_count)

    @_builtins.property
    @pulumi.getter(name="apisCount")
    def apis_count(self) -> Optional[_builtins.str]:
        """
        Number of observed kubernetes API count.
        """
        return pulumi.get(self, "apis_count")

    @_builtins.property
    @pulumi.getter(name="lastCacheSyncTime")
    def last_cache_sync_time(self) -> Optional[_builtins.str]:
        """
        Time of most recent cache synchronization.
        """
        return pulumi.get(self, "last_cache_sync_time")

    @_builtins.property
    @pulumi.getter(name="resourcesCount")
    def resources_count(self) -> Optional[_builtins.str]:
        """
        Number of observed kubernetes resources.
        """
        return pulumi.get(self, "resources_count")


@pulumi.output_type
class GitOpsClusterRequestClusterInfoConnectionState(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "attemptedAts":
            suggest = "attempted_ats"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsClusterRequestClusterInfoConnectionState. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsClusterRequestClusterInfoConnectionState.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsClusterRequestClusterInfoConnectionState.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 attempted_ats: Optional[Sequence['outputs.GitOpsClusterRequestClusterInfoConnectionStateAttemptedAt']] = None,
                 message: Optional[_builtins.str] = None,
                 status: Optional[_builtins.str] = None):
        """
        :param Sequence['GitOpsClusterRequestClusterInfoConnectionStateAttemptedAtArgs'] attempted_ats: Time when cluster cache refresh has been requested.
        :param _builtins.str message: Information about the connection status.
        :param _builtins.str status: Current status indicator of the connection.
        """
        if attempted_ats is not None:
            pulumi.set(__self__, "attempted_ats", attempted_ats)
        if message is not None:
            pulumi.set(__self__, "message", message)
        if status is not None:
            pulumi.set(__self__, "status", status)

    @_builtins.property
    @pulumi.getter(name="attemptedAts")
    def attempted_ats(self) -> Optional[Sequence['outputs.GitOpsClusterRequestClusterInfoConnectionStateAttemptedAt']]:
        """
        Time when cluster cache refresh has been requested.
        """
        return pulumi.get(self, "attempted_ats")

    @_builtins.property
    @pulumi.getter
    def message(self) -> Optional[_builtins.str]:
        """
        Information about the connection status.
        """
        return pulumi.get(self, "message")

    @_builtins.property
    @pulumi.getter
    def status(self) -> Optional[_builtins.str]:
        """
        Current status indicator of the connection.
        """
        return pulumi.get(self, "status")


@pulumi.output_type
class GitOpsClusterRequestClusterInfoConnectionStateAttemptedAt(dict):
    def __init__(__self__, *,
                 nanos: Optional[_builtins.int] = None,
                 seconds: Optional[_builtins.str] = None):
        """
        :param _builtins.int nanos: Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive. This field may be limited in precision depending on context.
        :param _builtins.str seconds: Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
        """
        if nanos is not None:
            pulumi.set(__self__, "nanos", nanos)
        if seconds is not None:
            pulumi.set(__self__, "seconds", seconds)

    @_builtins.property
    @pulumi.getter
    def nanos(self) -> Optional[_builtins.int]:
        """
        Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive. This field may be limited in precision depending on context.
        """
        return pulumi.get(self, "nanos")

    @_builtins.property
    @pulumi.getter
    def seconds(self) -> Optional[_builtins.str]:
        """
        Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
        """
        return pulumi.get(self, "seconds")


@pulumi.output_type
class GitOpsClusterRequestClusterRefreshRequestedAt(dict):
    def __init__(__self__, *,
                 nanos: Optional[_builtins.int] = None,
                 seconds: Optional[_builtins.str] = None):
        """
        :param _builtins.int nanos: Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive. This field may be limited in precision depending on context.
        :param _builtins.str seconds: Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
        """
        if nanos is not None:
            pulumi.set(__self__, "nanos", nanos)
        if seconds is not None:
            pulumi.set(__self__, "seconds", seconds)

    @_builtins.property
    @pulumi.getter
    def nanos(self) -> Optional[_builtins.int]:
        """
        Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive. This field may be limited in precision depending on context.
        """
        return pulumi.get(self, "nanos")

    @_builtins.property
    @pulumi.getter
    def seconds(self) -> Optional[_builtins.str]:
        """
        Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
        """
        return pulumi.get(self, "seconds")


@pulumi.output_type
class GitOpsGnupgRequest(dict):
    def __init__(__self__, *,
                 upsert: _builtins.bool,
                 publickeys: Optional[Sequence['outputs.GitOpsGnupgRequestPublickey']] = None):
        """
        :param _builtins.bool upsert: Indicates if the GnuPG Key should be inserted if not present or updated if present.
        :param Sequence['GitOpsGnupgRequestPublickeyArgs'] publickeys: Public key details.
        """
        pulumi.set(__self__, "upsert", upsert)
        if publickeys is not None:
            pulumi.set(__self__, "publickeys", publickeys)

    @_builtins.property
    @pulumi.getter
    def upsert(self) -> _builtins.bool:
        """
        Indicates if the GnuPG Key should be inserted if not present or updated if present.
        """
        return pulumi.get(self, "upsert")

    @_builtins.property
    @pulumi.getter
    def publickeys(self) -> Optional[Sequence['outputs.GitOpsGnupgRequestPublickey']]:
        """
        Public key details.
        """
        return pulumi.get(self, "publickeys")


@pulumi.output_type
class GitOpsGnupgRequestPublickey(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "keyData":
            suggest = "key_data"
        elif key == "keyId":
            suggest = "key_id"
        elif key == "subType":
            suggest = "sub_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsGnupgRequestPublickey. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsGnupgRequestPublickey.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsGnupgRequestPublickey.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key_data: _builtins.str,
                 fingerprint: Optional[_builtins.str] = None,
                 key_id: Optional[_builtins.str] = None,
                 owner: Optional[_builtins.str] = None,
                 sub_type: Optional[_builtins.str] = None,
                 trust: Optional[_builtins.str] = None):
        """
        :param _builtins.str key_data: KeyData holds the raw key data, in base64 encoded format.
        :param _builtins.str fingerprint: Fingerprint is the fingerprint of the key
        :param _builtins.str key_id: KeyID specifies the key ID, in hexadecimal string format.
        :param _builtins.str owner: Owner holds the owner identification, e.g. a name and e-mail address
        :param _builtins.str sub_type: SubType holds the key's sub type
        :param _builtins.str trust: Trust holds the level of trust assigned to this key
        """
        pulumi.set(__self__, "key_data", key_data)
        if fingerprint is not None:
            pulumi.set(__self__, "fingerprint", fingerprint)
        if key_id is not None:
            pulumi.set(__self__, "key_id", key_id)
        if owner is not None:
            pulumi.set(__self__, "owner", owner)
        if sub_type is not None:
            pulumi.set(__self__, "sub_type", sub_type)
        if trust is not None:
            pulumi.set(__self__, "trust", trust)

    @_builtins.property
    @pulumi.getter(name="keyData")
    def key_data(self) -> _builtins.str:
        """
        KeyData holds the raw key data, in base64 encoded format.
        """
        return pulumi.get(self, "key_data")

    @_builtins.property
    @pulumi.getter
    def fingerprint(self) -> Optional[_builtins.str]:
        """
        Fingerprint is the fingerprint of the key
        """
        return pulumi.get(self, "fingerprint")

    @_builtins.property
    @pulumi.getter(name="keyId")
    def key_id(self) -> Optional[_builtins.str]:
        """
        KeyID specifies the key ID, in hexadecimal string format.
        """
        return pulumi.get(self, "key_id")

    @_builtins.property
    @pulumi.getter
    def owner(self) -> Optional[_builtins.str]:
        """
        Owner holds the owner identification, e.g. a name and e-mail address
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter(name="subType")
    def sub_type(self) -> Optional[_builtins.str]:
        """
        SubType holds the key's sub type
        """
        return pulumi.get(self, "sub_type")

    @_builtins.property
    @pulumi.getter
    def trust(self) -> Optional[_builtins.str]:
        """
        Trust holds the level of trust assigned to this key
        """
        return pulumi.get(self, "trust")


@pulumi.output_type
class GitOpsRepoCertRequest(dict):
    def __init__(__self__, *,
                 certificates: Optional[Sequence['outputs.GitOpsRepoCertRequestCertificate']] = None,
                 upsert: Optional[_builtins.bool] = None):
        """
        :param Sequence['GitOpsRepoCertRequestCertificateArgs'] certificates: certificates details.
        :param _builtins.bool upsert: Indicates if the GitOps repository certificate should be updated if existing and inserted if not.
        """
        if certificates is not None:
            pulumi.set(__self__, "certificates", certificates)
        if upsert is not None:
            pulumi.set(__self__, "upsert", upsert)

    @_builtins.property
    @pulumi.getter
    def certificates(self) -> Optional[Sequence['outputs.GitOpsRepoCertRequestCertificate']]:
        """
        certificates details.
        """
        return pulumi.get(self, "certificates")

    @_builtins.property
    @pulumi.getter
    def upsert(self) -> Optional[_builtins.bool]:
        """
        Indicates if the GitOps repository certificate should be updated if existing and inserted if not.
        """
        return pulumi.get(self, "upsert")


@pulumi.output_type
class GitOpsRepoCertRequestCertificate(dict):
    def __init__(__self__, *,
                 items: Optional[Sequence['outputs.GitOpsRepoCertRequestCertificateItem']] = None,
                 metadatas: Optional[Sequence['outputs.GitOpsRepoCertRequestCertificateMetadata']] = None):
        """
        :param Sequence['GitOpsRepoCertRequestCertificateItemArgs'] items: List of certificates to be processed.
        :param Sequence['GitOpsRepoCertRequestCertificateMetadataArgs'] metadatas: metadata details
        """
        if items is not None:
            pulumi.set(__self__, "items", items)
        if metadatas is not None:
            pulumi.set(__self__, "metadatas", metadatas)

    @_builtins.property
    @pulumi.getter
    def items(self) -> Optional[Sequence['outputs.GitOpsRepoCertRequestCertificateItem']]:
        """
        List of certificates to be processed.
        """
        return pulumi.get(self, "items")

    @_builtins.property
    @pulumi.getter
    def metadatas(self) -> Optional[Sequence['outputs.GitOpsRepoCertRequestCertificateMetadata']]:
        """
        metadata details
        """
        return pulumi.get(self, "metadatas")


@pulumi.output_type
class GitOpsRepoCertRequestCertificateItem(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "certData":
            suggest = "cert_data"
        elif key == "certInfo":
            suggest = "cert_info"
        elif key == "certSubType":
            suggest = "cert_sub_type"
        elif key == "certType":
            suggest = "cert_type"
        elif key == "serverName":
            suggest = "server_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsRepoCertRequestCertificateItem. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsRepoCertRequestCertificateItem.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsRepoCertRequestCertificateItem.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cert_data: Optional[_builtins.str] = None,
                 cert_info: Optional[_builtins.str] = None,
                 cert_sub_type: Optional[_builtins.str] = None,
                 cert_type: Optional[_builtins.str] = None,
                 server_name: Optional[_builtins.str] = None):
        """
        :param _builtins.str cert_data: CertData contains the actual certificate data, dependent on the certificate type. The value should be base64 encoded
        :param _builtins.str cert_info: CertInfo will hold additional certificate info, dependent on the certificate type .
        :param _builtins.str cert_sub_type: CertSubType specifies the sub type of the cert, i.e. ssh-rsa.
        :param _builtins.str cert_type: CertType specifies the type of the certificate - currently one of https or ssh.
        :param _builtins.str server_name: ServerName specifies the DNS name of the server this certificate is intended.
        """
        if cert_data is not None:
            pulumi.set(__self__, "cert_data", cert_data)
        if cert_info is not None:
            pulumi.set(__self__, "cert_info", cert_info)
        if cert_sub_type is not None:
            pulumi.set(__self__, "cert_sub_type", cert_sub_type)
        if cert_type is not None:
            pulumi.set(__self__, "cert_type", cert_type)
        if server_name is not None:
            pulumi.set(__self__, "server_name", server_name)

    @_builtins.property
    @pulumi.getter(name="certData")
    def cert_data(self) -> Optional[_builtins.str]:
        """
        CertData contains the actual certificate data, dependent on the certificate type. The value should be base64 encoded
        """
        return pulumi.get(self, "cert_data")

    @_builtins.property
    @pulumi.getter(name="certInfo")
    def cert_info(self) -> Optional[_builtins.str]:
        """
        CertInfo will hold additional certificate info, dependent on the certificate type .
        """
        return pulumi.get(self, "cert_info")

    @_builtins.property
    @pulumi.getter(name="certSubType")
    def cert_sub_type(self) -> Optional[_builtins.str]:
        """
        CertSubType specifies the sub type of the cert, i.e. ssh-rsa.
        """
        return pulumi.get(self, "cert_sub_type")

    @_builtins.property
    @pulumi.getter(name="certType")
    def cert_type(self) -> Optional[_builtins.str]:
        """
        CertType specifies the type of the certificate - currently one of https or ssh.
        """
        return pulumi.get(self, "cert_type")

    @_builtins.property
    @pulumi.getter(name="serverName")
    def server_name(self) -> Optional[_builtins.str]:
        """
        ServerName specifies the DNS name of the server this certificate is intended.
        """
        return pulumi.get(self, "server_name")


@pulumi.output_type
class GitOpsRepoCertRequestCertificateMetadata(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "continue":
            suggest = "continue_"
        elif key == "remainingItemCount":
            suggest = "remaining_item_count"
        elif key == "resourceVersion":
            suggest = "resource_version"
        elif key == "selfLink":
            suggest = "self_link"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsRepoCertRequestCertificateMetadata. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsRepoCertRequestCertificateMetadata.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsRepoCertRequestCertificateMetadata.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 continue_: Optional[_builtins.str] = None,
                 remaining_item_count: Optional[_builtins.str] = None,
                 resource_version: Optional[_builtins.str] = None,
                 self_link: Optional[_builtins.str] = None):
        """
        :param _builtins.str continue_: continue may be set if the user set a limit on the number of items returned.
        :param _builtins.str remaining_item_count: subsequent items in the list.
        :param _builtins.str resource_version: Identifies the server's internal version.
        :param _builtins.str self_link: selfLink is a URL representing this object.
        """
        if continue_ is not None:
            pulumi.set(__self__, "continue_", continue_)
        if remaining_item_count is not None:
            pulumi.set(__self__, "remaining_item_count", remaining_item_count)
        if resource_version is not None:
            pulumi.set(__self__, "resource_version", resource_version)
        if self_link is not None:
            pulumi.set(__self__, "self_link", self_link)

    @_builtins.property
    @pulumi.getter(name="continue")
    def continue_(self) -> Optional[_builtins.str]:
        """
        continue may be set if the user set a limit on the number of items returned.
        """
        return pulumi.get(self, "continue_")

    @_builtins.property
    @pulumi.getter(name="remainingItemCount")
    def remaining_item_count(self) -> Optional[_builtins.str]:
        """
        subsequent items in the list.
        """
        return pulumi.get(self, "remaining_item_count")

    @_builtins.property
    @pulumi.getter(name="resourceVersion")
    def resource_version(self) -> Optional[_builtins.str]:
        """
        Identifies the server's internal version.
        """
        return pulumi.get(self, "resource_version")

    @_builtins.property
    @pulumi.getter(name="selfLink")
    def self_link(self) -> Optional[_builtins.str]:
        """
        selfLink is a URL representing this object.
        """
        return pulumi.get(self, "self_link")


@pulumi.output_type
class GitOpsRepoCredCred(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "enableOci":
            suggest = "enable_oci"
        elif key == "githubAppEnterpriseBaseUrl":
            suggest = "github_app_enterprise_base_url"
        elif key == "githubAppId":
            suggest = "github_app_id"
        elif key == "githubAppInstallationId":
            suggest = "github_app_installation_id"
        elif key == "githubAppPrivateKey":
            suggest = "github_app_private_key"
        elif key == "sshPrivateKey":
            suggest = "ssh_private_key"
        elif key == "tlsClientCertData":
            suggest = "tls_client_cert_data"
        elif key == "tlsClientCertKey":
            suggest = "tls_client_cert_key"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsRepoCredCred. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsRepoCredCred.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsRepoCredCred.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 enable_oci: Optional[_builtins.bool] = None,
                 github_app_enterprise_base_url: Optional[_builtins.str] = None,
                 github_app_id: Optional[_builtins.str] = None,
                 github_app_installation_id: Optional[_builtins.str] = None,
                 github_app_private_key: Optional[_builtins.str] = None,
                 password: Optional[_builtins.str] = None,
                 ssh_private_key: Optional[_builtins.str] = None,
                 tls_client_cert_data: Optional[_builtins.str] = None,
                 tls_client_cert_key: Optional[_builtins.str] = None,
                 type: Optional[_builtins.str] = None,
                 url: Optional[_builtins.str] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param _builtins.bool enable_oci: Specifies whether helm-oci support should be enabled for this repo.
        :param _builtins.str github_app_enterprise_base_url: Specifies the GitHub API URL for GitHub app authentication.
        :param _builtins.str github_app_id: Specifies the Github App ID of the app used to access the repo for GitHub app authentication.
        :param _builtins.str github_app_installation_id: Specifies the ID of the installed GitHub App for GitHub app authentication.
        :param _builtins.str github_app_private_key: github*app*private_key specifies the private key PEM data for authentication via GitHub app.
        :param _builtins.str password: Password or PAT to be used for authenticating the remote repository.
        :param _builtins.str ssh_private_key: SSH Key in PEM format for authenticating the repository. Used only for Git repository.
        :param _builtins.str tls_client_cert_data: Certificate in PEM format for authenticating at the repo server. This is used for mTLS.
        :param _builtins.str tls_client_cert_key: Private key in PEM format for authenticating at the repo server. This is used for mTLS.
        :param _builtins.str type: Type specifies the type of the repoCreds.Can be either 'git' or 'helm. 'git' is assumed if empty or absent
        :param _builtins.str url: URL of the remote repository. Make sure you pass at least an org, this will not work if you just provide the host, for eg. "https://github.com"
        :param _builtins.str username: Username to be used for authenticating the remote repository.
        """
        if enable_oci is not None:
            pulumi.set(__self__, "enable_oci", enable_oci)
        if github_app_enterprise_base_url is not None:
            pulumi.set(__self__, "github_app_enterprise_base_url", github_app_enterprise_base_url)
        if github_app_id is not None:
            pulumi.set(__self__, "github_app_id", github_app_id)
        if github_app_installation_id is not None:
            pulumi.set(__self__, "github_app_installation_id", github_app_installation_id)
        if github_app_private_key is not None:
            pulumi.set(__self__, "github_app_private_key", github_app_private_key)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if ssh_private_key is not None:
            pulumi.set(__self__, "ssh_private_key", ssh_private_key)
        if tls_client_cert_data is not None:
            pulumi.set(__self__, "tls_client_cert_data", tls_client_cert_data)
        if tls_client_cert_key is not None:
            pulumi.set(__self__, "tls_client_cert_key", tls_client_cert_key)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if url is not None:
            pulumi.set(__self__, "url", url)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="enableOci")
    def enable_oci(self) -> Optional[_builtins.bool]:
        """
        Specifies whether helm-oci support should be enabled for this repo.
        """
        return pulumi.get(self, "enable_oci")

    @_builtins.property
    @pulumi.getter(name="githubAppEnterpriseBaseUrl")
    def github_app_enterprise_base_url(self) -> Optional[_builtins.str]:
        """
        Specifies the GitHub API URL for GitHub app authentication.
        """
        return pulumi.get(self, "github_app_enterprise_base_url")

    @_builtins.property
    @pulumi.getter(name="githubAppId")
    def github_app_id(self) -> Optional[_builtins.str]:
        """
        Specifies the Github App ID of the app used to access the repo for GitHub app authentication.
        """
        return pulumi.get(self, "github_app_id")

    @_builtins.property
    @pulumi.getter(name="githubAppInstallationId")
    def github_app_installation_id(self) -> Optional[_builtins.str]:
        """
        Specifies the ID of the installed GitHub App for GitHub app authentication.
        """
        return pulumi.get(self, "github_app_installation_id")

    @_builtins.property
    @pulumi.getter(name="githubAppPrivateKey")
    def github_app_private_key(self) -> Optional[_builtins.str]:
        """
        github*app*private_key specifies the private key PEM data for authentication via GitHub app.
        """
        return pulumi.get(self, "github_app_private_key")

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[_builtins.str]:
        """
        Password or PAT to be used for authenticating the remote repository.
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter(name="sshPrivateKey")
    def ssh_private_key(self) -> Optional[_builtins.str]:
        """
        SSH Key in PEM format for authenticating the repository. Used only for Git repository.
        """
        return pulumi.get(self, "ssh_private_key")

    @_builtins.property
    @pulumi.getter(name="tlsClientCertData")
    def tls_client_cert_data(self) -> Optional[_builtins.str]:
        """
        Certificate in PEM format for authenticating at the repo server. This is used for mTLS.
        """
        return pulumi.get(self, "tls_client_cert_data")

    @_builtins.property
    @pulumi.getter(name="tlsClientCertKey")
    def tls_client_cert_key(self) -> Optional[_builtins.str]:
        """
        Private key in PEM format for authenticating at the repo server. This is used for mTLS.
        """
        return pulumi.get(self, "tls_client_cert_key")

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[_builtins.str]:
        """
        Type specifies the type of the repoCreds.Can be either 'git' or 'helm. 'git' is assumed if empty or absent
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def url(self) -> Optional[_builtins.str]:
        """
        URL of the remote repository. Make sure you pass at least an org, this will not work if you just provide the host, for eg. "https://github.com"
        """
        return pulumi.get(self, "url")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to be used for authenticating the remote repository.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitOpsRepositoryEcrGen(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jwtAuth":
            suggest = "jwt_auth"
        elif key == "secretRef":
            suggest = "secret_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsRepositoryEcrGen. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsRepositoryEcrGen.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsRepositoryEcrGen.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 jwt_auth: Optional['outputs.GitOpsRepositoryEcrGenJwtAuth'] = None,
                 region: Optional[_builtins.str] = None,
                 secret_ref: Optional['outputs.GitOpsRepositoryEcrGenSecretRef'] = None):
        """
        :param 'GitOpsRepositoryEcrGenJwtAuthArgs' jwt_auth: JWT authentication specific configuration.
        :param _builtins.str region: AWS region.
        :param 'GitOpsRepositoryEcrGenSecretRefArgs' secret_ref: Secret reference to the AWS credentials.
        """
        if jwt_auth is not None:
            pulumi.set(__self__, "jwt_auth", jwt_auth)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if secret_ref is not None:
            pulumi.set(__self__, "secret_ref", secret_ref)

    @_builtins.property
    @pulumi.getter(name="jwtAuth")
    def jwt_auth(self) -> Optional['outputs.GitOpsRepositoryEcrGenJwtAuth']:
        """
        JWT authentication specific configuration.
        """
        return pulumi.get(self, "jwt_auth")

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[_builtins.str]:
        """
        AWS region.
        """
        return pulumi.get(self, "region")

    @_builtins.property
    @pulumi.getter(name="secretRef")
    def secret_ref(self) -> Optional['outputs.GitOpsRepositoryEcrGenSecretRef']:
        """
        Secret reference to the AWS credentials.
        """
        return pulumi.get(self, "secret_ref")


@pulumi.output_type
class GitOpsRepositoryEcrGenJwtAuth(dict):
    def __init__(__self__, *,
                 audiences: Optional[Sequence[_builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Sequence[_builtins.str] audiences: Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list
        :param _builtins.str name: The name of the ServiceAccount resource being referred to.
        :param _builtins.str namespace: Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.
        """
        if audiences is not None:
            pulumi.set(__self__, "audiences", audiences)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def audiences(self) -> Optional[Sequence[_builtins.str]]:
        """
        Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list
        """
        return pulumi.get(self, "audiences")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The name of the ServiceAccount resource being referred to.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitOpsRepositoryEcrGenSecretRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "awsAccessKeyId":
            suggest = "aws_access_key_id"
        elif key == "awsSecretAccessKey":
            suggest = "aws_secret_access_key"
        elif key == "awsSessionToken":
            suggest = "aws_session_token"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsRepositoryEcrGenSecretRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsRepositoryEcrGenSecretRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsRepositoryEcrGenSecretRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 aws_access_key_id: Optional[_builtins.str] = None,
                 aws_secret_access_key: Optional[_builtins.str] = None,
                 aws_session_token: Optional[_builtins.str] = None):
        """
        :param _builtins.str aws_access_key_id: AWS access key id.
        :param _builtins.str aws_secret_access_key: AWS secret access key.
        :param _builtins.str aws_session_token: AWS session token.
        """
        if aws_access_key_id is not None:
            pulumi.set(__self__, "aws_access_key_id", aws_access_key_id)
        if aws_secret_access_key is not None:
            pulumi.set(__self__, "aws_secret_access_key", aws_secret_access_key)
        if aws_session_token is not None:
            pulumi.set(__self__, "aws_session_token", aws_session_token)

    @_builtins.property
    @pulumi.getter(name="awsAccessKeyId")
    def aws_access_key_id(self) -> Optional[_builtins.str]:
        """
        AWS access key id.
        """
        return pulumi.get(self, "aws_access_key_id")

    @_builtins.property
    @pulumi.getter(name="awsSecretAccessKey")
    def aws_secret_access_key(self) -> Optional[_builtins.str]:
        """
        AWS secret access key.
        """
        return pulumi.get(self, "aws_secret_access_key")

    @_builtins.property
    @pulumi.getter(name="awsSessionToken")
    def aws_session_token(self) -> Optional[_builtins.str]:
        """
        AWS session token.
        """
        return pulumi.get(self, "aws_session_token")


@pulumi.output_type
class GitOpsRepositoryGcrGen(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "accessKey":
            suggest = "access_key"
        elif key == "projectId":
            suggest = "project_id"
        elif key == "workloadIdentity":
            suggest = "workload_identity"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsRepositoryGcrGen. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsRepositoryGcrGen.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsRepositoryGcrGen.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 access_key: Optional[_builtins.str] = None,
                 project_id: Optional[_builtins.str] = None,
                 workload_identity: Optional['outputs.GitOpsRepositoryGcrGenWorkloadIdentity'] = None):
        """
        :param _builtins.str access_key: GCP access key.
        :param _builtins.str project_id: GCP project id.
        :param 'GitOpsRepositoryGcrGenWorkloadIdentityArgs' workload_identity: GCP workload identity.
        """
        if access_key is not None:
            pulumi.set(__self__, "access_key", access_key)
        if project_id is not None:
            pulumi.set(__self__, "project_id", project_id)
        if workload_identity is not None:
            pulumi.set(__self__, "workload_identity", workload_identity)

    @_builtins.property
    @pulumi.getter(name="accessKey")
    def access_key(self) -> Optional[_builtins.str]:
        """
        GCP access key.
        """
        return pulumi.get(self, "access_key")

    @_builtins.property
    @pulumi.getter(name="projectId")
    def project_id(self) -> Optional[_builtins.str]:
        """
        GCP project id.
        """
        return pulumi.get(self, "project_id")

    @_builtins.property
    @pulumi.getter(name="workloadIdentity")
    def workload_identity(self) -> Optional['outputs.GitOpsRepositoryGcrGenWorkloadIdentity']:
        """
        GCP workload identity.
        """
        return pulumi.get(self, "workload_identity")


@pulumi.output_type
class GitOpsRepositoryGcrGenWorkloadIdentity(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clusterLocation":
            suggest = "cluster_location"
        elif key == "clusterName":
            suggest = "cluster_name"
        elif key == "clusterProjectId":
            suggest = "cluster_project_id"
        elif key == "serviceAccountRef":
            suggest = "service_account_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsRepositoryGcrGenWorkloadIdentity. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsRepositoryGcrGenWorkloadIdentity.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsRepositoryGcrGenWorkloadIdentity.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cluster_location: Optional[_builtins.str] = None,
                 cluster_name: Optional[_builtins.str] = None,
                 cluster_project_id: Optional[_builtins.str] = None,
                 service_account_ref: Optional['outputs.GitOpsRepositoryGcrGenWorkloadIdentityServiceAccountRef'] = None):
        """
        :param _builtins.str cluster_location: Cluster location.
        :param _builtins.str cluster_name: Cluster name.
        :param _builtins.str cluster_project_id: Cluster project id.
        :param 'GitOpsRepositoryGcrGenWorkloadIdentityServiceAccountRefArgs' service_account_ref: Service account reference.
        """
        if cluster_location is not None:
            pulumi.set(__self__, "cluster_location", cluster_location)
        if cluster_name is not None:
            pulumi.set(__self__, "cluster_name", cluster_name)
        if cluster_project_id is not None:
            pulumi.set(__self__, "cluster_project_id", cluster_project_id)
        if service_account_ref is not None:
            pulumi.set(__self__, "service_account_ref", service_account_ref)

    @_builtins.property
    @pulumi.getter(name="clusterLocation")
    def cluster_location(self) -> Optional[_builtins.str]:
        """
        Cluster location.
        """
        return pulumi.get(self, "cluster_location")

    @_builtins.property
    @pulumi.getter(name="clusterName")
    def cluster_name(self) -> Optional[_builtins.str]:
        """
        Cluster name.
        """
        return pulumi.get(self, "cluster_name")

    @_builtins.property
    @pulumi.getter(name="clusterProjectId")
    def cluster_project_id(self) -> Optional[_builtins.str]:
        """
        Cluster project id.
        """
        return pulumi.get(self, "cluster_project_id")

    @_builtins.property
    @pulumi.getter(name="serviceAccountRef")
    def service_account_ref(self) -> Optional['outputs.GitOpsRepositoryGcrGenWorkloadIdentityServiceAccountRef']:
        """
        Service account reference.
        """
        return pulumi.get(self, "service_account_ref")


@pulumi.output_type
class GitOpsRepositoryGcrGenWorkloadIdentityServiceAccountRef(dict):
    def __init__(__self__, *,
                 audiences: Optional[Sequence[_builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Sequence[_builtins.str] audiences: Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list
        :param _builtins.str name: The name of the ServiceAccount resource being referred to.
        :param _builtins.str namespace: Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.
        """
        if audiences is not None:
            pulumi.set(__self__, "audiences", audiences)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def audiences(self) -> Optional[Sequence[_builtins.str]]:
        """
        Audience specifies the `aud` claim for the service account token If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity then this audiences will be appended to the list
        """
        return pulumi.get(self, "audiences")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The name of the ServiceAccount resource being referred to.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults to the namespace of the referent.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitOpsRepositoryRepo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "connectionType":
            suggest = "connection_type"
        elif key == "enableLfs":
            suggest = "enable_lfs"
        elif key == "enableOci":
            suggest = "enable_oci"
        elif key == "githubAppEnterpriseBaseUrl":
            suggest = "github_app_enterprise_base_url"
        elif key == "githubAppId":
            suggest = "github_app_id"
        elif key == "githubAppInstallationId":
            suggest = "github_app_installation_id"
        elif key == "githubAppPrivateKey":
            suggest = "github_app_private_key"
        elif key == "inheritedCreds":
            suggest = "inherited_creds"
        elif key == "insecureIgnoreHostKey":
            suggest = "insecure_ignore_host_key"
        elif key == "sshPrivateKey":
            suggest = "ssh_private_key"
        elif key == "tlsClientCertData":
            suggest = "tls_client_cert_data"
        elif key == "tlsClientCertKey":
            suggest = "tls_client_cert_key"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitOpsRepositoryRepo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitOpsRepositoryRepo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitOpsRepositoryRepo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 connection_type: _builtins.str,
                 repo: _builtins.str,
                 enable_lfs: Optional[_builtins.bool] = None,
                 enable_oci: Optional[_builtins.bool] = None,
                 github_app_enterprise_base_url: Optional[_builtins.str] = None,
                 github_app_id: Optional[_builtins.str] = None,
                 github_app_installation_id: Optional[_builtins.str] = None,
                 github_app_private_key: Optional[_builtins.str] = None,
                 inherited_creds: Optional[_builtins.bool] = None,
                 insecure: Optional[_builtins.bool] = None,
                 insecure_ignore_host_key: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 password: Optional[_builtins.str] = None,
                 project: Optional[_builtins.str] = None,
                 proxy: Optional[_builtins.str] = None,
                 ssh_private_key: Optional[_builtins.str] = None,
                 tls_client_cert_data: Optional[_builtins.str] = None,
                 tls_client_cert_key: Optional[_builtins.str] = None,
                 type_: Optional[_builtins.str] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param _builtins.str connection_type: Identifies the authentication method used to connect to the repository. Possible values: "HTTPS" "SSH" "GITHUB" "HTTPS*ANONYMOUS", "GITHUB*ENTERPRISE".
        :param _builtins.str repo: URL to the remote repository.
        :param _builtins.bool enable_lfs: Indicates if git-lfs support must be enabled for this repo. This is valid only for Git repositories.
        :param _builtins.bool enable_oci: Indicates if helm-oci support must be enabled for this repo.
        :param _builtins.str github_app_enterprise_base_url: Base URL of GitHub Enterprise installation. If left empty, this defaults to https://api.github.com.
        :param _builtins.str github_app_id: Id of the GitHub app used to access the repo.
        :param _builtins.str github_app_installation_id: Installation id of the GitHub app used to access the repo.
        :param _builtins.str github_app_private_key: GitHub app private key PEM data.
        :param _builtins.bool inherited_creds: Indicates if the credentials were inherited from a repository credential.
        :param _builtins.bool insecure: Indicates if the connection to the repository ignores any errors when verifying TLS certificates or SSH host keys.
        :param _builtins.bool insecure_ignore_host_key: Indicates if InsecureIgnoreHostKey should be used. Insecure is favored used only for git repos. Deprecated.
        :param _builtins.str name: Name to be used for this repo. Only used with Helm repos.
        :param _builtins.str password: Password or PAT to be used for authenticating the remote repository.
        :param _builtins.str project: The ArgoCD project name corresponding to this GitOps repository. An empty string means that the GitOps repository belongs to the default project created by Harness.
        :param _builtins.str proxy: The HTTP/HTTPS proxy used to access the repo.
        :param _builtins.str ssh_private_key: SSH Key in PEM format for authenticating the repository. Used only for Git repository.
        :param _builtins.str tls_client_cert_data: Certificate in PEM format for authenticating at the repo server. This is used for mTLS. The value should be base64 encoded.
        :param _builtins.str tls_client_cert_key: Private key in PEM format for authenticating at the repo server. This is used for mTLS. The value should be base64 encoded.
        :param _builtins.str type_: Type specifies the type of the repo. Can be either "git" or "helm. "git" is assumed if empty or absent.
        :param _builtins.str username: Username to be used for authenticating the remote repository.
        """
        pulumi.set(__self__, "connection_type", connection_type)
        pulumi.set(__self__, "repo", repo)
        if enable_lfs is not None:
            pulumi.set(__self__, "enable_lfs", enable_lfs)
        if enable_oci is not None:
            pulumi.set(__self__, "enable_oci", enable_oci)
        if github_app_enterprise_base_url is not None:
            pulumi.set(__self__, "github_app_enterprise_base_url", github_app_enterprise_base_url)
        if github_app_id is not None:
            pulumi.set(__self__, "github_app_id", github_app_id)
        if github_app_installation_id is not None:
            pulumi.set(__self__, "github_app_installation_id", github_app_installation_id)
        if github_app_private_key is not None:
            pulumi.set(__self__, "github_app_private_key", github_app_private_key)
        if inherited_creds is not None:
            pulumi.set(__self__, "inherited_creds", inherited_creds)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if insecure_ignore_host_key is not None:
            pulumi.set(__self__, "insecure_ignore_host_key", insecure_ignore_host_key)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if proxy is not None:
            pulumi.set(__self__, "proxy", proxy)
        if ssh_private_key is not None:
            pulumi.set(__self__, "ssh_private_key", ssh_private_key)
        if tls_client_cert_data is not None:
            pulumi.set(__self__, "tls_client_cert_data", tls_client_cert_data)
        if tls_client_cert_key is not None:
            pulumi.set(__self__, "tls_client_cert_key", tls_client_cert_key)
        if type_ is not None:
            pulumi.set(__self__, "type_", type_)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="connectionType")
    def connection_type(self) -> _builtins.str:
        """
        Identifies the authentication method used to connect to the repository. Possible values: "HTTPS" "SSH" "GITHUB" "HTTPS*ANONYMOUS", "GITHUB*ENTERPRISE".
        """
        return pulumi.get(self, "connection_type")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        URL to the remote repository.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter(name="enableLfs")
    def enable_lfs(self) -> Optional[_builtins.bool]:
        """
        Indicates if git-lfs support must be enabled for this repo. This is valid only for Git repositories.
        """
        return pulumi.get(self, "enable_lfs")

    @_builtins.property
    @pulumi.getter(name="enableOci")
    def enable_oci(self) -> Optional[_builtins.bool]:
        """
        Indicates if helm-oci support must be enabled for this repo.
        """
        return pulumi.get(self, "enable_oci")

    @_builtins.property
    @pulumi.getter(name="githubAppEnterpriseBaseUrl")
    def github_app_enterprise_base_url(self) -> Optional[_builtins.str]:
        """
        Base URL of GitHub Enterprise installation. If left empty, this defaults to https://api.github.com.
        """
        return pulumi.get(self, "github_app_enterprise_base_url")

    @_builtins.property
    @pulumi.getter(name="githubAppId")
    def github_app_id(self) -> Optional[_builtins.str]:
        """
        Id of the GitHub app used to access the repo.
        """
        return pulumi.get(self, "github_app_id")

    @_builtins.property
    @pulumi.getter(name="githubAppInstallationId")
    def github_app_installation_id(self) -> Optional[_builtins.str]:
        """
        Installation id of the GitHub app used to access the repo.
        """
        return pulumi.get(self, "github_app_installation_id")

    @_builtins.property
    @pulumi.getter(name="githubAppPrivateKey")
    def github_app_private_key(self) -> Optional[_builtins.str]:
        """
        GitHub app private key PEM data.
        """
        return pulumi.get(self, "github_app_private_key")

    @_builtins.property
    @pulumi.getter(name="inheritedCreds")
    def inherited_creds(self) -> Optional[_builtins.bool]:
        """
        Indicates if the credentials were inherited from a repository credential.
        """
        return pulumi.get(self, "inherited_creds")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Indicates if the connection to the repository ignores any errors when verifying TLS certificates or SSH host keys.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="insecureIgnoreHostKey")
    def insecure_ignore_host_key(self) -> Optional[_builtins.bool]:
        """
        Indicates if InsecureIgnoreHostKey should be used. Insecure is favored used only for git repos. Deprecated.
        """
        return pulumi.get(self, "insecure_ignore_host_key")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name to be used for this repo. Only used with Helm repos.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[_builtins.str]:
        """
        Password or PAT to be used for authenticating the remote repository.
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The ArgoCD project name corresponding to this GitOps repository. An empty string means that the GitOps repository belongs to the default project created by Harness.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def proxy(self) -> Optional[_builtins.str]:
        """
        The HTTP/HTTPS proxy used to access the repo.
        """
        return pulumi.get(self, "proxy")

    @_builtins.property
    @pulumi.getter(name="sshPrivateKey")
    def ssh_private_key(self) -> Optional[_builtins.str]:
        """
        SSH Key in PEM format for authenticating the repository. Used only for Git repository.
        """
        return pulumi.get(self, "ssh_private_key")

    @_builtins.property
    @pulumi.getter(name="tlsClientCertData")
    def tls_client_cert_data(self) -> Optional[_builtins.str]:
        """
        Certificate in PEM format for authenticating at the repo server. This is used for mTLS. The value should be base64 encoded.
        """
        return pulumi.get(self, "tls_client_cert_data")

    @_builtins.property
    @pulumi.getter(name="tlsClientCertKey")
    def tls_client_cert_key(self) -> Optional[_builtins.str]:
        """
        Private key in PEM format for authenticating at the repo server. This is used for mTLS. The value should be base64 encoded.
        """
        return pulumi.get(self, "tls_client_cert_key")

    @_builtins.property
    @pulumi.getter
    def type_(self) -> Optional[_builtins.str]:
        """
        Type specifies the type of the repo. Can be either "git" or "helm. "git" is assumed if empty or absent.
        """
        return pulumi.get(self, "type_")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to be used for authenticating the remote repository.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitOpsRepositoryUpdateMask(dict):
    def __init__(__self__, *,
                 paths: Optional[Sequence[_builtins.str]] = None):
        """
        :param Sequence[_builtins.str] paths: The set of field mask paths.
        """
        if paths is not None:
            pulumi.set(__self__, "paths", paths)

    @_builtins.property
    @pulumi.getter
    def paths(self) -> Optional[Sequence[_builtins.str]]:
        """
        The set of field mask paths.
        """
        return pulumi.get(self, "paths")


@pulumi.output_type
class GithubConnectorApiAuthentication(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "githubApp":
            suggest = "github_app"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GithubConnectorApiAuthentication. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GithubConnectorApiAuthentication.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GithubConnectorApiAuthentication.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 github_app: Optional['outputs.GithubConnectorApiAuthenticationGithubApp'] = None,
                 token_ref: Optional[_builtins.str] = None):
        """
        :param 'GithubConnectorApiAuthenticationGithubAppArgs' github_app: Configuration for using the github app for interacting with the github api.
        :param _builtins.str token_ref: Personal access token for interacting with the github api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        if github_app is not None:
            pulumi.set(__self__, "github_app", github_app)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter(name="githubApp")
    def github_app(self) -> Optional['outputs.GithubConnectorApiAuthenticationGithubApp']:
        """
        Configuration for using the github app for interacting with the github api.
        """
        return pulumi.get(self, "github_app")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional[_builtins.str]:
        """
        Personal access token for interacting with the github api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GithubConnectorApiAuthenticationGithubApp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "privateKeyRef":
            suggest = "private_key_ref"
        elif key == "applicationId":
            suggest = "application_id"
        elif key == "applicationIdRef":
            suggest = "application_id_ref"
        elif key == "installationId":
            suggest = "installation_id"
        elif key == "installationIdRef":
            suggest = "installation_id_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GithubConnectorApiAuthenticationGithubApp. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GithubConnectorApiAuthenticationGithubApp.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GithubConnectorApiAuthenticationGithubApp.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 private_key_ref: _builtins.str,
                 application_id: Optional[_builtins.str] = None,
                 application_id_ref: Optional[_builtins.str] = None,
                 installation_id: Optional[_builtins.str] = None,
                 installation_id_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str private_key_ref: Reference to the secret containing the private key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str application_id: Enter the GitHub App ID from the GitHub App General tab.
        :param _builtins.str application_id_ref: Reference to the secret containing application id To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str installation_id: Enter the Installation ID located in the URL of the installed GitHub App.
        :param _builtins.str installation_id_ref: Reference to the secret containing installation id. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "private_key_ref", private_key_ref)
        if application_id is not None:
            pulumi.set(__self__, "application_id", application_id)
        if application_id_ref is not None:
            pulumi.set(__self__, "application_id_ref", application_id_ref)
        if installation_id is not None:
            pulumi.set(__self__, "installation_id", installation_id)
        if installation_id_ref is not None:
            pulumi.set(__self__, "installation_id_ref", installation_id_ref)

    @_builtins.property
    @pulumi.getter(name="privateKeyRef")
    def private_key_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the private key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "private_key_ref")

    @_builtins.property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> Optional[_builtins.str]:
        """
        Enter the GitHub App ID from the GitHub App General tab.
        """
        return pulumi.get(self, "application_id")

    @_builtins.property
    @pulumi.getter(name="applicationIdRef")
    def application_id_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the secret containing application id To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "application_id_ref")

    @_builtins.property
    @pulumi.getter(name="installationId")
    def installation_id(self) -> Optional[_builtins.str]:
        """
        Enter the Installation ID located in the URL of the installed GitHub App.
        """
        return pulumi.get(self, "installation_id")

    @_builtins.property
    @pulumi.getter(name="installationIdRef")
    def installation_id_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the secret containing installation id. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "installation_id_ref")


@pulumi.output_type
class GithubConnectorCredentials(dict):
    def __init__(__self__, *,
                 http: Optional['outputs.GithubConnectorCredentialsHttp'] = None,
                 ssh: Optional['outputs.GithubConnectorCredentialsSsh'] = None):
        """
        :param 'GithubConnectorCredentialsHttpArgs' http: Authenticate using Username and password over http(s) for the connection.
        :param 'GithubConnectorCredentialsSshArgs' ssh: Authenticate using SSH for the connection.
        """
        if http is not None:
            pulumi.set(__self__, "http", http)
        if ssh is not None:
            pulumi.set(__self__, "ssh", ssh)

    @_builtins.property
    @pulumi.getter
    def http(self) -> Optional['outputs.GithubConnectorCredentialsHttp']:
        """
        Authenticate using Username and password over http(s) for the connection.
        """
        return pulumi.get(self, "http")

    @_builtins.property
    @pulumi.getter
    def ssh(self) -> Optional['outputs.GithubConnectorCredentialsSsh']:
        """
        Authenticate using SSH for the connection.
        """
        return pulumi.get(self, "ssh")


@pulumi.output_type
class GithubConnectorCredentialsHttp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "githubApp":
            suggest = "github_app"
        elif key == "tokenRef":
            suggest = "token_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GithubConnectorCredentialsHttp. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GithubConnectorCredentialsHttp.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GithubConnectorCredentialsHttp.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 anonymouses: Optional[Sequence['outputs.GithubConnectorCredentialsHttpAnonymouse']] = None,
                 github_app: Optional['outputs.GithubConnectorCredentialsHttpGithubApp'] = None,
                 token_ref: Optional[_builtins.str] = None,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param Sequence['GithubConnectorCredentialsHttpAnonymouseArgs'] anonymouses: Configuration for using the github http anonymous for interacting with the github api.
        :param 'GithubConnectorCredentialsHttpGithubAppArgs' github_app: Configuration for using the github app for interacting with the github api.
        :param _builtins.str token_ref: Reference to a secret containing the personal access to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        if anonymouses is not None:
            pulumi.set(__self__, "anonymouses", anonymouses)
        if github_app is not None:
            pulumi.set(__self__, "github_app", github_app)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter
    def anonymouses(self) -> Optional[Sequence['outputs.GithubConnectorCredentialsHttpAnonymouse']]:
        """
        Configuration for using the github http anonymous for interacting with the github api.
        """
        return pulumi.get(self, "anonymouses")

    @_builtins.property
    @pulumi.getter(name="githubApp")
    def github_app(self) -> Optional['outputs.GithubConnectorCredentialsHttpGithubApp']:
        """
        Configuration for using the github app for interacting with the github api.
        """
        return pulumi.get(self, "github_app")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the personal access to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GithubConnectorCredentialsHttpAnonymouse(dict):
    def __init__(__self__):
        pass


@pulumi.output_type
class GithubConnectorCredentialsHttpGithubApp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "privateKeyRef":
            suggest = "private_key_ref"
        elif key == "applicationId":
            suggest = "application_id"
        elif key == "applicationIdRef":
            suggest = "application_id_ref"
        elif key == "installationId":
            suggest = "installation_id"
        elif key == "installationIdRef":
            suggest = "installation_id_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GithubConnectorCredentialsHttpGithubApp. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GithubConnectorCredentialsHttpGithubApp.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GithubConnectorCredentialsHttpGithubApp.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 private_key_ref: _builtins.str,
                 application_id: Optional[_builtins.str] = None,
                 application_id_ref: Optional[_builtins.str] = None,
                 installation_id: Optional[_builtins.str] = None,
                 installation_id_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str private_key_ref: Reference to the secret containing the private key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str application_id: Enter the GitHub App ID from the GitHub App General tab.
        :param _builtins.str application_id_ref: Reference to the secret containing application id To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str installation_id: Enter the Installation ID located in the URL of the installed GitHub App.
        :param _builtins.str installation_id_ref: Reference to the secret containing installation id. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "private_key_ref", private_key_ref)
        if application_id is not None:
            pulumi.set(__self__, "application_id", application_id)
        if application_id_ref is not None:
            pulumi.set(__self__, "application_id_ref", application_id_ref)
        if installation_id is not None:
            pulumi.set(__self__, "installation_id", installation_id)
        if installation_id_ref is not None:
            pulumi.set(__self__, "installation_id_ref", installation_id_ref)

    @_builtins.property
    @pulumi.getter(name="privateKeyRef")
    def private_key_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the private key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "private_key_ref")

    @_builtins.property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> Optional[_builtins.str]:
        """
        Enter the GitHub App ID from the GitHub App General tab.
        """
        return pulumi.get(self, "application_id")

    @_builtins.property
    @pulumi.getter(name="applicationIdRef")
    def application_id_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the secret containing application id To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "application_id_ref")

    @_builtins.property
    @pulumi.getter(name="installationId")
    def installation_id(self) -> Optional[_builtins.str]:
        """
        Enter the Installation ID located in the URL of the installed GitHub App.
        """
        return pulumi.get(self, "installation_id")

    @_builtins.property
    @pulumi.getter(name="installationIdRef")
    def installation_id_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the secret containing installation id. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "installation_id_ref")


@pulumi.output_type
class GithubConnectorCredentialsSsh(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "sshKeyRef":
            suggest = "ssh_key_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GithubConnectorCredentialsSsh. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GithubConnectorCredentialsSsh.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GithubConnectorCredentialsSsh.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ssh_key_ref: _builtins.str):
        """
        :param _builtins.str ssh_key_ref: Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "ssh_key_ref", ssh_key_ref)

    @_builtins.property
    @pulumi.getter(name="sshKeyRef")
    def ssh_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ssh_key_ref")


@pulumi.output_type
class GitlabConnectorApiAuthentication(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitlabConnectorApiAuthentication. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitlabConnectorApiAuthentication.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitlabConnectorApiAuthentication.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 token_ref: _builtins.str):
        """
        :param _builtins.str token_ref: Personal access token for interacting with the gitlab api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Personal access token for interacting with the gitlab api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitlabConnectorCredentials(dict):
    def __init__(__self__, *,
                 http: Optional['outputs.GitlabConnectorCredentialsHttp'] = None,
                 ssh: Optional['outputs.GitlabConnectorCredentialsSsh'] = None):
        """
        :param 'GitlabConnectorCredentialsHttpArgs' http: Authenticate using Username and password over http(s) for the connection.
        :param 'GitlabConnectorCredentialsSshArgs' ssh: Authenticate using SSH for the connection.
        """
        if http is not None:
            pulumi.set(__self__, "http", http)
        if ssh is not None:
            pulumi.set(__self__, "ssh", ssh)

    @_builtins.property
    @pulumi.getter
    def http(self) -> Optional['outputs.GitlabConnectorCredentialsHttp']:
        """
        Authenticate using Username and password over http(s) for the connection.
        """
        return pulumi.get(self, "http")

    @_builtins.property
    @pulumi.getter
    def ssh(self) -> Optional['outputs.GitlabConnectorCredentialsSsh']:
        """
        Authenticate using SSH for the connection.
        """
        return pulumi.get(self, "ssh")


@pulumi.output_type
class GitlabConnectorCredentialsHttp(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "tokenRef":
            suggest = "token_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitlabConnectorCredentialsHttp. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitlabConnectorCredentialsHttp.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitlabConnectorCredentialsHttp.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional[_builtins.str] = None,
                 token_ref: Optional[_builtins.str] = None,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str token_ref: Reference to a secret containing the personal access to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the personal access to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GitlabConnectorCredentialsSsh(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "sshKeyRef":
            suggest = "ssh_key_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitlabConnectorCredentialsSsh. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitlabConnectorCredentialsSsh.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitlabConnectorCredentialsSsh.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ssh_key_ref: _builtins.str):
        """
        :param _builtins.str ssh_key_ref: Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "ssh_key_ref", ssh_key_ref)

    @_builtins.property
    @pulumi.getter(name="sshKeyRef")
    def ssh_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ssh_key_ref")


@pulumi.output_type
class GitopsAppProjectProject(dict):
    def __init__(__self__, *,
                 metadatas: Sequence['outputs.GitopsAppProjectProjectMetadata'],
                 specs: Sequence['outputs.GitopsAppProjectProjectSpec']):
        """
        :param Sequence['GitopsAppProjectProjectMetadataArgs'] metadatas: K8s object metadata for the Argo project.
        :param Sequence['GitopsAppProjectProjectSpecArgs'] specs: Specification details for the Argo project.
        """
        pulumi.set(__self__, "metadatas", metadatas)
        pulumi.set(__self__, "specs", specs)

    @_builtins.property
    @pulumi.getter
    def metadatas(self) -> Sequence['outputs.GitopsAppProjectProjectMetadata']:
        """
        K8s object metadata for the Argo project.
        """
        return pulumi.get(self, "metadatas")

    @_builtins.property
    @pulumi.getter
    def specs(self) -> Sequence['outputs.GitopsAppProjectProjectSpec']:
        """
        Specification details for the Argo project.
        """
        return pulumi.get(self, "specs")


@pulumi.output_type
class GitopsAppProjectProjectMetadata(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clusterName":
            suggest = "cluster_name"
        elif key == "managedFields":
            suggest = "managed_fields"
        elif key == "resourceVersion":
            suggest = "resource_version"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsAppProjectProjectMetadata. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsAppProjectProjectMetadata.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsAppProjectProjectMetadata.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 cluster_name: Optional[_builtins.str] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 managed_fields: Optional[Sequence['outputs.GitopsAppProjectProjectMetadataManagedField']] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 resource_version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations associated with the GitOps project.
        :param _builtins.str cluster_name: Name of the cluster associated with the GitOps project.
        :param Sequence[_builtins.str] finalizers: Finalizers associated with the GitOps project.
        :param Mapping[str, _builtins.str] labels: Labels associated with the GitOps project.
        :param Sequence['GitopsAppProjectProjectMetadataManagedFieldArgs'] managed_fields: Managed fields associated with the GitOps project.
        :param _builtins.str name: Name of the GitOps project.
        :param _builtins.str namespace: Namespace of the GitOps project. This must be the same as the namespace where the agent is installed
        :param _builtins.str resource_version: Resource Version for the GitOps project
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if cluster_name is not None:
            pulumi.set(__self__, "cluster_name", cluster_name)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if managed_fields is not None:
            pulumi.set(__self__, "managed_fields", managed_fields)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if resource_version is not None:
            pulumi.set(__self__, "resource_version", resource_version)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations associated with the GitOps project.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter(name="clusterName")
    def cluster_name(self) -> Optional[_builtins.str]:
        """
        Name of the cluster associated with the GitOps project.
        """
        return pulumi.get(self, "cluster_name")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        Finalizers associated with the GitOps project.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels associated with the GitOps project.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="managedFields")
    def managed_fields(self) -> Optional[Sequence['outputs.GitopsAppProjectProjectMetadataManagedField']]:
        """
        Managed fields associated with the GitOps project.
        """
        return pulumi.get(self, "managed_fields")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the GitOps project.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the GitOps project. This must be the same as the namespace where the agent is installed
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter(name="resourceVersion")
    def resource_version(self) -> Optional[_builtins.str]:
        """
        Resource Version for the GitOps project
        """
        return pulumi.get(self, "resource_version")


@pulumi.output_type
class GitopsAppProjectProjectMetadataManagedField(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "apiVersion":
            suggest = "api_version"
        elif key == "fieldsType":
            suggest = "fields_type"
        elif key == "fieldsV1":
            suggest = "fields_v1"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsAppProjectProjectMetadataManagedField. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsAppProjectProjectMetadataManagedField.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsAppProjectProjectMetadataManagedField.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api_version: Optional[_builtins.str] = None,
                 fields_type: Optional[_builtins.str] = None,
                 fields_v1: Optional[Mapping[str, _builtins.str]] = None,
                 manager: Optional[_builtins.str] = None,
                 operation: Optional[_builtins.str] = None,
                 subresource: Optional[_builtins.str] = None,
                 time: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.str api_version: API version of the operation performed.
        :param _builtins.str fields_type: Type of the fields in the GitOps project.
        :param Mapping[str, _builtins.str] fields_v1: Raw fields associated with the GitOps project.
        :param _builtins.str manager: Manager responsible for the operation.
        :param _builtins.str operation: Operation type performed on the GitOps project.
        :param _builtins.str subresource: Subresource associated with the GitOps project.
        :param Mapping[str, _builtins.str] time: Timestamp of the operation.
        """
        if api_version is not None:
            pulumi.set(__self__, "api_version", api_version)
        if fields_type is not None:
            pulumi.set(__self__, "fields_type", fields_type)
        if fields_v1 is not None:
            pulumi.set(__self__, "fields_v1", fields_v1)
        if manager is not None:
            pulumi.set(__self__, "manager", manager)
        if operation is not None:
            pulumi.set(__self__, "operation", operation)
        if subresource is not None:
            pulumi.set(__self__, "subresource", subresource)
        if time is not None:
            pulumi.set(__self__, "time", time)

    @_builtins.property
    @pulumi.getter(name="apiVersion")
    def api_version(self) -> Optional[_builtins.str]:
        """
        API version of the operation performed.
        """
        return pulumi.get(self, "api_version")

    @_builtins.property
    @pulumi.getter(name="fieldsType")
    def fields_type(self) -> Optional[_builtins.str]:
        """
        Type of the fields in the GitOps project.
        """
        return pulumi.get(self, "fields_type")

    @_builtins.property
    @pulumi.getter(name="fieldsV1")
    def fields_v1(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Raw fields associated with the GitOps project.
        """
        return pulumi.get(self, "fields_v1")

    @_builtins.property
    @pulumi.getter
    def manager(self) -> Optional[_builtins.str]:
        """
        Manager responsible for the operation.
        """
        return pulumi.get(self, "manager")

    @_builtins.property
    @pulumi.getter
    def operation(self) -> Optional[_builtins.str]:
        """
        Operation type performed on the GitOps project.
        """
        return pulumi.get(self, "operation")

    @_builtins.property
    @pulumi.getter
    def subresource(self) -> Optional[_builtins.str]:
        """
        Subresource associated with the GitOps project.
        """
        return pulumi.get(self, "subresource")

    @_builtins.property
    @pulumi.getter
    def time(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Timestamp of the operation.
        """
        return pulumi.get(self, "time")


@pulumi.output_type
class GitopsAppProjectProjectSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clusterResourceBlacklists":
            suggest = "cluster_resource_blacklists"
        elif key == "clusterResourceWhitelists":
            suggest = "cluster_resource_whitelists"
        elif key == "namespaceResourceBlacklists":
            suggest = "namespace_resource_blacklists"
        elif key == "namespaceResourceWhitelists":
            suggest = "namespace_resource_whitelists"
        elif key == "orphanedResources":
            suggest = "orphaned_resources"
        elif key == "permitOnlyProjectScopedClusters":
            suggest = "permit_only_project_scoped_clusters"
        elif key == "signatureKeys":
            suggest = "signature_keys"
        elif key == "sourceNamespaces":
            suggest = "source_namespaces"
        elif key == "sourceRepos":
            suggest = "source_repos"
        elif key == "syncWindows":
            suggest = "sync_windows"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsAppProjectProjectSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsAppProjectProjectSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsAppProjectProjectSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cluster_resource_blacklists: Optional[Sequence['outputs.GitopsAppProjectProjectSpecClusterResourceBlacklist']] = None,
                 cluster_resource_whitelists: Optional[Sequence['outputs.GitopsAppProjectProjectSpecClusterResourceWhitelist']] = None,
                 description: Optional[_builtins.str] = None,
                 destinations: Optional[Sequence['outputs.GitopsAppProjectProjectSpecDestination']] = None,
                 namespace_resource_blacklists: Optional[Sequence['outputs.GitopsAppProjectProjectSpecNamespaceResourceBlacklist']] = None,
                 namespace_resource_whitelists: Optional[Sequence['outputs.GitopsAppProjectProjectSpecNamespaceResourceWhitelist']] = None,
                 orphaned_resources: Optional[Sequence['outputs.GitopsAppProjectProjectSpecOrphanedResource']] = None,
                 permit_only_project_scoped_clusters: Optional[_builtins.bool] = None,
                 roles: Optional[Sequence['outputs.GitopsAppProjectProjectSpecRole']] = None,
                 signature_keys: Optional[Sequence['outputs.GitopsAppProjectProjectSpecSignatureKey']] = None,
                 source_namespaces: Optional[Sequence[_builtins.str]] = None,
                 source_repos: Optional[Sequence[_builtins.str]] = None,
                 sync_windows: Optional[Sequence['outputs.GitopsAppProjectProjectSpecSyncWindow']] = None):
        """
        :param Sequence['GitopsAppProjectProjectSpecClusterResourceBlacklistArgs'] cluster_resource_blacklists: Cluster resource blacklist for the GitOps project.
        :param Sequence['GitopsAppProjectProjectSpecClusterResourceWhitelistArgs'] cluster_resource_whitelists: Cluster resource whitelist for the Argo project.
        :param _builtins.str description: Description of the Argo project.
        :param Sequence['GitopsAppProjectProjectSpecDestinationArgs'] destinations: Allowed destinations for applications in this Argo project.
        :param Sequence['GitopsAppProjectProjectSpecNamespaceResourceBlacklistArgs'] namespace_resource_blacklists: Namespace resource blacklist for the Argo project.
        :param Sequence['GitopsAppProjectProjectSpecNamespaceResourceWhitelistArgs'] namespace_resource_whitelists: Namespace resource whitelist for the GitOps project.
        :param Sequence['GitopsAppProjectProjectSpecOrphanedResourceArgs'] orphaned_resources: OrphanedResources specifies if agent should monitor orphaned resources of apps in this project
        :param _builtins.bool permit_only_project_scoped_clusters: This option determines whether destinations can only reference clusters which are argo project-scoped
        :param Sequence['GitopsAppProjectProjectSpecRoleArgs'] roles: Roles associated with the Argo project.
        :param Sequence['GitopsAppProjectProjectSpecSignatureKeyArgs'] signature_keys: Signature keys for the GitOps project.
        :param Sequence[_builtins.str] source_namespaces: Source namespaces defines the namespaces application resources are allowed to be created in.
        :param Sequence[_builtins.str] source_repos: Allowed Source repositories for the Argo project.
        :param Sequence['GitopsAppProjectProjectSpecSyncWindowArgs'] sync_windows: Synchronization windows for the GitOps project.
        """
        if cluster_resource_blacklists is not None:
            pulumi.set(__self__, "cluster_resource_blacklists", cluster_resource_blacklists)
        if cluster_resource_whitelists is not None:
            pulumi.set(__self__, "cluster_resource_whitelists", cluster_resource_whitelists)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if destinations is not None:
            pulumi.set(__self__, "destinations", destinations)
        if namespace_resource_blacklists is not None:
            pulumi.set(__self__, "namespace_resource_blacklists", namespace_resource_blacklists)
        if namespace_resource_whitelists is not None:
            pulumi.set(__self__, "namespace_resource_whitelists", namespace_resource_whitelists)
        if orphaned_resources is not None:
            pulumi.set(__self__, "orphaned_resources", orphaned_resources)
        if permit_only_project_scoped_clusters is not None:
            pulumi.set(__self__, "permit_only_project_scoped_clusters", permit_only_project_scoped_clusters)
        if roles is not None:
            pulumi.set(__self__, "roles", roles)
        if signature_keys is not None:
            pulumi.set(__self__, "signature_keys", signature_keys)
        if source_namespaces is not None:
            pulumi.set(__self__, "source_namespaces", source_namespaces)
        if source_repos is not None:
            pulumi.set(__self__, "source_repos", source_repos)
        if sync_windows is not None:
            pulumi.set(__self__, "sync_windows", sync_windows)

    @_builtins.property
    @pulumi.getter(name="clusterResourceBlacklists")
    def cluster_resource_blacklists(self) -> Optional[Sequence['outputs.GitopsAppProjectProjectSpecClusterResourceBlacklist']]:
        """
        Cluster resource blacklist for the GitOps project.
        """
        return pulumi.get(self, "cluster_resource_blacklists")

    @_builtins.property
    @pulumi.getter(name="clusterResourceWhitelists")
    def cluster_resource_whitelists(self) -> Optional[Sequence['outputs.GitopsAppProjectProjectSpecClusterResourceWhitelist']]:
        """
        Cluster resource whitelist for the Argo project.
        """
        return pulumi.get(self, "cluster_resource_whitelists")

    @_builtins.property
    @pulumi.getter
    def description(self) -> Optional[_builtins.str]:
        """
        Description of the Argo project.
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter
    def destinations(self) -> Optional[Sequence['outputs.GitopsAppProjectProjectSpecDestination']]:
        """
        Allowed destinations for applications in this Argo project.
        """
        return pulumi.get(self, "destinations")

    @_builtins.property
    @pulumi.getter(name="namespaceResourceBlacklists")
    def namespace_resource_blacklists(self) -> Optional[Sequence['outputs.GitopsAppProjectProjectSpecNamespaceResourceBlacklist']]:
        """
        Namespace resource blacklist for the Argo project.
        """
        return pulumi.get(self, "namespace_resource_blacklists")

    @_builtins.property
    @pulumi.getter(name="namespaceResourceWhitelists")
    def namespace_resource_whitelists(self) -> Optional[Sequence['outputs.GitopsAppProjectProjectSpecNamespaceResourceWhitelist']]:
        """
        Namespace resource whitelist for the GitOps project.
        """
        return pulumi.get(self, "namespace_resource_whitelists")

    @_builtins.property
    @pulumi.getter(name="orphanedResources")
    def orphaned_resources(self) -> Optional[Sequence['outputs.GitopsAppProjectProjectSpecOrphanedResource']]:
        """
        OrphanedResources specifies if agent should monitor orphaned resources of apps in this project
        """
        return pulumi.get(self, "orphaned_resources")

    @_builtins.property
    @pulumi.getter(name="permitOnlyProjectScopedClusters")
    def permit_only_project_scoped_clusters(self) -> Optional[_builtins.bool]:
        """
        This option determines whether destinations can only reference clusters which are argo project-scoped
        """
        return pulumi.get(self, "permit_only_project_scoped_clusters")

    @_builtins.property
    @pulumi.getter
    def roles(self) -> Optional[Sequence['outputs.GitopsAppProjectProjectSpecRole']]:
        """
        Roles associated with the Argo project.
        """
        return pulumi.get(self, "roles")

    @_builtins.property
    @pulumi.getter(name="signatureKeys")
    def signature_keys(self) -> Optional[Sequence['outputs.GitopsAppProjectProjectSpecSignatureKey']]:
        """
        Signature keys for the GitOps project.
        """
        return pulumi.get(self, "signature_keys")

    @_builtins.property
    @pulumi.getter(name="sourceNamespaces")
    def source_namespaces(self) -> Optional[Sequence[_builtins.str]]:
        """
        Source namespaces defines the namespaces application resources are allowed to be created in.
        """
        return pulumi.get(self, "source_namespaces")

    @_builtins.property
    @pulumi.getter(name="sourceRepos")
    def source_repos(self) -> Optional[Sequence[_builtins.str]]:
        """
        Allowed Source repositories for the Argo project.
        """
        return pulumi.get(self, "source_repos")

    @_builtins.property
    @pulumi.getter(name="syncWindows")
    def sync_windows(self) -> Optional[Sequence['outputs.GitopsAppProjectProjectSpecSyncWindow']]:
        """
        Synchronization windows for the GitOps project.
        """
        return pulumi.get(self, "sync_windows")


@pulumi.output_type
class GitopsAppProjectProjectSpecClusterResourceBlacklist(dict):
    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 kind: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: Group of the cluster resource blacklist.
        :param _builtins.str kind: Kind of the cluster resource blacklist.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        Group of the cluster resource blacklist.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        Kind of the cluster resource blacklist.
        """
        return pulumi.get(self, "kind")


@pulumi.output_type
class GitopsAppProjectProjectSpecClusterResourceWhitelist(dict):
    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 kind: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: Group of the cluster resource whitelist.
        :param _builtins.str kind: Kind of the cluster resource whitelist.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        Group of the cluster resource whitelist.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        Kind of the cluster resource whitelist.
        """
        return pulumi.get(self, "kind")


@pulumi.output_type
class GitopsAppProjectProjectSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the destination cluster.
        :param _builtins.str namespace: Permitted Namespaces for deployment in the destination cluster.
        :param _builtins.str server: Server URL of the destination cluster.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the destination cluster.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Permitted Namespaces for deployment in the destination cluster.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        Server URL of the destination cluster.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsAppProjectProjectSpecNamespaceResourceBlacklist(dict):
    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 kind: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: Group of the namespace resource blacklist.
        :param _builtins.str kind: Kind of the namespace resource blacklist.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        Group of the namespace resource blacklist.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        Kind of the namespace resource blacklist.
        """
        return pulumi.get(self, "kind")


@pulumi.output_type
class GitopsAppProjectProjectSpecNamespaceResourceWhitelist(dict):
    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 kind: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: Group of the namespace resource whitelist.
        :param _builtins.str kind: Kind of the namespace resource whitelist.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        Group of the namespace resource whitelist.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        Kind of the namespace resource whitelist.
        """
        return pulumi.get(self, "kind")


@pulumi.output_type
class GitopsAppProjectProjectSpecOrphanedResource(dict):
    def __init__(__self__, *,
                 ignores: Optional[Sequence['outputs.GitopsAppProjectProjectSpecOrphanedResourceIgnore']] = None,
                 warn: Optional[_builtins.bool] = None):
        """
        :param Sequence['GitopsAppProjectProjectSpecOrphanedResourceIgnoreArgs'] ignores: List of ignored orphaned resources.
        :param _builtins.bool warn: Whether to warn about orphaned resources.
        """
        if ignores is not None:
            pulumi.set(__self__, "ignores", ignores)
        if warn is not None:
            pulumi.set(__self__, "warn", warn)

    @_builtins.property
    @pulumi.getter
    def ignores(self) -> Optional[Sequence['outputs.GitopsAppProjectProjectSpecOrphanedResourceIgnore']]:
        """
        List of ignored orphaned resources.
        """
        return pulumi.get(self, "ignores")

    @_builtins.property
    @pulumi.getter
    def warn(self) -> Optional[_builtins.bool]:
        """
        Whether to warn about orphaned resources.
        """
        return pulumi.get(self, "warn")


@pulumi.output_type
class GitopsAppProjectProjectSpecOrphanedResourceIgnore(dict):
    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: Group of the ignored orphaned resource.
        :param _builtins.str kind: Kind of the ignored orphaned resource.
        :param _builtins.str name: Name of the ignored orphaned resource.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        Group of the ignored orphaned resource.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        Kind of the ignored orphaned resource.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the ignored orphaned resource.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsAppProjectProjectSpecRole(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jwtTokens":
            suggest = "jwt_tokens"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsAppProjectProjectSpecRole. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsAppProjectProjectSpecRole.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsAppProjectProjectSpecRole.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 description: _builtins.str,
                 name: _builtins.str,
                 groups: Optional[Sequence[_builtins.str]] = None,
                 jwt_tokens: Optional[Sequence['outputs.GitopsAppProjectProjectSpecRoleJwtToken']] = None,
                 policies: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str description: Description of the role.
        :param _builtins.str name: Name of the role.
        :param Sequence[_builtins.str] groups: Groups associated with the role.
        :param Sequence['GitopsAppProjectProjectSpecRoleJwtTokenArgs'] jwt_tokens: JWT tokens associated with the role.
        :param Sequence[_builtins.str] policies: Policies associated with the role. These are argo RBAC policies and may not necessarily reflect in harness.
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "name", name)
        if groups is not None:
            pulumi.set(__self__, "groups", groups)
        if jwt_tokens is not None:
            pulumi.set(__self__, "jwt_tokens", jwt_tokens)
        if policies is not None:
            pulumi.set(__self__, "policies", policies)

    @_builtins.property
    @pulumi.getter
    def description(self) -> _builtins.str:
        """
        Description of the role.
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the role.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def groups(self) -> Optional[Sequence[_builtins.str]]:
        """
        Groups associated with the role.
        """
        return pulumi.get(self, "groups")

    @_builtins.property
    @pulumi.getter(name="jwtTokens")
    def jwt_tokens(self) -> Optional[Sequence['outputs.GitopsAppProjectProjectSpecRoleJwtToken']]:
        """
        JWT tokens associated with the role.
        """
        return pulumi.get(self, "jwt_tokens")

    @_builtins.property
    @pulumi.getter
    def policies(self) -> Optional[Sequence[_builtins.str]]:
        """
        Policies associated with the role. These are argo RBAC policies and may not necessarily reflect in harness.
        """
        return pulumi.get(self, "policies")


@pulumi.output_type
class GitopsAppProjectProjectSpecRoleJwtToken(dict):
    def __init__(__self__, *,
                 exp: Optional[_builtins.str] = None,
                 iat: Optional[_builtins.str] = None,
                 id: Optional[_builtins.str] = None):
        """
        :param _builtins.str exp: Expiration time of the JWT token.
        :param _builtins.str iat: Issued At time of the JWT token.
        :param _builtins.str id: ID of the JWT token.
        """
        if exp is not None:
            pulumi.set(__self__, "exp", exp)
        if iat is not None:
            pulumi.set(__self__, "iat", iat)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @_builtins.property
    @pulumi.getter
    def exp(self) -> Optional[_builtins.str]:
        """
        Expiration time of the JWT token.
        """
        return pulumi.get(self, "exp")

    @_builtins.property
    @pulumi.getter
    def iat(self) -> Optional[_builtins.str]:
        """
        Issued At time of the JWT token.
        """
        return pulumi.get(self, "iat")

    @_builtins.property
    @pulumi.getter
    def id(self) -> Optional[_builtins.str]:
        """
        ID of the JWT token.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class GitopsAppProjectProjectSpecSignatureKey(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "keyId":
            suggest = "key_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsAppProjectProjectSpecSignatureKey. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsAppProjectProjectSpecSignatureKey.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsAppProjectProjectSpecSignatureKey.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key_id: Optional[_builtins.str] = None):
        """
        :param _builtins.str key_id: ID of the signature key.
        """
        if key_id is not None:
            pulumi.set(__self__, "key_id", key_id)

    @_builtins.property
    @pulumi.getter(name="keyId")
    def key_id(self) -> Optional[_builtins.str]:
        """
        ID of the signature key.
        """
        return pulumi.get(self, "key_id")


@pulumi.output_type
class GitopsAppProjectProjectSpecSyncWindow(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "manualSync":
            suggest = "manual_sync"
        elif key == "timeZone":
            suggest = "time_zone"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsAppProjectProjectSpecSyncWindow. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsAppProjectProjectSpecSyncWindow.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsAppProjectProjectSpecSyncWindow.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 applications: Optional[Sequence[_builtins.str]] = None,
                 clusters: Optional[Sequence[_builtins.str]] = None,
                 duration: Optional[_builtins.str] = None,
                 kind: Optional[_builtins.str] = None,
                 manual_sync: Optional[_builtins.bool] = None,
                 namespaces: Optional[Sequence[_builtins.str]] = None,
                 schedule: Optional[_builtins.str] = None,
                 time_zone: Optional[_builtins.str] = None):
        """
        :param Sequence[_builtins.str] applications: Applications associated with synchronization window.
        :param Sequence[_builtins.str] clusters: Clusters associated with synchronization window.
        :param _builtins.str duration: Duration of synchronization window.
        :param _builtins.str kind: Kind of synchronization window.
        :param _builtins.bool manual_sync: Whether manual synchronization is enabled.
        :param Sequence[_builtins.str] namespaces: Namespaces associated with synchronization window.
        :param _builtins.str schedule: Schedule of synchronization window.
        :param _builtins.str time_zone: Time zone of synchronization window.
        """
        if applications is not None:
            pulumi.set(__self__, "applications", applications)
        if clusters is not None:
            pulumi.set(__self__, "clusters", clusters)
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if manual_sync is not None:
            pulumi.set(__self__, "manual_sync", manual_sync)
        if namespaces is not None:
            pulumi.set(__self__, "namespaces", namespaces)
        if schedule is not None:
            pulumi.set(__self__, "schedule", schedule)
        if time_zone is not None:
            pulumi.set(__self__, "time_zone", time_zone)

    @_builtins.property
    @pulumi.getter
    def applications(self) -> Optional[Sequence[_builtins.str]]:
        """
        Applications associated with synchronization window.
        """
        return pulumi.get(self, "applications")

    @_builtins.property
    @pulumi.getter
    def clusters(self) -> Optional[Sequence[_builtins.str]]:
        """
        Clusters associated with synchronization window.
        """
        return pulumi.get(self, "clusters")

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration of synchronization window.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        Kind of synchronization window.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter(name="manualSync")
    def manual_sync(self) -> Optional[_builtins.bool]:
        """
        Whether manual synchronization is enabled.
        """
        return pulumi.get(self, "manual_sync")

    @_builtins.property
    @pulumi.getter
    def namespaces(self) -> Optional[Sequence[_builtins.str]]:
        """
        Namespaces associated with synchronization window.
        """
        return pulumi.get(self, "namespaces")

    @_builtins.property
    @pulumi.getter
    def schedule(self) -> Optional[_builtins.str]:
        """
        Schedule of synchronization window.
        """
        return pulumi.get(self, "schedule")

    @_builtins.property
    @pulumi.getter(name="timeZone")
    def time_zone(self) -> Optional[_builtins.str]:
        """
        Time zone of synchronization window.
        """
        return pulumi.get(self, "time_zone")


@pulumi.output_type
class GitopsApplicationsetApplicationset(dict):
    def __init__(__self__, *,
                 metadata: 'outputs.GitopsApplicationsetApplicationsetMetadata',
                 spec: 'outputs.GitopsApplicationsetApplicationsetSpec'):
        """
        :param 'GitopsApplicationsetApplicationsetMetadataArgs' metadata: Standard Kubernetes object metadata.
        :param 'GitopsApplicationsetApplicationsetSpecArgs' spec: Spec of the GitOps applicationset. Includes the generators and template.
        """
        pulumi.set(__self__, "metadata", metadata)
        pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> 'outputs.GitopsApplicationsetApplicationsetMetadata':
        """
        Standard Kubernetes object metadata.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> 'outputs.GitopsApplicationsetApplicationsetSpec':
        """
        Spec of the GitOps applicationset. Includes the generators and template.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 generation: Optional[_builtins.str] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 uid: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations are unstructured key value pairs corresponding to a resource. External tools set these to store and retrieve arbitrary metadata.
        :param _builtins.str generation: A sequence number representing a specific generation of the desired state. This is a read-only value populated by the system.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services.
        :param _builtins.str name: Name must be unique within a namespace. It is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Name cannot be updated.
        :param _builtins.str namespace: Namespace of the GitOps application. An empty namespace is equivalent to the namespace of the GitOps agent.
        :param _builtins.str uid: UID is the unique identifier in time and space value for this object. It is generated by the server on successful creation of a resource and is not allowed to change on PUT operations.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if generation is not None:
            pulumi.set(__self__, "generation", generation)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if uid is not None:
            pulumi.set(__self__, "uid", uid)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations are unstructured key value pairs corresponding to a resource. External tools set these to store and retrieve arbitrary metadata.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def generation(self) -> Optional[_builtins.str]:
        """
        A sequence number representing a specific generation of the desired state. This is a read-only value populated by the system.
        """
        return pulumi.get(self, "generation")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name must be unique within a namespace. It is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Name cannot be updated.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the GitOps application. An empty namespace is equivalent to the namespace of the GitOps agent.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def uid(self) -> Optional[_builtins.str]:
        """
        UID is the unique identifier in time and space value for this object. It is generated by the server on successful creation of a resource and is not allowed to change on PUT operations.
        """
        return pulumi.get(self, "uid")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "goTemplate":
            suggest = "go_template"
        elif key == "goTemplateOptions":
            suggest = "go_template_options"
        elif key == "ignoreApplicationDifferences":
            suggest = "ignore_application_differences"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 generators: Sequence['outputs.GitopsApplicationsetApplicationsetSpecGenerator'],
                 template: 'outputs.GitopsApplicationsetApplicationsetSpecTemplate',
                 go_template: Optional[_builtins.bool] = None,
                 go_template_options: Optional[Sequence[_builtins.str]] = None,
                 ignore_application_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecIgnoreApplicationDifference']] = None,
                 strategy: Optional['outputs.GitopsApplicationsetApplicationsetSpecStrategy'] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecSyncPolicy'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorArgs'] generators: Application set generators are responsible for generation of params, which are then rendered into the template: fields of the ApplicationSet resource.
        :param 'GitopsApplicationsetApplicationsetSpecTemplateArgs' template: Application Set template. The template fields of the ApplicationSet spec are used to generate Gitops Applications.
        :param _builtins.bool go_template: Enable Go templating for the template field.
        :param Sequence[_builtins.str] go_template_options: Optional list of go templating options, see https://pkg.go.dev/text/template#Template.Optional. This is only relevant if `goTemplate` is true
        :param Sequence['GitopsApplicationsetApplicationsetSpecIgnoreApplicationDifferenceArgs'] ignore_application_differences: Application Set ignoreApplicationDifferences
        :param 'GitopsApplicationsetApplicationsetSpecStrategyArgs' strategy: [Progressive Sync](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Progressive-Syncs/) strategy
        :param 'GitopsApplicationsetApplicationsetSpecSyncPolicyArgs' sync_policy: Application Set sync policy
        """
        pulumi.set(__self__, "generators", generators)
        pulumi.set(__self__, "template", template)
        if go_template is not None:
            pulumi.set(__self__, "go_template", go_template)
        if go_template_options is not None:
            pulumi.set(__self__, "go_template_options", go_template_options)
        if ignore_application_differences is not None:
            pulumi.set(__self__, "ignore_application_differences", ignore_application_differences)
        if strategy is not None:
            pulumi.set(__self__, "strategy", strategy)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def generators(self) -> Sequence['outputs.GitopsApplicationsetApplicationsetSpecGenerator']:
        """
        Application set generators are responsible for generation of params, which are then rendered into the template: fields of the ApplicationSet resource.
        """
        return pulumi.get(self, "generators")

    @_builtins.property
    @pulumi.getter
    def template(self) -> 'outputs.GitopsApplicationsetApplicationsetSpecTemplate':
        """
        Application Set template. The template fields of the ApplicationSet spec are used to generate Gitops Applications.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter(name="goTemplate")
    def go_template(self) -> Optional[_builtins.bool]:
        """
        Enable Go templating for the template field.
        """
        return pulumi.get(self, "go_template")

    @_builtins.property
    @pulumi.getter(name="goTemplateOptions")
    def go_template_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        Optional list of go templating options, see https://pkg.go.dev/text/template#Template.Optional. This is only relevant if `goTemplate` is true
        """
        return pulumi.get(self, "go_template_options")

    @_builtins.property
    @pulumi.getter(name="ignoreApplicationDifferences")
    def ignore_application_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecIgnoreApplicationDifference']]:
        """
        Application Set ignoreApplicationDifferences
        """
        return pulumi.get(self, "ignore_application_differences")

    @_builtins.property
    @pulumi.getter
    def strategy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecStrategy']:
        """
        [Progressive Sync](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Progressive-Syncs/) strategy
        """
        return pulumi.get(self, "strategy")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecSyncPolicy']:
        """
        Application Set sync policy
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGenerator(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clusterDecisionResources":
            suggest = "cluster_decision_resources"
        elif key == "pullRequests":
            suggest = "pull_requests"
        elif key == "scmProviders":
            suggest = "scm_providers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGenerator. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGenerator.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGenerator.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cluster_decision_resources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResource']] = None,
                 clusters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorCluster']] = None,
                 gits: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGit']] = None,
                 lists: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorList']] = None,
                 matrices: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrix']] = None,
                 merges: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMerge']] = None,
                 pull_requests: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequest']] = None,
                 scm_providers: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProvider']] = None,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorSelector'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceArgs'] cluster_decision_resources: The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterArgs'] clusters: The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorGitArgs'] gits: [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorListArgs'] lists: [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixArgs'] matrices: [Matrix generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/) combine the parameters generated by two child generators, iterating through every combination of each generator's generated parameters. Take note of the [restrictions](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/#restrictions) regarding their usage - particularly regarding nesting matrix generators.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeArgs'] merges: [Merge generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Merge/) combine parameters produced by the base (first) generator with matching parameter sets produced by subsequent generators. Take note of the [restrictions](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Merge/#restrictions) regarding their usage - particularly regarding nesting merge generators.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorPullRequestArgs'] pull_requests: [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorScmProviderArgs'] scm_providers: [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorSelectorArgs' selector: The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        if cluster_decision_resources is not None:
            pulumi.set(__self__, "cluster_decision_resources", cluster_decision_resources)
        if clusters is not None:
            pulumi.set(__self__, "clusters", clusters)
        if gits is not None:
            pulumi.set(__self__, "gits", gits)
        if lists is not None:
            pulumi.set(__self__, "lists", lists)
        if matrices is not None:
            pulumi.set(__self__, "matrices", matrices)
        if merges is not None:
            pulumi.set(__self__, "merges", merges)
        if pull_requests is not None:
            pulumi.set(__self__, "pull_requests", pull_requests)
        if scm_providers is not None:
            pulumi.set(__self__, "scm_providers", scm_providers)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)

    @_builtins.property
    @pulumi.getter(name="clusterDecisionResources")
    def cluster_decision_resources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResource']]:
        """
        The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        """
        return pulumi.get(self, "cluster_decision_resources")

    @_builtins.property
    @pulumi.getter
    def clusters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorCluster']]:
        """
        The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        """
        return pulumi.get(self, "clusters")

    @_builtins.property
    @pulumi.getter
    def gits(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGit']]:
        """
        [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        """
        return pulumi.get(self, "gits")

    @_builtins.property
    @pulumi.getter
    def lists(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorList']]:
        """
        [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        """
        return pulumi.get(self, "lists")

    @_builtins.property
    @pulumi.getter
    def matrices(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrix']]:
        """
        [Matrix generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/) combine the parameters generated by two child generators, iterating through every combination of each generator's generated parameters. Take note of the [restrictions](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/#restrictions) regarding their usage - particularly regarding nesting matrix generators.
        """
        return pulumi.get(self, "matrices")

    @_builtins.property
    @pulumi.getter
    def merges(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMerge']]:
        """
        [Merge generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Merge/) combine parameters produced by the base (first) generator with matching parameter sets produced by subsequent generators. Take note of the [restrictions](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Merge/#restrictions) regarding their usage - particularly regarding nesting merge generators.
        """
        return pulumi.get(self, "merges")

    @_builtins.property
    @pulumi.getter(name="pullRequests")
    def pull_requests(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequest']]:
        """
        [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        """
        return pulumi.get(self, "pull_requests")

    @_builtins.property
    @pulumi.getter(name="scmProviders")
    def scm_providers(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProvider']]:
        """
        [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        """
        return pulumi.get(self, "scm_providers")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorSelector']:
        """
        The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        return pulumi.get(self, "selector")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorCluster(dict):
    def __init__(__self__, *,
                 enabled: _builtins.bool,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterSelector'] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.bool enabled: Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterSelectorArgs' selector: Label selector used to narrow the scope of targeted clusters.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        pulumi.set(__self__, "enabled", enabled)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> _builtins.bool:
        """
        Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        """
        return pulumi.get(self, "enabled")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterSelector']:
        """
        Label selector used to narrow the scope of targeted clusters.
        """
        return pulumi.get(self, "selector")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapRef":
            suggest = "config_map_ref"
        elif key == "labelSelector":
            suggest = "label_selector"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_ref: _builtins.str,
                 label_selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelector'] = None,
                 name: Optional[_builtins.str] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.str config_map_ref: ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelectorArgs' label_selector: Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        :param _builtins.str name: Resource name of the kind, group and version, defined in the `config_map_ref`.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        pulumi.set(__self__, "config_map_ref", config_map_ref)
        if label_selector is not None:
            pulumi.set(__self__, "label_selector", label_selector)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter(name="configMapRef")
    def config_map_ref(self) -> _builtins.str:
        """
        ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        """
        return pulumi.get(self, "config_map_ref")

    @_builtins.property
    @pulumi.getter(name="labelSelector")
    def label_selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelector']:
        """
        Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        """
        return pulumi.get(self, "label_selector")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Resource name of the kind, group and version, defined in the `config_map_ref`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceLabelSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGit(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "pathParamPrefix":
            suggest = "path_param_prefix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorGit. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGit.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGit.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 repo_url: _builtins.str,
                 directories: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitDirectory']] = None,
                 files: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitFile']] = None,
                 path_param_prefix: Optional[_builtins.str] = None,
                 revision: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplate'] = None):
        """
        :param _builtins.str repo_url: URL to the repository to use.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorGitDirectoryArgs'] directories: List of directories in the source repository to use when template the Application..
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorGitFileArgs'] files: List of files in the source repository to use when template the Application.
        :param _builtins.str path_param_prefix: Prefix for all path-related parameter names.
        :param _builtins.str revision: Revision of the source repository to use.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "repo_url", repo_url)
        if directories is not None:
            pulumi.set(__self__, "directories", directories)
        if files is not None:
            pulumi.set(__self__, "files", files)
        if path_param_prefix is not None:
            pulumi.set(__self__, "path_param_prefix", path_param_prefix)
        if revision is not None:
            pulumi.set(__self__, "revision", revision)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> _builtins.str:
        """
        URL to the repository to use.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter
    def directories(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitDirectory']]:
        """
        List of directories in the source repository to use when template the Application..
        """
        return pulumi.get(self, "directories")

    @_builtins.property
    @pulumi.getter
    def files(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitFile']]:
        """
        List of files in the source repository to use when template the Application.
        """
        return pulumi.get(self, "files")

    @_builtins.property
    @pulumi.getter(name="pathParamPrefix")
    def path_param_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix for all path-related parameter names.
        """
        return pulumi.get(self, "path_param_prefix")

    @_builtins.property
    @pulumi.getter
    def revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source repository to use.
        """
        return pulumi.get(self, "revision")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitDirectory(dict):
    def __init__(__self__, *,
                 path: _builtins.str,
                 exclude: Optional[_builtins.bool] = None):
        """
        :param _builtins.str path: Path in the repository.
        :param _builtins.bool exclude: Flag indicating whether or not the directory should be excluded when templating.
        """
        pulumi.set(__self__, "path", path)
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path in the repository.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.bool]:
        """
        Flag indicating whether or not the directory should be excluded when templating.
        """
        return pulumi.get(self, "exclude")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitFile(dict):
    def __init__(__self__, *,
                 path: _builtins.str):
        """
        :param _builtins.str path: Path to the file in the repository.
        """
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file in the repository.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorList(dict):
    def __init__(__self__, *,
                 elements: Sequence[Mapping[str, _builtins.str]],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplate'] = None):
        """
        :param Sequence[Mapping[str, _builtins.str]] elements: List of key/value pairs to pass as parameters into the template.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "elements", elements)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def elements(self) -> Sequence[Mapping[str, _builtins.str]]:
        """
        List of key/value pairs to pass as parameters into the template.
        """
        return pulumi.get(self, "elements")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrix(dict):
    def __init__(__self__, *,
                 generators: Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGenerator'],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplate'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorArgs'] generators: Child generator. Generators are responsible for generating parameters, which are then combined by the parent matrix generator into the template fields of the ApplicationSet resource.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "generators", generators)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def generators(self) -> Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGenerator']:
        """
        Child generator. Generators are responsible for generating parameters, which are then combined by the parent matrix generator into the template fields of the ApplicationSet resource.
        """
        return pulumi.get(self, "generators")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGenerator(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clusterDecisionResources":
            suggest = "cluster_decision_resources"
        elif key == "pullRequests":
            suggest = "pull_requests"
        elif key == "scmProviders":
            suggest = "scm_providers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGenerator. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGenerator.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGenerator.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cluster_decision_resources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResource']] = None,
                 clusters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorCluster']] = None,
                 gits: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGit']] = None,
                 lists: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorList']] = None,
                 matrices: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrix']] = None,
                 merges: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMerge']] = None,
                 pull_requests: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequest']] = None,
                 scm_providers: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProvider']] = None,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelector'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceArgs'] cluster_decision_resources: The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterArgs'] clusters: The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitArgs'] gits: [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListArgs'] lists: [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixArgs'] matrices: [Matrix generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/) combine the parameters generated by two child generators, iterating through every combination of each generator's generated parameters. Take note of the [restrictions](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/#restrictions) regarding their usage - particularly regarding nesting matrix generators.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeArgs'] merges: [Merge generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Merge/) combine parameters produced by the base (first) generator with matching parameter sets produced by subsequent generators. Take note of the [restrictions](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Merge/#restrictions) regarding their usage - particularly regarding nesting merge generators.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestArgs'] pull_requests: [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderArgs'] scm_providers: [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelectorArgs' selector: The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        if cluster_decision_resources is not None:
            pulumi.set(__self__, "cluster_decision_resources", cluster_decision_resources)
        if clusters is not None:
            pulumi.set(__self__, "clusters", clusters)
        if gits is not None:
            pulumi.set(__self__, "gits", gits)
        if lists is not None:
            pulumi.set(__self__, "lists", lists)
        if matrices is not None:
            pulumi.set(__self__, "matrices", matrices)
        if merges is not None:
            pulumi.set(__self__, "merges", merges)
        if pull_requests is not None:
            pulumi.set(__self__, "pull_requests", pull_requests)
        if scm_providers is not None:
            pulumi.set(__self__, "scm_providers", scm_providers)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)

    @_builtins.property
    @pulumi.getter(name="clusterDecisionResources")
    def cluster_decision_resources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResource']]:
        """
        The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        """
        return pulumi.get(self, "cluster_decision_resources")

    @_builtins.property
    @pulumi.getter
    def clusters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorCluster']]:
        """
        The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        """
        return pulumi.get(self, "clusters")

    @_builtins.property
    @pulumi.getter
    def gits(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGit']]:
        """
        [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        """
        return pulumi.get(self, "gits")

    @_builtins.property
    @pulumi.getter
    def lists(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorList']]:
        """
        [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        """
        return pulumi.get(self, "lists")

    @_builtins.property
    @pulumi.getter
    def matrices(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrix']]:
        """
        [Matrix generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/) combine the parameters generated by two child generators, iterating through every combination of each generator's generated parameters. Take note of the [restrictions](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/#restrictions) regarding their usage - particularly regarding nesting matrix generators.
        """
        return pulumi.get(self, "matrices")

    @_builtins.property
    @pulumi.getter
    def merges(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMerge']]:
        """
        [Merge generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Merge/) combine parameters produced by the base (first) generator with matching parameter sets produced by subsequent generators. Take note of the [restrictions](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Merge/#restrictions) regarding their usage - particularly regarding nesting merge generators.
        """
        return pulumi.get(self, "merges")

    @_builtins.property
    @pulumi.getter(name="pullRequests")
    def pull_requests(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequest']]:
        """
        [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        """
        return pulumi.get(self, "pull_requests")

    @_builtins.property
    @pulumi.getter(name="scmProviders")
    def scm_providers(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProvider']]:
        """
        [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        """
        return pulumi.get(self, "scm_providers")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelector']:
        """
        The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        return pulumi.get(self, "selector")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorCluster(dict):
    def __init__(__self__, *,
                 enabled: _builtins.bool,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelector'] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.bool enabled: Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelectorArgs' selector: Label selector used to narrow the scope of targeted clusters.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        pulumi.set(__self__, "enabled", enabled)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> _builtins.bool:
        """
        Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        """
        return pulumi.get(self, "enabled")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelector']:
        """
        Label selector used to narrow the scope of targeted clusters.
        """
        return pulumi.get(self, "selector")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapRef":
            suggest = "config_map_ref"
        elif key == "labelSelector":
            suggest = "label_selector"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_ref: _builtins.str,
                 label_selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector'] = None,
                 name: Optional[_builtins.str] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.str config_map_ref: ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorArgs' label_selector: Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        :param _builtins.str name: Resource name of the kind, group and version, defined in the `config_map_ref`.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        pulumi.set(__self__, "config_map_ref", config_map_ref)
        if label_selector is not None:
            pulumi.set(__self__, "label_selector", label_selector)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter(name="configMapRef")
    def config_map_ref(self) -> _builtins.str:
        """
        ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        """
        return pulumi.get(self, "config_map_ref")

    @_builtins.property
    @pulumi.getter(name="labelSelector")
    def label_selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector']:
        """
        Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        """
        return pulumi.get(self, "label_selector")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Resource name of the kind, group and version, defined in the `config_map_ref`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGit(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "pathParamPrefix":
            suggest = "path_param_prefix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGit. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGit.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGit.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 repo_url: _builtins.str,
                 directories: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitDirectory']] = None,
                 files: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitFile']] = None,
                 path_param_prefix: Optional[_builtins.str] = None,
                 revision: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplate'] = None):
        """
        :param _builtins.str repo_url: URL to the repository to use.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitDirectoryArgs'] directories: List of directories in the source repository to use when template the Application..
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitFileArgs'] files: List of files in the source repository to use when template the Application.
        :param _builtins.str path_param_prefix: Prefix for all path-related parameter names.
        :param _builtins.str revision: Revision of the source repository to use.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "repo_url", repo_url)
        if directories is not None:
            pulumi.set(__self__, "directories", directories)
        if files is not None:
            pulumi.set(__self__, "files", files)
        if path_param_prefix is not None:
            pulumi.set(__self__, "path_param_prefix", path_param_prefix)
        if revision is not None:
            pulumi.set(__self__, "revision", revision)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> _builtins.str:
        """
        URL to the repository to use.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter
    def directories(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitDirectory']]:
        """
        List of directories in the source repository to use when template the Application..
        """
        return pulumi.get(self, "directories")

    @_builtins.property
    @pulumi.getter
    def files(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitFile']]:
        """
        List of files in the source repository to use when template the Application.
        """
        return pulumi.get(self, "files")

    @_builtins.property
    @pulumi.getter(name="pathParamPrefix")
    def path_param_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix for all path-related parameter names.
        """
        return pulumi.get(self, "path_param_prefix")

    @_builtins.property
    @pulumi.getter
    def revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source repository to use.
        """
        return pulumi.get(self, "revision")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitDirectory(dict):
    def __init__(__self__, *,
                 path: _builtins.str,
                 exclude: Optional[_builtins.bool] = None):
        """
        :param _builtins.str path: Path in the repository.
        :param _builtins.bool exclude: Flag indicating whether or not the directory should be excluded when templating.
        """
        pulumi.set(__self__, "path", path)
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path in the repository.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.bool]:
        """
        Flag indicating whether or not the directory should be excluded when templating.
        """
        return pulumi.get(self, "exclude")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitFile(dict):
    def __init__(__self__, *,
                 path: _builtins.str):
        """
        :param _builtins.str path: Path to the file in the repository.
        """
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file in the repository.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorList(dict):
    def __init__(__self__, *,
                 elements: Sequence[Mapping[str, _builtins.str]],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplate'] = None):
        """
        :param Sequence[Mapping[str, _builtins.str]] elements: List of key/value pairs to pass as parameters into the template.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "elements", elements)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def elements(self) -> Sequence[Mapping[str, _builtins.str]]:
        """
        List of key/value pairs to pass as parameters into the template.
        """
        return pulumi.get(self, "elements")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrix(dict):
    def __init__(__self__, *,
                 generators: Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGenerator'],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplate'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorArgs'] generators: Child generator. Generators are responsible for generating parameters, which are then combined by the parent matrix generator into the template fields of the ApplicationSet resource.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "generators", generators)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def generators(self) -> Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGenerator']:
        """
        Child generator. Generators are responsible for generating parameters, which are then combined by the parent matrix generator into the template fields of the ApplicationSet resource.
        """
        return pulumi.get(self, "generators")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGenerator(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clusterDecisionResources":
            suggest = "cluster_decision_resources"
        elif key == "pullRequests":
            suggest = "pull_requests"
        elif key == "scmProviders":
            suggest = "scm_providers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGenerator. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGenerator.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGenerator.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cluster_decision_resources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResource']] = None,
                 clusters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorCluster']] = None,
                 gits: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGit']] = None,
                 lists: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorList']] = None,
                 pull_requests: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequest']] = None,
                 scm_providers: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProvider']] = None,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelector'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceArgs'] cluster_decision_resources: The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterArgs'] clusters: The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitArgs'] gits: [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListArgs'] lists: [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestArgs'] pull_requests: [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderArgs'] scm_providers: [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelectorArgs' selector: The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        if cluster_decision_resources is not None:
            pulumi.set(__self__, "cluster_decision_resources", cluster_decision_resources)
        if clusters is not None:
            pulumi.set(__self__, "clusters", clusters)
        if gits is not None:
            pulumi.set(__self__, "gits", gits)
        if lists is not None:
            pulumi.set(__self__, "lists", lists)
        if pull_requests is not None:
            pulumi.set(__self__, "pull_requests", pull_requests)
        if scm_providers is not None:
            pulumi.set(__self__, "scm_providers", scm_providers)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)

    @_builtins.property
    @pulumi.getter(name="clusterDecisionResources")
    def cluster_decision_resources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResource']]:
        """
        The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        """
        return pulumi.get(self, "cluster_decision_resources")

    @_builtins.property
    @pulumi.getter
    def clusters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorCluster']]:
        """
        The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        """
        return pulumi.get(self, "clusters")

    @_builtins.property
    @pulumi.getter
    def gits(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGit']]:
        """
        [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        """
        return pulumi.get(self, "gits")

    @_builtins.property
    @pulumi.getter
    def lists(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorList']]:
        """
        [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        """
        return pulumi.get(self, "lists")

    @_builtins.property
    @pulumi.getter(name="pullRequests")
    def pull_requests(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequest']]:
        """
        [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        """
        return pulumi.get(self, "pull_requests")

    @_builtins.property
    @pulumi.getter(name="scmProviders")
    def scm_providers(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProvider']]:
        """
        [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        """
        return pulumi.get(self, "scm_providers")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelector']:
        """
        The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        return pulumi.get(self, "selector")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorCluster(dict):
    def __init__(__self__, *,
                 enabled: _builtins.bool,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelector'] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.bool enabled: Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelectorArgs' selector: Label selector used to narrow the scope of targeted clusters.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        pulumi.set(__self__, "enabled", enabled)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> _builtins.bool:
        """
        Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        """
        return pulumi.get(self, "enabled")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelector']:
        """
        Label selector used to narrow the scope of targeted clusters.
        """
        return pulumi.get(self, "selector")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapRef":
            suggest = "config_map_ref"
        elif key == "labelSelector":
            suggest = "label_selector"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_ref: _builtins.str,
                 label_selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector'] = None,
                 name: Optional[_builtins.str] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.str config_map_ref: ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorArgs' label_selector: Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        :param _builtins.str name: Resource name of the kind, group and version, defined in the `config_map_ref`.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        pulumi.set(__self__, "config_map_ref", config_map_ref)
        if label_selector is not None:
            pulumi.set(__self__, "label_selector", label_selector)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter(name="configMapRef")
    def config_map_ref(self) -> _builtins.str:
        """
        ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        """
        return pulumi.get(self, "config_map_ref")

    @_builtins.property
    @pulumi.getter(name="labelSelector")
    def label_selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector']:
        """
        Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        """
        return pulumi.get(self, "label_selector")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Resource name of the kind, group and version, defined in the `config_map_ref`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGit(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "pathParamPrefix":
            suggest = "path_param_prefix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGit. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGit.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGit.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 repo_url: _builtins.str,
                 directories: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitDirectory']] = None,
                 files: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitFile']] = None,
                 path_param_prefix: Optional[_builtins.str] = None,
                 revision: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplate'] = None):
        """
        :param _builtins.str repo_url: URL to the repository to use.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitDirectoryArgs'] directories: List of directories in the source repository to use when template the Application..
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitFileArgs'] files: List of files in the source repository to use when template the Application.
        :param _builtins.str path_param_prefix: Prefix for all path-related parameter names.
        :param _builtins.str revision: Revision of the source repository to use.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "repo_url", repo_url)
        if directories is not None:
            pulumi.set(__self__, "directories", directories)
        if files is not None:
            pulumi.set(__self__, "files", files)
        if path_param_prefix is not None:
            pulumi.set(__self__, "path_param_prefix", path_param_prefix)
        if revision is not None:
            pulumi.set(__self__, "revision", revision)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> _builtins.str:
        """
        URL to the repository to use.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter
    def directories(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitDirectory']]:
        """
        List of directories in the source repository to use when template the Application..
        """
        return pulumi.get(self, "directories")

    @_builtins.property
    @pulumi.getter
    def files(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitFile']]:
        """
        List of files in the source repository to use when template the Application.
        """
        return pulumi.get(self, "files")

    @_builtins.property
    @pulumi.getter(name="pathParamPrefix")
    def path_param_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix for all path-related parameter names.
        """
        return pulumi.get(self, "path_param_prefix")

    @_builtins.property
    @pulumi.getter
    def revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source repository to use.
        """
        return pulumi.get(self, "revision")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitDirectory(dict):
    def __init__(__self__, *,
                 path: _builtins.str,
                 exclude: Optional[_builtins.bool] = None):
        """
        :param _builtins.str path: Path in the repository.
        :param _builtins.bool exclude: Flag indicating whether or not the directory should be excluded when templating.
        """
        pulumi.set(__self__, "path", path)
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path in the repository.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.bool]:
        """
        Flag indicating whether or not the directory should be excluded when templating.
        """
        return pulumi.get(self, "exclude")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitFile(dict):
    def __init__(__self__, *,
                 path: _builtins.str):
        """
        :param _builtins.str path: Path to the file in the repository.
        """
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file in the repository.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorList(dict):
    def __init__(__self__, *,
                 elements: Sequence[Mapping[str, _builtins.str]],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplate'] = None):
        """
        :param Sequence[Mapping[str, _builtins.str]] elements: List of key/value pairs to pass as parameters into the template.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "elements", elements)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def elements(self) -> Sequence[Mapping[str, _builtins.str]]:
        """
        List of key/value pairs to pass as parameters into the template.
        """
        return pulumi.get(self, "elements")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServer'] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerArgs' bitbucket_server: Fetch pull requests from a repo hosted on a Bitbucket Server.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestFilterArgs'] filters: Filters allow selecting which pull requests to generate for.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGiteaArgs' gitea: Specify the repository from which to fetch the Gitea Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithubArgs' github: Specify the repository from which to fetch the GitHub Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlabArgs' gitlab: Specify the project from which to fetch the GitLab merge requests.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 30min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServer']:
        """
        Fetch pull requests from a repo hosted on a Bitbucket Server.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestFilter']]:
        """
        Filters allow selecting which pull requests to generate for.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitea']:
        """
        Specify the repository from which to fetch the Gitea Pull requests.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithub']:
        """
        Specify the repository from which to fetch the GitHub Pull requests.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlab']:
        """
        Specify the project from which to fetch the GitLab merge requests.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 30min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 repo: _builtins.str,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.str repo: Repo name to scan.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "repo", repo)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGiteaTokenRef'] = None):
        """
        :param _builtins.str api: The Gitea API URL to talk to.
        :param _builtins.str owner: Gitea org or user to scan.
        :param _builtins.str repo: Gitea repo name to scan.
        :param _builtins.bool insecure: Allow insecure tls, for self-signed certificates; default: false.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Gitea API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Gitea repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow insecure tls, for self-signed certificates; default: false.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithubTokenRef'] = None):
        """
        :param _builtins.str owner: GitHub org or user to scan.
        :param _builtins.str repo: GitHub repo name to scan.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret with permission to access pull requests.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        GitHub org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        GitHub repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret with permission to access pull requests.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "pullRequestState":
            suggest = "pull_request_state"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 project: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 pull_request_state: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlabTokenRef'] = None):
        """
        :param _builtins.str project: GitLab project to scan.
        :param _builtins.str api: The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param _builtins.str pull_request_state: additional MRs filter to get only those with a certain state. Default:  "" (all states).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "project", project)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if pull_request_state is not None:
            pulumi.set(__self__, "pull_request_state", pull_request_state)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        GitLab project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="pullRequestState")
    def pull_request_state(self) -> Optional[_builtins.str]:
        """
        additional MRs filter to get only those with a certain state. Default:  "" (all states).
        """
        return pulumi.get(self, "pull_request_state")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProvider(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "azureDevops":
            suggest = "azure_devops"
        elif key == "bitbucketCloud":
            suggest = "bitbucket_cloud"
        elif key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "cloneProtocol":
            suggest = "clone_protocol"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProvider. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProvider.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProvider.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 azure_devops: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevops'] = None,
                 bitbucket_cloud: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloud'] = None,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServer'] = None,
                 clone_protocol: Optional[_builtins.str] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevopsArgs' azure_devops: Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloudArgs' bitbucket_cloud: Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerArgs' bitbucket_server: Use the Bitbucket Server API (1.0) to scan repos in a project.
        :param _builtins.str clone_protocol: Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderFilterArgs'] filters: Filters for which repos should be considered.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGiteaArgs' gitea: Gitea mode uses the Gitea API to scan organizations in your instance.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithubArgs' github: Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabArgs' gitlab: Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if azure_devops is not None:
            pulumi.set(__self__, "azure_devops", azure_devops)
        if bitbucket_cloud is not None:
            pulumi.set(__self__, "bitbucket_cloud", bitbucket_cloud)
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if clone_protocol is not None:
            pulumi.set(__self__, "clone_protocol", clone_protocol)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="azureDevops")
    def azure_devops(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevops']:
        """
        Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        """
        return pulumi.get(self, "azure_devops")

    @_builtins.property
    @pulumi.getter(name="bitbucketCloud")
    def bitbucket_cloud(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloud']:
        """
        Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        """
        return pulumi.get(self, "bitbucket_cloud")

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServer']:
        """
        Use the Bitbucket Server API (1.0) to scan repos in a project.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter(name="cloneProtocol")
    def clone_protocol(self) -> Optional[_builtins.str]:
        """
        Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        """
        return pulumi.get(self, "clone_protocol")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderFilter']]:
        """
        Filters for which repos should be considered.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitea']:
        """
        Gitea mode uses the Gitea API to scan organizations in your instance.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithub']:
        """
        Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlab']:
        """
        Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevops(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "teamProject":
            suggest = "team_project"
        elif key == "accessTokenRef":
            suggest = "access_token_ref"
        elif key == "allBranches":
            suggest = "all_branches"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevops. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 team_project: _builtins.str,
                 access_token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef'] = None,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None):
        """
        :param _builtins.str organization: Azure Devops organization. E.g. "my-organization".
        :param _builtins.str team_project: Azure Devops team project. E.g. "my-team".
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRefArgs' access_token_ref: The Personal Access Token (PAT) to use when connecting.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        pulumi.set(__self__, "organization", organization)
        pulumi.set(__self__, "team_project", team_project)
        if access_token_ref is not None:
            pulumi.set(__self__, "access_token_ref", access_token_ref)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        Azure Devops organization. E.g. "my-organization".
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="teamProject")
    def team_project(self) -> _builtins.str:
        """
        Azure Devops team project. E.g. "my-team".
        """
        return pulumi.get(self, "team_project")

    @_builtins.property
    @pulumi.getter(name="accessTokenRef")
    def access_token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef']:
        """
        The Personal Access Token (PAT) to use when connecting.
        """
        return pulumi.get(self, "access_token_ref")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        return pulumi.get(self, "api")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloud(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appPasswordRef":
            suggest = "app_password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloud. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 user: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 app_password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef'] = None):
        """
        :param _builtins.str owner: Bitbucket workspace to scan.
        :param _builtins.str user: Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRefArgs' app_password_ref: The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "user", user)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if app_password_ref is not None:
            pulumi.set(__self__, "app_password_ref", app_password_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Bitbucket workspace to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def user(self) -> _builtins.str:
        """
        Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        """
        return pulumi.get(self, "user")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="appPasswordRef")
    def app_password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef']:
        """
        The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        return pulumi.get(self, "app_password_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"
        elif key == "labelMatch":
            suggest = "label_match"
        elif key == "pathsDoNotExists":
            suggest = "paths_do_not_exists"
        elif key == "pathsExists":
            suggest = "paths_exists"
        elif key == "repositoryMatch":
            suggest = "repository_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None,
                 label_match: Optional[_builtins.str] = None,
                 paths_do_not_exists: Optional[Sequence[_builtins.str]] = None,
                 paths_exists: Optional[Sequence[_builtins.str]] = None,
                 repository_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        :param _builtins.str label_match: A regex which must match at least one label.
        :param Sequence[_builtins.str] paths_do_not_exists: An array of paths, all of which must not exist.
        :param Sequence[_builtins.str] paths_exists: An array of paths, all of which must exist.
        :param _builtins.str repository_match: A regex for repo names.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)
        if label_match is not None:
            pulumi.set(__self__, "label_match", label_match)
        if paths_do_not_exists is not None:
            pulumi.set(__self__, "paths_do_not_exists", paths_do_not_exists)
        if paths_exists is not None:
            pulumi.set(__self__, "paths_exists", paths_exists)
        if repository_match is not None:
            pulumi.set(__self__, "repository_match", repository_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")

    @_builtins.property
    @pulumi.getter(name="labelMatch")
    def label_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match at least one label.
        """
        return pulumi.get(self, "label_match")

    @_builtins.property
    @pulumi.getter(name="pathsDoNotExists")
    def paths_do_not_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must not exist.
        """
        return pulumi.get(self, "paths_do_not_exists")

    @_builtins.property
    @pulumi.getter(name="pathsExists")
    def paths_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must exist.
        """
        return pulumi.get(self, "paths_exists")

    @_builtins.property
    @pulumi.getter(name="repositoryMatch")
    def repository_match(self) -> Optional[_builtins.str]:
        """
        A regex for repo names.
        """
        return pulumi.get(self, "repository_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGiteaTokenRef'] = None):
        """
        :param _builtins.str owner: Gitea organization or user to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        :param _builtins.bool insecure: Allow self-signed TLS / Certificates.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea organization or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow self-signed TLS / Certificates.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithubTokenRef'] = None):
        """
        :param _builtins.str organization: GitHub org to scan.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "organization", organization)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        GitHub org to scan.
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "caRef":
            suggest = "ca_ref"
        elif key == "includeSubgroups":
            suggest = "include_subgroups"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 ca_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabCaRef'] = None,
                 include_subgroups: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabTokenRef'] = None):
        """
        :param _builtins.str group: Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The Gitlab API URL to talk to.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabCaRefArgs' ca_ref: Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        :param _builtins.bool include_subgroups: Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "group", group)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if ca_ref is not None:
            pulumi.set(__self__, "ca_ref", ca_ref)
        if include_subgroups is not None:
            pulumi.set(__self__, "include_subgroups", include_subgroups)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def group(self) -> _builtins.str:
        """
        Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitlab API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="caRef")
    def ca_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabCaRef']:
        """
        Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        """
        return pulumi.get(self, "ca_ref")

    @_builtins.property
    @pulumi.getter(name="includeSubgroups")
    def include_subgroups(self) -> Optional[_builtins.bool]:
        """
        Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        """
        return pulumi.get(self, "include_subgroups")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabCaRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapName":
            suggest = "config_map_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabCaRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_name: _builtins.str,
                 key: _builtins.str):
        """
        :param _builtins.str config_map_name: Name of Kubernetes `ConfigMap`.
        :param _builtins.str key: Key containing information in Kubernetes `ConfigMap`.
        """
        pulumi.set(__self__, "config_map_name", config_map_name)
        pulumi.set(__self__, "key", key)

    @_builtins.property
    @pulumi.getter(name="configMapName")
    def config_map_name(self) -> _builtins.str:
        """
        Name of Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "config_map_name")

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "key")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixGeneratorSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMerge(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "mergeKeys":
            suggest = "merge_keys"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMerge. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMerge.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMerge.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 generators: Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGenerator'],
                 merge_keys: Sequence[_builtins.str],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplate'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorArgs'] generators: Child generator. Generators are responsible for generating parameters, which are then combined by the parent merge generator.
        :param Sequence[_builtins.str] merge_keys: Keys to merge into resulting parameter set.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "generators", generators)
        pulumi.set(__self__, "merge_keys", merge_keys)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def generators(self) -> Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGenerator']:
        """
        Child generator. Generators are responsible for generating parameters, which are then combined by the parent merge generator.
        """
        return pulumi.get(self, "generators")

    @_builtins.property
    @pulumi.getter(name="mergeKeys")
    def merge_keys(self) -> Sequence[_builtins.str]:
        """
        Keys to merge into resulting parameter set.
        """
        return pulumi.get(self, "merge_keys")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGenerator(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clusterDecisionResources":
            suggest = "cluster_decision_resources"
        elif key == "pullRequests":
            suggest = "pull_requests"
        elif key == "scmProviders":
            suggest = "scm_providers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGenerator. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGenerator.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGenerator.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cluster_decision_resources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResource']] = None,
                 clusters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorCluster']] = None,
                 gits: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGit']] = None,
                 lists: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorList']] = None,
                 pull_requests: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequest']] = None,
                 scm_providers: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProvider']] = None,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelector'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceArgs'] cluster_decision_resources: The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterArgs'] clusters: The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitArgs'] gits: [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListArgs'] lists: [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestArgs'] pull_requests: [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderArgs'] scm_providers: [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelectorArgs' selector: The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        if cluster_decision_resources is not None:
            pulumi.set(__self__, "cluster_decision_resources", cluster_decision_resources)
        if clusters is not None:
            pulumi.set(__self__, "clusters", clusters)
        if gits is not None:
            pulumi.set(__self__, "gits", gits)
        if lists is not None:
            pulumi.set(__self__, "lists", lists)
        if pull_requests is not None:
            pulumi.set(__self__, "pull_requests", pull_requests)
        if scm_providers is not None:
            pulumi.set(__self__, "scm_providers", scm_providers)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)

    @_builtins.property
    @pulumi.getter(name="clusterDecisionResources")
    def cluster_decision_resources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResource']]:
        """
        The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        """
        return pulumi.get(self, "cluster_decision_resources")

    @_builtins.property
    @pulumi.getter
    def clusters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorCluster']]:
        """
        The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        """
        return pulumi.get(self, "clusters")

    @_builtins.property
    @pulumi.getter
    def gits(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGit']]:
        """
        [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        """
        return pulumi.get(self, "gits")

    @_builtins.property
    @pulumi.getter
    def lists(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorList']]:
        """
        [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        """
        return pulumi.get(self, "lists")

    @_builtins.property
    @pulumi.getter(name="pullRequests")
    def pull_requests(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequest']]:
        """
        [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        """
        return pulumi.get(self, "pull_requests")

    @_builtins.property
    @pulumi.getter(name="scmProviders")
    def scm_providers(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProvider']]:
        """
        [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        """
        return pulumi.get(self, "scm_providers")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelector']:
        """
        The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        return pulumi.get(self, "selector")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorCluster(dict):
    def __init__(__self__, *,
                 enabled: _builtins.bool,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelector'] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.bool enabled: Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelectorArgs' selector: Label selector used to narrow the scope of targeted clusters.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        pulumi.set(__self__, "enabled", enabled)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> _builtins.bool:
        """
        Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        """
        return pulumi.get(self, "enabled")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelector']:
        """
        Label selector used to narrow the scope of targeted clusters.
        """
        return pulumi.get(self, "selector")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapRef":
            suggest = "config_map_ref"
        elif key == "labelSelector":
            suggest = "label_selector"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_ref: _builtins.str,
                 label_selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelector'] = None,
                 name: Optional[_builtins.str] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.str config_map_ref: ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorArgs' label_selector: Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        :param _builtins.str name: Resource name of the kind, group and version, defined in the `config_map_ref`.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        pulumi.set(__self__, "config_map_ref", config_map_ref)
        if label_selector is not None:
            pulumi.set(__self__, "label_selector", label_selector)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter(name="configMapRef")
    def config_map_ref(self) -> _builtins.str:
        """
        ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        """
        return pulumi.get(self, "config_map_ref")

    @_builtins.property
    @pulumi.getter(name="labelSelector")
    def label_selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelector']:
        """
        Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        """
        return pulumi.get(self, "label_selector")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Resource name of the kind, group and version, defined in the `config_map_ref`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGit(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "pathParamPrefix":
            suggest = "path_param_prefix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGit. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGit.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGit.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 repo_url: _builtins.str,
                 directories: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitDirectory']] = None,
                 files: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitFile']] = None,
                 path_param_prefix: Optional[_builtins.str] = None,
                 revision: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplate'] = None):
        """
        :param _builtins.str repo_url: URL to the repository to use.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitDirectoryArgs'] directories: List of directories in the source repository to use when template the Application..
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitFileArgs'] files: List of files in the source repository to use when template the Application.
        :param _builtins.str path_param_prefix: Prefix for all path-related parameter names.
        :param _builtins.str revision: Revision of the source repository to use.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "repo_url", repo_url)
        if directories is not None:
            pulumi.set(__self__, "directories", directories)
        if files is not None:
            pulumi.set(__self__, "files", files)
        if path_param_prefix is not None:
            pulumi.set(__self__, "path_param_prefix", path_param_prefix)
        if revision is not None:
            pulumi.set(__self__, "revision", revision)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> _builtins.str:
        """
        URL to the repository to use.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter
    def directories(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitDirectory']]:
        """
        List of directories in the source repository to use when template the Application..
        """
        return pulumi.get(self, "directories")

    @_builtins.property
    @pulumi.getter
    def files(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitFile']]:
        """
        List of files in the source repository to use when template the Application.
        """
        return pulumi.get(self, "files")

    @_builtins.property
    @pulumi.getter(name="pathParamPrefix")
    def path_param_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix for all path-related parameter names.
        """
        return pulumi.get(self, "path_param_prefix")

    @_builtins.property
    @pulumi.getter
    def revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source repository to use.
        """
        return pulumi.get(self, "revision")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitDirectory(dict):
    def __init__(__self__, *,
                 path: _builtins.str,
                 exclude: Optional[_builtins.bool] = None):
        """
        :param _builtins.str path: Path in the repository.
        :param _builtins.bool exclude: Flag indicating whether or not the directory should be excluded when templating.
        """
        pulumi.set(__self__, "path", path)
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path in the repository.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.bool]:
        """
        Flag indicating whether or not the directory should be excluded when templating.
        """
        return pulumi.get(self, "exclude")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitFile(dict):
    def __init__(__self__, *,
                 path: _builtins.str):
        """
        :param _builtins.str path: Path to the file in the repository.
        """
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file in the repository.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorList(dict):
    def __init__(__self__, *,
                 elements: Sequence[Mapping[str, _builtins.str]],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplate'] = None):
        """
        :param Sequence[Mapping[str, _builtins.str]] elements: List of key/value pairs to pass as parameters into the template.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "elements", elements)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def elements(self) -> Sequence[Mapping[str, _builtins.str]]:
        """
        List of key/value pairs to pass as parameters into the template.
        """
        return pulumi.get(self, "elements")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServer'] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerArgs' bitbucket_server: Fetch pull requests from a repo hosted on a Bitbucket Server.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestFilterArgs'] filters: Filters allow selecting which pull requests to generate for.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGiteaArgs' gitea: Specify the repository from which to fetch the Gitea Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithubArgs' github: Specify the repository from which to fetch the GitHub Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlabArgs' gitlab: Specify the project from which to fetch the GitLab merge requests.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 30min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServer']:
        """
        Fetch pull requests from a repo hosted on a Bitbucket Server.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestFilter']]:
        """
        Filters allow selecting which pull requests to generate for.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitea']:
        """
        Specify the repository from which to fetch the Gitea Pull requests.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithub']:
        """
        Specify the repository from which to fetch the GitHub Pull requests.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlab']:
        """
        Specify the project from which to fetch the GitLab merge requests.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 30min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 repo: _builtins.str,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.str repo: Repo name to scan.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "repo", repo)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGiteaTokenRef'] = None):
        """
        :param _builtins.str api: The Gitea API URL to talk to.
        :param _builtins.str owner: Gitea org or user to scan.
        :param _builtins.str repo: Gitea repo name to scan.
        :param _builtins.bool insecure: Allow insecure tls, for self-signed certificates; default: false.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Gitea API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Gitea repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow insecure tls, for self-signed certificates; default: false.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithubTokenRef'] = None):
        """
        :param _builtins.str owner: GitHub org or user to scan.
        :param _builtins.str repo: GitHub repo name to scan.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret with permission to access pull requests.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        GitHub org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        GitHub repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret with permission to access pull requests.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "pullRequestState":
            suggest = "pull_request_state"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 project: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 pull_request_state: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlabTokenRef'] = None):
        """
        :param _builtins.str project: GitLab project to scan.
        :param _builtins.str api: The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param _builtins.str pull_request_state: additional MRs filter to get only those with a certain state. Default:  "" (all states).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "project", project)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if pull_request_state is not None:
            pulumi.set(__self__, "pull_request_state", pull_request_state)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        GitLab project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="pullRequestState")
    def pull_request_state(self) -> Optional[_builtins.str]:
        """
        additional MRs filter to get only those with a certain state. Default:  "" (all states).
        """
        return pulumi.get(self, "pull_request_state")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProvider(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "azureDevops":
            suggest = "azure_devops"
        elif key == "bitbucketCloud":
            suggest = "bitbucket_cloud"
        elif key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "cloneProtocol":
            suggest = "clone_protocol"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProvider. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProvider.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProvider.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 azure_devops: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevops'] = None,
                 bitbucket_cloud: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloud'] = None,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServer'] = None,
                 clone_protocol: Optional[_builtins.str] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevopsArgs' azure_devops: Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloudArgs' bitbucket_cloud: Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerArgs' bitbucket_server: Use the Bitbucket Server API (1.0) to scan repos in a project.
        :param _builtins.str clone_protocol: Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderFilterArgs'] filters: Filters for which repos should be considered.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGiteaArgs' gitea: Gitea mode uses the Gitea API to scan organizations in your instance.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithubArgs' github: Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabArgs' gitlab: Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if azure_devops is not None:
            pulumi.set(__self__, "azure_devops", azure_devops)
        if bitbucket_cloud is not None:
            pulumi.set(__self__, "bitbucket_cloud", bitbucket_cloud)
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if clone_protocol is not None:
            pulumi.set(__self__, "clone_protocol", clone_protocol)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="azureDevops")
    def azure_devops(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevops']:
        """
        Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        """
        return pulumi.get(self, "azure_devops")

    @_builtins.property
    @pulumi.getter(name="bitbucketCloud")
    def bitbucket_cloud(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloud']:
        """
        Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        """
        return pulumi.get(self, "bitbucket_cloud")

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServer']:
        """
        Use the Bitbucket Server API (1.0) to scan repos in a project.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter(name="cloneProtocol")
    def clone_protocol(self) -> Optional[_builtins.str]:
        """
        Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        """
        return pulumi.get(self, "clone_protocol")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderFilter']]:
        """
        Filters for which repos should be considered.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitea']:
        """
        Gitea mode uses the Gitea API to scan organizations in your instance.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithub']:
        """
        Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlab']:
        """
        Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevops(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "teamProject":
            suggest = "team_project"
        elif key == "accessTokenRef":
            suggest = "access_token_ref"
        elif key == "allBranches":
            suggest = "all_branches"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevops. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 team_project: _builtins.str,
                 access_token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef'] = None,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None):
        """
        :param _builtins.str organization: Azure Devops organization. E.g. "my-organization".
        :param _builtins.str team_project: Azure Devops team project. E.g. "my-team".
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRefArgs' access_token_ref: The Personal Access Token (PAT) to use when connecting.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        pulumi.set(__self__, "organization", organization)
        pulumi.set(__self__, "team_project", team_project)
        if access_token_ref is not None:
            pulumi.set(__self__, "access_token_ref", access_token_ref)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        Azure Devops organization. E.g. "my-organization".
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="teamProject")
    def team_project(self) -> _builtins.str:
        """
        Azure Devops team project. E.g. "my-team".
        """
        return pulumi.get(self, "team_project")

    @_builtins.property
    @pulumi.getter(name="accessTokenRef")
    def access_token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef']:
        """
        The Personal Access Token (PAT) to use when connecting.
        """
        return pulumi.get(self, "access_token_ref")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        return pulumi.get(self, "api")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloud(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appPasswordRef":
            suggest = "app_password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloud. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 user: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 app_password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef'] = None):
        """
        :param _builtins.str owner: Bitbucket workspace to scan.
        :param _builtins.str user: Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRefArgs' app_password_ref: The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "user", user)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if app_password_ref is not None:
            pulumi.set(__self__, "app_password_ref", app_password_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Bitbucket workspace to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def user(self) -> _builtins.str:
        """
        Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        """
        return pulumi.get(self, "user")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="appPasswordRef")
    def app_password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef']:
        """
        The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        return pulumi.get(self, "app_password_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"
        elif key == "labelMatch":
            suggest = "label_match"
        elif key == "pathsDoNotExists":
            suggest = "paths_do_not_exists"
        elif key == "pathsExists":
            suggest = "paths_exists"
        elif key == "repositoryMatch":
            suggest = "repository_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None,
                 label_match: Optional[_builtins.str] = None,
                 paths_do_not_exists: Optional[Sequence[_builtins.str]] = None,
                 paths_exists: Optional[Sequence[_builtins.str]] = None,
                 repository_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        :param _builtins.str label_match: A regex which must match at least one label.
        :param Sequence[_builtins.str] paths_do_not_exists: An array of paths, all of which must not exist.
        :param Sequence[_builtins.str] paths_exists: An array of paths, all of which must exist.
        :param _builtins.str repository_match: A regex for repo names.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)
        if label_match is not None:
            pulumi.set(__self__, "label_match", label_match)
        if paths_do_not_exists is not None:
            pulumi.set(__self__, "paths_do_not_exists", paths_do_not_exists)
        if paths_exists is not None:
            pulumi.set(__self__, "paths_exists", paths_exists)
        if repository_match is not None:
            pulumi.set(__self__, "repository_match", repository_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")

    @_builtins.property
    @pulumi.getter(name="labelMatch")
    def label_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match at least one label.
        """
        return pulumi.get(self, "label_match")

    @_builtins.property
    @pulumi.getter(name="pathsDoNotExists")
    def paths_do_not_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must not exist.
        """
        return pulumi.get(self, "paths_do_not_exists")

    @_builtins.property
    @pulumi.getter(name="pathsExists")
    def paths_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must exist.
        """
        return pulumi.get(self, "paths_exists")

    @_builtins.property
    @pulumi.getter(name="repositoryMatch")
    def repository_match(self) -> Optional[_builtins.str]:
        """
        A regex for repo names.
        """
        return pulumi.get(self, "repository_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGiteaTokenRef'] = None):
        """
        :param _builtins.str owner: Gitea organization or user to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        :param _builtins.bool insecure: Allow self-signed TLS / Certificates.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea organization or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow self-signed TLS / Certificates.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithubTokenRef'] = None):
        """
        :param _builtins.str organization: GitHub org to scan.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "organization", organization)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        GitHub org to scan.
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "caRef":
            suggest = "ca_ref"
        elif key == "includeSubgroups":
            suggest = "include_subgroups"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 ca_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabCaRef'] = None,
                 include_subgroups: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabTokenRef'] = None):
        """
        :param _builtins.str group: Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The Gitlab API URL to talk to.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabCaRefArgs' ca_ref: Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        :param _builtins.bool include_subgroups: Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "group", group)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if ca_ref is not None:
            pulumi.set(__self__, "ca_ref", ca_ref)
        if include_subgroups is not None:
            pulumi.set(__self__, "include_subgroups", include_subgroups)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def group(self) -> _builtins.str:
        """
        Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitlab API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="caRef")
    def ca_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabCaRef']:
        """
        Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        """
        return pulumi.get(self, "ca_ref")

    @_builtins.property
    @pulumi.getter(name="includeSubgroups")
    def include_subgroups(self) -> Optional[_builtins.bool]:
        """
        Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        """
        return pulumi.get(self, "include_subgroups")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabCaRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapName":
            suggest = "config_map_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabCaRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_name: _builtins.str,
                 key: _builtins.str):
        """
        :param _builtins.str config_map_name: Name of Kubernetes `ConfigMap`.
        :param _builtins.str key: Key containing information in Kubernetes `ConfigMap`.
        """
        pulumi.set(__self__, "config_map_name", config_map_name)
        pulumi.set(__self__, "key", key)

    @_builtins.property
    @pulumi.getter(name="configMapName")
    def config_map_name(self) -> _builtins.str:
        """
        Name of Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "config_map_name")

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "key")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeGeneratorSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorMergeTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServer'] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerArgs' bitbucket_server: Fetch pull requests from a repo hosted on a Bitbucket Server.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestFilterArgs'] filters: Filters allow selecting which pull requests to generate for.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGiteaArgs' gitea: Specify the repository from which to fetch the Gitea Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithubArgs' github: Specify the repository from which to fetch the GitHub Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlabArgs' gitlab: Specify the project from which to fetch the GitLab merge requests.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 30min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServer']:
        """
        Fetch pull requests from a repo hosted on a Bitbucket Server.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestFilter']]:
        """
        Filters allow selecting which pull requests to generate for.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitea']:
        """
        Specify the repository from which to fetch the Gitea Pull requests.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithub']:
        """
        Specify the repository from which to fetch the GitHub Pull requests.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlab']:
        """
        Specify the project from which to fetch the GitLab merge requests.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 30min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 repo: _builtins.str,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.str repo: Repo name to scan.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "repo", repo)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGiteaTokenRef'] = None):
        """
        :param _builtins.str api: The Gitea API URL to talk to.
        :param _builtins.str owner: Gitea org or user to scan.
        :param _builtins.str repo: Gitea repo name to scan.
        :param _builtins.bool insecure: Allow insecure tls, for self-signed certificates; default: false.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Gitea API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Gitea repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow insecure tls, for self-signed certificates; default: false.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithubTokenRef'] = None):
        """
        :param _builtins.str owner: GitHub org or user to scan.
        :param _builtins.str repo: GitHub repo name to scan.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret with permission to access pull requests.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        GitHub org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        GitHub repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret with permission to access pull requests.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "pullRequestState":
            suggest = "pull_request_state"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 project: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 pull_request_state: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlabTokenRef'] = None):
        """
        :param _builtins.str project: GitLab project to scan.
        :param _builtins.str api: The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param _builtins.str pull_request_state: additional MRs filter to get only those with a certain state. Default:  "" (all states).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "project", project)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if pull_request_state is not None:
            pulumi.set(__self__, "pull_request_state", pull_request_state)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        GitLab project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="pullRequestState")
    def pull_request_state(self) -> Optional[_builtins.str]:
        """
        additional MRs filter to get only those with a certain state. Default:  "" (all states).
        """
        return pulumi.get(self, "pull_request_state")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProvider(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "azureDevops":
            suggest = "azure_devops"
        elif key == "bitbucketCloud":
            suggest = "bitbucket_cloud"
        elif key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "cloneProtocol":
            suggest = "clone_protocol"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProvider. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProvider.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProvider.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 azure_devops: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevops'] = None,
                 bitbucket_cloud: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloud'] = None,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServer'] = None,
                 clone_protocol: Optional[_builtins.str] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevopsArgs' azure_devops: Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloudArgs' bitbucket_cloud: Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerArgs' bitbucket_server: Use the Bitbucket Server API (1.0) to scan repos in a project.
        :param _builtins.str clone_protocol: Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderFilterArgs'] filters: Filters for which repos should be considered.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGiteaArgs' gitea: Gitea mode uses the Gitea API to scan organizations in your instance.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithubArgs' github: Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabArgs' gitlab: Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if azure_devops is not None:
            pulumi.set(__self__, "azure_devops", azure_devops)
        if bitbucket_cloud is not None:
            pulumi.set(__self__, "bitbucket_cloud", bitbucket_cloud)
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if clone_protocol is not None:
            pulumi.set(__self__, "clone_protocol", clone_protocol)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="azureDevops")
    def azure_devops(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevops']:
        """
        Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        """
        return pulumi.get(self, "azure_devops")

    @_builtins.property
    @pulumi.getter(name="bitbucketCloud")
    def bitbucket_cloud(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloud']:
        """
        Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        """
        return pulumi.get(self, "bitbucket_cloud")

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServer']:
        """
        Use the Bitbucket Server API (1.0) to scan repos in a project.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter(name="cloneProtocol")
    def clone_protocol(self) -> Optional[_builtins.str]:
        """
        Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        """
        return pulumi.get(self, "clone_protocol")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderFilter']]:
        """
        Filters for which repos should be considered.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitea']:
        """
        Gitea mode uses the Gitea API to scan organizations in your instance.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithub']:
        """
        Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlab']:
        """
        Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevops(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "teamProject":
            suggest = "team_project"
        elif key == "accessTokenRef":
            suggest = "access_token_ref"
        elif key == "allBranches":
            suggest = "all_branches"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevops. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 team_project: _builtins.str,
                 access_token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef'] = None,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None):
        """
        :param _builtins.str organization: Azure Devops organization. E.g. "my-organization".
        :param _builtins.str team_project: Azure Devops team project. E.g. "my-team".
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRefArgs' access_token_ref: The Personal Access Token (PAT) to use when connecting.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        pulumi.set(__self__, "organization", organization)
        pulumi.set(__self__, "team_project", team_project)
        if access_token_ref is not None:
            pulumi.set(__self__, "access_token_ref", access_token_ref)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        Azure Devops organization. E.g. "my-organization".
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="teamProject")
    def team_project(self) -> _builtins.str:
        """
        Azure Devops team project. E.g. "my-team".
        """
        return pulumi.get(self, "team_project")

    @_builtins.property
    @pulumi.getter(name="accessTokenRef")
    def access_token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef']:
        """
        The Personal Access Token (PAT) to use when connecting.
        """
        return pulumi.get(self, "access_token_ref")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        return pulumi.get(self, "api")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloud(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appPasswordRef":
            suggest = "app_password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloud. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 user: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 app_password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef'] = None):
        """
        :param _builtins.str owner: Bitbucket workspace to scan.
        :param _builtins.str user: Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRefArgs' app_password_ref: The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "user", user)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if app_password_ref is not None:
            pulumi.set(__self__, "app_password_ref", app_password_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Bitbucket workspace to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def user(self) -> _builtins.str:
        """
        Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        """
        return pulumi.get(self, "user")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="appPasswordRef")
    def app_password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef']:
        """
        The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        return pulumi.get(self, "app_password_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"
        elif key == "labelMatch":
            suggest = "label_match"
        elif key == "pathsDoNotExists":
            suggest = "paths_do_not_exists"
        elif key == "pathsExists":
            suggest = "paths_exists"
        elif key == "repositoryMatch":
            suggest = "repository_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None,
                 label_match: Optional[_builtins.str] = None,
                 paths_do_not_exists: Optional[Sequence[_builtins.str]] = None,
                 paths_exists: Optional[Sequence[_builtins.str]] = None,
                 repository_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        :param _builtins.str label_match: A regex which must match at least one label.
        :param Sequence[_builtins.str] paths_do_not_exists: An array of paths, all of which must not exist.
        :param Sequence[_builtins.str] paths_exists: An array of paths, all of which must exist.
        :param _builtins.str repository_match: A regex for repo names.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)
        if label_match is not None:
            pulumi.set(__self__, "label_match", label_match)
        if paths_do_not_exists is not None:
            pulumi.set(__self__, "paths_do_not_exists", paths_do_not_exists)
        if paths_exists is not None:
            pulumi.set(__self__, "paths_exists", paths_exists)
        if repository_match is not None:
            pulumi.set(__self__, "repository_match", repository_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")

    @_builtins.property
    @pulumi.getter(name="labelMatch")
    def label_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match at least one label.
        """
        return pulumi.get(self, "label_match")

    @_builtins.property
    @pulumi.getter(name="pathsDoNotExists")
    def paths_do_not_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must not exist.
        """
        return pulumi.get(self, "paths_do_not_exists")

    @_builtins.property
    @pulumi.getter(name="pathsExists")
    def paths_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must exist.
        """
        return pulumi.get(self, "paths_exists")

    @_builtins.property
    @pulumi.getter(name="repositoryMatch")
    def repository_match(self) -> Optional[_builtins.str]:
        """
        A regex for repo names.
        """
        return pulumi.get(self, "repository_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGiteaTokenRef'] = None):
        """
        :param _builtins.str owner: Gitea organization or user to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        :param _builtins.bool insecure: Allow self-signed TLS / Certificates.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea organization or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow self-signed TLS / Certificates.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithubTokenRef'] = None):
        """
        :param _builtins.str organization: GitHub org to scan.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "organization", organization)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        GitHub org to scan.
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "caRef":
            suggest = "ca_ref"
        elif key == "includeSubgroups":
            suggest = "include_subgroups"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 ca_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabCaRef'] = None,
                 include_subgroups: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabTokenRef'] = None):
        """
        :param _builtins.str group: Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The Gitlab API URL to talk to.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabCaRefArgs' ca_ref: Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        :param _builtins.bool include_subgroups: Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "group", group)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if ca_ref is not None:
            pulumi.set(__self__, "ca_ref", ca_ref)
        if include_subgroups is not None:
            pulumi.set(__self__, "include_subgroups", include_subgroups)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def group(self) -> _builtins.str:
        """
        Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitlab API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="caRef")
    def ca_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabCaRef']:
        """
        Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        """
        return pulumi.get(self, "ca_ref")

    @_builtins.property
    @pulumi.getter(name="includeSubgroups")
    def include_subgroups(self) -> Optional[_builtins.bool]:
        """
        Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        """
        return pulumi.get(self, "include_subgroups")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabCaRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapName":
            suggest = "config_map_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabCaRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_name: _builtins.str,
                 key: _builtins.str):
        """
        :param _builtins.str config_map_name: Name of Kubernetes `ConfigMap`.
        :param _builtins.str key: Key containing information in Kubernetes `ConfigMap`.
        """
        pulumi.set(__self__, "config_map_name", config_map_name)
        pulumi.set(__self__, "key", key)

    @_builtins.property
    @pulumi.getter(name="configMapName")
    def config_map_name(self) -> _builtins.str:
        """
        Name of Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "config_map_name")

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "key")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixGeneratorSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMerge(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "mergeKeys":
            suggest = "merge_keys"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMerge. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMerge.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMerge.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 generators: Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGenerator'],
                 merge_keys: Sequence[_builtins.str],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplate'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorArgs'] generators: Child generator. Generators are responsible for generating parameters, which are then combined by the parent merge generator.
        :param Sequence[_builtins.str] merge_keys: Keys to merge into resulting parameter set.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "generators", generators)
        pulumi.set(__self__, "merge_keys", merge_keys)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def generators(self) -> Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGenerator']:
        """
        Child generator. Generators are responsible for generating parameters, which are then combined by the parent merge generator.
        """
        return pulumi.get(self, "generators")

    @_builtins.property
    @pulumi.getter(name="mergeKeys")
    def merge_keys(self) -> Sequence[_builtins.str]:
        """
        Keys to merge into resulting parameter set.
        """
        return pulumi.get(self, "merge_keys")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGenerator(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clusterDecisionResources":
            suggest = "cluster_decision_resources"
        elif key == "pullRequests":
            suggest = "pull_requests"
        elif key == "scmProviders":
            suggest = "scm_providers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGenerator. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGenerator.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGenerator.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cluster_decision_resources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResource']] = None,
                 clusters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorCluster']] = None,
                 gits: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGit']] = None,
                 lists: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorList']] = None,
                 matrices: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrix']] = None,
                 merges: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMerge']] = None,
                 pull_requests: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequest']] = None,
                 scm_providers: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProvider']] = None,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelector'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceArgs'] cluster_decision_resources: The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterArgs'] clusters: The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitArgs'] gits: [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListArgs'] lists: [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixArgs'] matrices: [Matrix generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/) combine the parameters generated by two child generators, iterating through every combination of each generator's generated parameters. Take note of the [restrictions](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/#restrictions) regarding their usage - particularly regarding nesting matrix generators.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeArgs'] merges: [Merge generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Merge/) combine parameters produced by the base (first) generator with matching parameter sets produced by subsequent generators. Take note of the [restrictions](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Merge/#restrictions) regarding their usage - particularly regarding nesting merge generators.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestArgs'] pull_requests: [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderArgs'] scm_providers: [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelectorArgs' selector: The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        if cluster_decision_resources is not None:
            pulumi.set(__self__, "cluster_decision_resources", cluster_decision_resources)
        if clusters is not None:
            pulumi.set(__self__, "clusters", clusters)
        if gits is not None:
            pulumi.set(__self__, "gits", gits)
        if lists is not None:
            pulumi.set(__self__, "lists", lists)
        if matrices is not None:
            pulumi.set(__self__, "matrices", matrices)
        if merges is not None:
            pulumi.set(__self__, "merges", merges)
        if pull_requests is not None:
            pulumi.set(__self__, "pull_requests", pull_requests)
        if scm_providers is not None:
            pulumi.set(__self__, "scm_providers", scm_providers)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)

    @_builtins.property
    @pulumi.getter(name="clusterDecisionResources")
    def cluster_decision_resources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResource']]:
        """
        The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        """
        return pulumi.get(self, "cluster_decision_resources")

    @_builtins.property
    @pulumi.getter
    def clusters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorCluster']]:
        """
        The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        """
        return pulumi.get(self, "clusters")

    @_builtins.property
    @pulumi.getter
    def gits(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGit']]:
        """
        [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        """
        return pulumi.get(self, "gits")

    @_builtins.property
    @pulumi.getter
    def lists(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorList']]:
        """
        [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        """
        return pulumi.get(self, "lists")

    @_builtins.property
    @pulumi.getter
    def matrices(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrix']]:
        """
        [Matrix generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/) combine the parameters generated by two child generators, iterating through every combination of each generator's generated parameters. Take note of the [restrictions](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/#restrictions) regarding their usage - particularly regarding nesting matrix generators.
        """
        return pulumi.get(self, "matrices")

    @_builtins.property
    @pulumi.getter
    def merges(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMerge']]:
        """
        [Merge generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Merge/) combine parameters produced by the base (first) generator with matching parameter sets produced by subsequent generators. Take note of the [restrictions](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Merge/#restrictions) regarding their usage - particularly regarding nesting merge generators.
        """
        return pulumi.get(self, "merges")

    @_builtins.property
    @pulumi.getter(name="pullRequests")
    def pull_requests(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequest']]:
        """
        [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        """
        return pulumi.get(self, "pull_requests")

    @_builtins.property
    @pulumi.getter(name="scmProviders")
    def scm_providers(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProvider']]:
        """
        [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        """
        return pulumi.get(self, "scm_providers")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelector']:
        """
        The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        return pulumi.get(self, "selector")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorCluster(dict):
    def __init__(__self__, *,
                 enabled: _builtins.bool,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelector'] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.bool enabled: Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelectorArgs' selector: Label selector used to narrow the scope of targeted clusters.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        pulumi.set(__self__, "enabled", enabled)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> _builtins.bool:
        """
        Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        """
        return pulumi.get(self, "enabled")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelector']:
        """
        Label selector used to narrow the scope of targeted clusters.
        """
        return pulumi.get(self, "selector")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapRef":
            suggest = "config_map_ref"
        elif key == "labelSelector":
            suggest = "label_selector"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_ref: _builtins.str,
                 label_selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelector'] = None,
                 name: Optional[_builtins.str] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.str config_map_ref: ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorArgs' label_selector: Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        :param _builtins.str name: Resource name of the kind, group and version, defined in the `config_map_ref`.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        pulumi.set(__self__, "config_map_ref", config_map_ref)
        if label_selector is not None:
            pulumi.set(__self__, "label_selector", label_selector)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter(name="configMapRef")
    def config_map_ref(self) -> _builtins.str:
        """
        ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        """
        return pulumi.get(self, "config_map_ref")

    @_builtins.property
    @pulumi.getter(name="labelSelector")
    def label_selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelector']:
        """
        Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        """
        return pulumi.get(self, "label_selector")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Resource name of the kind, group and version, defined in the `config_map_ref`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGit(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "pathParamPrefix":
            suggest = "path_param_prefix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGit. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGit.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGit.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 repo_url: _builtins.str,
                 directories: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitDirectory']] = None,
                 files: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitFile']] = None,
                 path_param_prefix: Optional[_builtins.str] = None,
                 revision: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplate'] = None):
        """
        :param _builtins.str repo_url: URL to the repository to use.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitDirectoryArgs'] directories: List of directories in the source repository to use when template the Application..
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitFileArgs'] files: List of files in the source repository to use when template the Application.
        :param _builtins.str path_param_prefix: Prefix for all path-related parameter names.
        :param _builtins.str revision: Revision of the source repository to use.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "repo_url", repo_url)
        if directories is not None:
            pulumi.set(__self__, "directories", directories)
        if files is not None:
            pulumi.set(__self__, "files", files)
        if path_param_prefix is not None:
            pulumi.set(__self__, "path_param_prefix", path_param_prefix)
        if revision is not None:
            pulumi.set(__self__, "revision", revision)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> _builtins.str:
        """
        URL to the repository to use.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter
    def directories(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitDirectory']]:
        """
        List of directories in the source repository to use when template the Application..
        """
        return pulumi.get(self, "directories")

    @_builtins.property
    @pulumi.getter
    def files(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitFile']]:
        """
        List of files in the source repository to use when template the Application.
        """
        return pulumi.get(self, "files")

    @_builtins.property
    @pulumi.getter(name="pathParamPrefix")
    def path_param_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix for all path-related parameter names.
        """
        return pulumi.get(self, "path_param_prefix")

    @_builtins.property
    @pulumi.getter
    def revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source repository to use.
        """
        return pulumi.get(self, "revision")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitDirectory(dict):
    def __init__(__self__, *,
                 path: _builtins.str,
                 exclude: Optional[_builtins.bool] = None):
        """
        :param _builtins.str path: Path in the repository.
        :param _builtins.bool exclude: Flag indicating whether or not the directory should be excluded when templating.
        """
        pulumi.set(__self__, "path", path)
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path in the repository.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.bool]:
        """
        Flag indicating whether or not the directory should be excluded when templating.
        """
        return pulumi.get(self, "exclude")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitFile(dict):
    def __init__(__self__, *,
                 path: _builtins.str):
        """
        :param _builtins.str path: Path to the file in the repository.
        """
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file in the repository.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorList(dict):
    def __init__(__self__, *,
                 elements: Sequence[Mapping[str, _builtins.str]],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplate'] = None):
        """
        :param Sequence[Mapping[str, _builtins.str]] elements: List of key/value pairs to pass as parameters into the template.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "elements", elements)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def elements(self) -> Sequence[Mapping[str, _builtins.str]]:
        """
        List of key/value pairs to pass as parameters into the template.
        """
        return pulumi.get(self, "elements")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrix(dict):
    def __init__(__self__, *,
                 generators: Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGenerator'],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplate'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorArgs'] generators: Child generator. Generators are responsible for generating parameters, which are then combined by the parent matrix generator into the template fields of the ApplicationSet resource.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "generators", generators)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def generators(self) -> Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGenerator']:
        """
        Child generator. Generators are responsible for generating parameters, which are then combined by the parent matrix generator into the template fields of the ApplicationSet resource.
        """
        return pulumi.get(self, "generators")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGenerator(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clusterDecisionResources":
            suggest = "cluster_decision_resources"
        elif key == "pullRequests":
            suggest = "pull_requests"
        elif key == "scmProviders":
            suggest = "scm_providers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGenerator. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGenerator.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGenerator.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cluster_decision_resources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResource']] = None,
                 clusters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorCluster']] = None,
                 gits: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGit']] = None,
                 lists: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorList']] = None,
                 pull_requests: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequest']] = None,
                 scm_providers: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProvider']] = None,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelector'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceArgs'] cluster_decision_resources: The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterArgs'] clusters: The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitArgs'] gits: [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListArgs'] lists: [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestArgs'] pull_requests: [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderArgs'] scm_providers: [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelectorArgs' selector: The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        if cluster_decision_resources is not None:
            pulumi.set(__self__, "cluster_decision_resources", cluster_decision_resources)
        if clusters is not None:
            pulumi.set(__self__, "clusters", clusters)
        if gits is not None:
            pulumi.set(__self__, "gits", gits)
        if lists is not None:
            pulumi.set(__self__, "lists", lists)
        if pull_requests is not None:
            pulumi.set(__self__, "pull_requests", pull_requests)
        if scm_providers is not None:
            pulumi.set(__self__, "scm_providers", scm_providers)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)

    @_builtins.property
    @pulumi.getter(name="clusterDecisionResources")
    def cluster_decision_resources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResource']]:
        """
        The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        """
        return pulumi.get(self, "cluster_decision_resources")

    @_builtins.property
    @pulumi.getter
    def clusters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorCluster']]:
        """
        The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        """
        return pulumi.get(self, "clusters")

    @_builtins.property
    @pulumi.getter
    def gits(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGit']]:
        """
        [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        """
        return pulumi.get(self, "gits")

    @_builtins.property
    @pulumi.getter
    def lists(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorList']]:
        """
        [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        """
        return pulumi.get(self, "lists")

    @_builtins.property
    @pulumi.getter(name="pullRequests")
    def pull_requests(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequest']]:
        """
        [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        """
        return pulumi.get(self, "pull_requests")

    @_builtins.property
    @pulumi.getter(name="scmProviders")
    def scm_providers(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProvider']]:
        """
        [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        """
        return pulumi.get(self, "scm_providers")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelector']:
        """
        The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        return pulumi.get(self, "selector")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorCluster(dict):
    def __init__(__self__, *,
                 enabled: _builtins.bool,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelector'] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.bool enabled: Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelectorArgs' selector: Label selector used to narrow the scope of targeted clusters.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        pulumi.set(__self__, "enabled", enabled)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> _builtins.bool:
        """
        Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        """
        return pulumi.get(self, "enabled")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelector']:
        """
        Label selector used to narrow the scope of targeted clusters.
        """
        return pulumi.get(self, "selector")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapRef":
            suggest = "config_map_ref"
        elif key == "labelSelector":
            suggest = "label_selector"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_ref: _builtins.str,
                 label_selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector'] = None,
                 name: Optional[_builtins.str] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.str config_map_ref: ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorArgs' label_selector: Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        :param _builtins.str name: Resource name of the kind, group and version, defined in the `config_map_ref`.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        pulumi.set(__self__, "config_map_ref", config_map_ref)
        if label_selector is not None:
            pulumi.set(__self__, "label_selector", label_selector)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter(name="configMapRef")
    def config_map_ref(self) -> _builtins.str:
        """
        ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        """
        return pulumi.get(self, "config_map_ref")

    @_builtins.property
    @pulumi.getter(name="labelSelector")
    def label_selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector']:
        """
        Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        """
        return pulumi.get(self, "label_selector")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Resource name of the kind, group and version, defined in the `config_map_ref`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceLabelSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGit(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "pathParamPrefix":
            suggest = "path_param_prefix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGit. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGit.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGit.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 repo_url: _builtins.str,
                 directories: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitDirectory']] = None,
                 files: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitFile']] = None,
                 path_param_prefix: Optional[_builtins.str] = None,
                 revision: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplate'] = None):
        """
        :param _builtins.str repo_url: URL to the repository to use.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitDirectoryArgs'] directories: List of directories in the source repository to use when template the Application..
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitFileArgs'] files: List of files in the source repository to use when template the Application.
        :param _builtins.str path_param_prefix: Prefix for all path-related parameter names.
        :param _builtins.str revision: Revision of the source repository to use.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "repo_url", repo_url)
        if directories is not None:
            pulumi.set(__self__, "directories", directories)
        if files is not None:
            pulumi.set(__self__, "files", files)
        if path_param_prefix is not None:
            pulumi.set(__self__, "path_param_prefix", path_param_prefix)
        if revision is not None:
            pulumi.set(__self__, "revision", revision)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> _builtins.str:
        """
        URL to the repository to use.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter
    def directories(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitDirectory']]:
        """
        List of directories in the source repository to use when template the Application..
        """
        return pulumi.get(self, "directories")

    @_builtins.property
    @pulumi.getter
    def files(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitFile']]:
        """
        List of files in the source repository to use when template the Application.
        """
        return pulumi.get(self, "files")

    @_builtins.property
    @pulumi.getter(name="pathParamPrefix")
    def path_param_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix for all path-related parameter names.
        """
        return pulumi.get(self, "path_param_prefix")

    @_builtins.property
    @pulumi.getter
    def revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source repository to use.
        """
        return pulumi.get(self, "revision")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitDirectory(dict):
    def __init__(__self__, *,
                 path: _builtins.str,
                 exclude: Optional[_builtins.bool] = None):
        """
        :param _builtins.str path: Path in the repository.
        :param _builtins.bool exclude: Flag indicating whether or not the directory should be excluded when templating.
        """
        pulumi.set(__self__, "path", path)
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path in the repository.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.bool]:
        """
        Flag indicating whether or not the directory should be excluded when templating.
        """
        return pulumi.get(self, "exclude")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitFile(dict):
    def __init__(__self__, *,
                 path: _builtins.str):
        """
        :param _builtins.str path: Path to the file in the repository.
        """
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file in the repository.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorList(dict):
    def __init__(__self__, *,
                 elements: Sequence[Mapping[str, _builtins.str]],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplate'] = None):
        """
        :param Sequence[Mapping[str, _builtins.str]] elements: List of key/value pairs to pass as parameters into the template.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "elements", elements)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def elements(self) -> Sequence[Mapping[str, _builtins.str]]:
        """
        List of key/value pairs to pass as parameters into the template.
        """
        return pulumi.get(self, "elements")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServer'] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerArgs' bitbucket_server: Fetch pull requests from a repo hosted on a Bitbucket Server.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestFilterArgs'] filters: Filters allow selecting which pull requests to generate for.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGiteaArgs' gitea: Specify the repository from which to fetch the Gitea Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithubArgs' github: Specify the repository from which to fetch the GitHub Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlabArgs' gitlab: Specify the project from which to fetch the GitLab merge requests.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 30min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServer']:
        """
        Fetch pull requests from a repo hosted on a Bitbucket Server.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestFilter']]:
        """
        Filters allow selecting which pull requests to generate for.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitea']:
        """
        Specify the repository from which to fetch the Gitea Pull requests.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithub']:
        """
        Specify the repository from which to fetch the GitHub Pull requests.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlab']:
        """
        Specify the project from which to fetch the GitLab merge requests.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 30min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 repo: _builtins.str,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.str repo: Repo name to scan.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "repo", repo)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGiteaTokenRef'] = None):
        """
        :param _builtins.str api: The Gitea API URL to talk to.
        :param _builtins.str owner: Gitea org or user to scan.
        :param _builtins.str repo: Gitea repo name to scan.
        :param _builtins.bool insecure: Allow insecure tls, for self-signed certificates; default: false.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Gitea API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Gitea repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow insecure tls, for self-signed certificates; default: false.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithubTokenRef'] = None):
        """
        :param _builtins.str owner: GitHub org or user to scan.
        :param _builtins.str repo: GitHub repo name to scan.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret with permission to access pull requests.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        GitHub org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        GitHub repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret with permission to access pull requests.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "pullRequestState":
            suggest = "pull_request_state"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 project: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 pull_request_state: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlabTokenRef'] = None):
        """
        :param _builtins.str project: GitLab project to scan.
        :param _builtins.str api: The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param _builtins.str pull_request_state: additional MRs filter to get only those with a certain state. Default:  "" (all states).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "project", project)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if pull_request_state is not None:
            pulumi.set(__self__, "pull_request_state", pull_request_state)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        GitLab project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="pullRequestState")
    def pull_request_state(self) -> Optional[_builtins.str]:
        """
        additional MRs filter to get only those with a certain state. Default:  "" (all states).
        """
        return pulumi.get(self, "pull_request_state")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProvider(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "azureDevops":
            suggest = "azure_devops"
        elif key == "bitbucketCloud":
            suggest = "bitbucket_cloud"
        elif key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "cloneProtocol":
            suggest = "clone_protocol"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProvider. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProvider.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProvider.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 azure_devops: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevops'] = None,
                 bitbucket_cloud: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloud'] = None,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServer'] = None,
                 clone_protocol: Optional[_builtins.str] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevopsArgs' azure_devops: Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloudArgs' bitbucket_cloud: Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerArgs' bitbucket_server: Use the Bitbucket Server API (1.0) to scan repos in a project.
        :param _builtins.str clone_protocol: Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderFilterArgs'] filters: Filters for which repos should be considered.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGiteaArgs' gitea: Gitea mode uses the Gitea API to scan organizations in your instance.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithubArgs' github: Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabArgs' gitlab: Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if azure_devops is not None:
            pulumi.set(__self__, "azure_devops", azure_devops)
        if bitbucket_cloud is not None:
            pulumi.set(__self__, "bitbucket_cloud", bitbucket_cloud)
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if clone_protocol is not None:
            pulumi.set(__self__, "clone_protocol", clone_protocol)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="azureDevops")
    def azure_devops(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevops']:
        """
        Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        """
        return pulumi.get(self, "azure_devops")

    @_builtins.property
    @pulumi.getter(name="bitbucketCloud")
    def bitbucket_cloud(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloud']:
        """
        Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        """
        return pulumi.get(self, "bitbucket_cloud")

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServer']:
        """
        Use the Bitbucket Server API (1.0) to scan repos in a project.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter(name="cloneProtocol")
    def clone_protocol(self) -> Optional[_builtins.str]:
        """
        Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        """
        return pulumi.get(self, "clone_protocol")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderFilter']]:
        """
        Filters for which repos should be considered.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitea']:
        """
        Gitea mode uses the Gitea API to scan organizations in your instance.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithub']:
        """
        Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlab']:
        """
        Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevops(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "teamProject":
            suggest = "team_project"
        elif key == "accessTokenRef":
            suggest = "access_token_ref"
        elif key == "allBranches":
            suggest = "all_branches"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevops. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 team_project: _builtins.str,
                 access_token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef'] = None,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None):
        """
        :param _builtins.str organization: Azure Devops organization. E.g. "my-organization".
        :param _builtins.str team_project: Azure Devops team project. E.g. "my-team".
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRefArgs' access_token_ref: The Personal Access Token (PAT) to use when connecting.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        pulumi.set(__self__, "organization", organization)
        pulumi.set(__self__, "team_project", team_project)
        if access_token_ref is not None:
            pulumi.set(__self__, "access_token_ref", access_token_ref)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        Azure Devops organization. E.g. "my-organization".
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="teamProject")
    def team_project(self) -> _builtins.str:
        """
        Azure Devops team project. E.g. "my-team".
        """
        return pulumi.get(self, "team_project")

    @_builtins.property
    @pulumi.getter(name="accessTokenRef")
    def access_token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef']:
        """
        The Personal Access Token (PAT) to use when connecting.
        """
        return pulumi.get(self, "access_token_ref")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        return pulumi.get(self, "api")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloud(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appPasswordRef":
            suggest = "app_password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloud. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 user: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 app_password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef'] = None):
        """
        :param _builtins.str owner: Bitbucket workspace to scan.
        :param _builtins.str user: Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRefArgs' app_password_ref: The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "user", user)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if app_password_ref is not None:
            pulumi.set(__self__, "app_password_ref", app_password_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Bitbucket workspace to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def user(self) -> _builtins.str:
        """
        Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        """
        return pulumi.get(self, "user")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="appPasswordRef")
    def app_password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef']:
        """
        The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        return pulumi.get(self, "app_password_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"
        elif key == "labelMatch":
            suggest = "label_match"
        elif key == "pathsDoNotExists":
            suggest = "paths_do_not_exists"
        elif key == "pathsExists":
            suggest = "paths_exists"
        elif key == "repositoryMatch":
            suggest = "repository_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None,
                 label_match: Optional[_builtins.str] = None,
                 paths_do_not_exists: Optional[Sequence[_builtins.str]] = None,
                 paths_exists: Optional[Sequence[_builtins.str]] = None,
                 repository_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        :param _builtins.str label_match: A regex which must match at least one label.
        :param Sequence[_builtins.str] paths_do_not_exists: An array of paths, all of which must not exist.
        :param Sequence[_builtins.str] paths_exists: An array of paths, all of which must exist.
        :param _builtins.str repository_match: A regex for repo names.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)
        if label_match is not None:
            pulumi.set(__self__, "label_match", label_match)
        if paths_do_not_exists is not None:
            pulumi.set(__self__, "paths_do_not_exists", paths_do_not_exists)
        if paths_exists is not None:
            pulumi.set(__self__, "paths_exists", paths_exists)
        if repository_match is not None:
            pulumi.set(__self__, "repository_match", repository_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")

    @_builtins.property
    @pulumi.getter(name="labelMatch")
    def label_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match at least one label.
        """
        return pulumi.get(self, "label_match")

    @_builtins.property
    @pulumi.getter(name="pathsDoNotExists")
    def paths_do_not_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must not exist.
        """
        return pulumi.get(self, "paths_do_not_exists")

    @_builtins.property
    @pulumi.getter(name="pathsExists")
    def paths_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must exist.
        """
        return pulumi.get(self, "paths_exists")

    @_builtins.property
    @pulumi.getter(name="repositoryMatch")
    def repository_match(self) -> Optional[_builtins.str]:
        """
        A regex for repo names.
        """
        return pulumi.get(self, "repository_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGiteaTokenRef'] = None):
        """
        :param _builtins.str owner: Gitea organization or user to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        :param _builtins.bool insecure: Allow self-signed TLS / Certificates.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea organization or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow self-signed TLS / Certificates.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithubTokenRef'] = None):
        """
        :param _builtins.str organization: GitHub org to scan.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "organization", organization)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        GitHub org to scan.
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "caRef":
            suggest = "ca_ref"
        elif key == "includeSubgroups":
            suggest = "include_subgroups"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 ca_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabCaRef'] = None,
                 include_subgroups: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabTokenRef'] = None):
        """
        :param _builtins.str group: Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The Gitlab API URL to talk to.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabCaRefArgs' ca_ref: Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        :param _builtins.bool include_subgroups: Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "group", group)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if ca_ref is not None:
            pulumi.set(__self__, "ca_ref", ca_ref)
        if include_subgroups is not None:
            pulumi.set(__self__, "include_subgroups", include_subgroups)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def group(self) -> _builtins.str:
        """
        Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitlab API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="caRef")
    def ca_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabCaRef']:
        """
        Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        """
        return pulumi.get(self, "ca_ref")

    @_builtins.property
    @pulumi.getter(name="includeSubgroups")
    def include_subgroups(self) -> Optional[_builtins.bool]:
        """
        Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        """
        return pulumi.get(self, "include_subgroups")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabCaRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapName":
            suggest = "config_map_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabCaRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_name: _builtins.str,
                 key: _builtins.str):
        """
        :param _builtins.str config_map_name: Name of Kubernetes `ConfigMap`.
        :param _builtins.str key: Key containing information in Kubernetes `ConfigMap`.
        """
        pulumi.set(__self__, "config_map_name", config_map_name)
        pulumi.set(__self__, "key", key)

    @_builtins.property
    @pulumi.getter(name="configMapName")
    def config_map_name(self) -> _builtins.str:
        """
        Name of Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "config_map_name")

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "key")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixGeneratorSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMatrixTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMerge(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "mergeKeys":
            suggest = "merge_keys"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMerge. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMerge.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMerge.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 generators: Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGenerator'],
                 merge_keys: Sequence[_builtins.str],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplate'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorArgs'] generators: Child generator. Generators are responsible for generating parameters, which are then combined by the parent merge generator.
        :param Sequence[_builtins.str] merge_keys: Keys to merge into resulting parameter set.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "generators", generators)
        pulumi.set(__self__, "merge_keys", merge_keys)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def generators(self) -> Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGenerator']:
        """
        Child generator. Generators are responsible for generating parameters, which are then combined by the parent merge generator.
        """
        return pulumi.get(self, "generators")

    @_builtins.property
    @pulumi.getter(name="mergeKeys")
    def merge_keys(self) -> Sequence[_builtins.str]:
        """
        Keys to merge into resulting parameter set.
        """
        return pulumi.get(self, "merge_keys")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGenerator(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clusterDecisionResources":
            suggest = "cluster_decision_resources"
        elif key == "pullRequests":
            suggest = "pull_requests"
        elif key == "scmProviders":
            suggest = "scm_providers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGenerator. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGenerator.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGenerator.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cluster_decision_resources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResource']] = None,
                 clusters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorCluster']] = None,
                 gits: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGit']] = None,
                 lists: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorList']] = None,
                 pull_requests: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequest']] = None,
                 scm_providers: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProvider']] = None,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelector'] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceArgs'] cluster_decision_resources: The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterArgs'] clusters: The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitArgs'] gits: [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListArgs'] lists: [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestArgs'] pull_requests: [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderArgs'] scm_providers: [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelectorArgs' selector: The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        if cluster_decision_resources is not None:
            pulumi.set(__self__, "cluster_decision_resources", cluster_decision_resources)
        if clusters is not None:
            pulumi.set(__self__, "clusters", clusters)
        if gits is not None:
            pulumi.set(__self__, "gits", gits)
        if lists is not None:
            pulumi.set(__self__, "lists", lists)
        if pull_requests is not None:
            pulumi.set(__self__, "pull_requests", pull_requests)
        if scm_providers is not None:
            pulumi.set(__self__, "scm_providers", scm_providers)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)

    @_builtins.property
    @pulumi.getter(name="clusterDecisionResources")
    def cluster_decision_resources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResource']]:
        """
        The [cluster decision resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster-Decision-Resource/) generates a list of Argo CD clusters.
        """
        return pulumi.get(self, "cluster_decision_resources")

    @_builtins.property
    @pulumi.getter
    def clusters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorCluster']]:
        """
        The [cluster generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Cluster/) produces parameters based on the list of items found within the cluster secret.
        """
        return pulumi.get(self, "clusters")

    @_builtins.property
    @pulumi.getter
    def gits(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGit']]:
        """
        [Git generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) generates parameters using either the directory structure of a specified Git repository (directory generator), or, using the contents of JSON/YAML files found within a specified repository (file generator).
        """
        return pulumi.get(self, "gits")

    @_builtins.property
    @pulumi.getter
    def lists(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorList']]:
        """
        [List generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-List/) generate parameters based on an arbitrary list of key/value pairs (as long as the values are string values).
        """
        return pulumi.get(self, "lists")

    @_builtins.property
    @pulumi.getter(name="pullRequests")
    def pull_requests(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequest']]:
        """
        [Pull Request generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/) uses the API of an SCMaaS provider to automatically discover open pull requests within a repository.
        """
        return pulumi.get(self, "pull_requests")

    @_builtins.property
    @pulumi.getter(name="scmProviders")
    def scm_providers(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProvider']]:
        """
        [SCM Provider generators](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-SCM-Provider/) uses the API of an SCMaaS provider to automatically discover repositories within an organization.
        """
        return pulumi.get(self, "scm_providers")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelector']:
        """
        The Selector allows to post-filter based on generated values using the kubernetes common labelSelector format.
        """
        return pulumi.get(self, "selector")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorCluster(dict):
    def __init__(__self__, *,
                 enabled: _builtins.bool,
                 selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelector'] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.bool enabled: Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelectorArgs' selector: Label selector used to narrow the scope of targeted clusters.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        pulumi.set(__self__, "enabled", enabled)
        if selector is not None:
            pulumi.set(__self__, "selector", selector)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> _builtins.bool:
        """
        Boolean value defaulting to `true` to indicate that this block has been added thereby allowing all other attributes to be optional.
        """
        return pulumi.get(self, "enabled")

    @_builtins.property
    @pulumi.getter
    def selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelector']:
        """
        Label selector used to narrow the scope of targeted clusters.
        """
        return pulumi.get(self, "selector")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs to pass to the template via the values field of the cluster generator.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapRef":
            suggest = "config_map_ref"
        elif key == "labelSelector":
            suggest = "label_selector"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_ref: _builtins.str,
                 label_selector: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelector'] = None,
                 name: Optional[_builtins.str] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplate'] = None,
                 values: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.str config_map_ref: ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorArgs' label_selector: Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        :param _builtins.str name: Resource name of the kind, group and version, defined in the `config_map_ref`.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        :param Mapping[str, _builtins.str] values: Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        pulumi.set(__self__, "config_map_ref", config_map_ref)
        if label_selector is not None:
            pulumi.set(__self__, "label_selector", label_selector)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter(name="configMapRef")
    def config_map_ref(self) -> _builtins.str:
        """
        ConfigMap with the duck type definitions needed to retrieve the data this includes apiVersion(group/version), kind, matchKey and validation settings.
        """
        return pulumi.get(self, "config_map_ref")

    @_builtins.property
    @pulumi.getter(name="labelSelector")
    def label_selector(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelector']:
        """
        Label selector used to find the resource defined in the `config_map_ref`. Alternative to `name`.
        """
        return pulumi.get(self, "label_selector")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Resource name of the kind, group and version, defined in the `config_map_ref`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Arbitrary string key-value pairs which are passed directly as parameters to the template.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceLabelSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterDecisionResourceTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorClusterTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGit(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "pathParamPrefix":
            suggest = "path_param_prefix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGit. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGit.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGit.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 repo_url: _builtins.str,
                 directories: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitDirectory']] = None,
                 files: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitFile']] = None,
                 path_param_prefix: Optional[_builtins.str] = None,
                 revision: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplate'] = None):
        """
        :param _builtins.str repo_url: URL to the repository to use.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitDirectoryArgs'] directories: List of directories in the source repository to use when template the Application..
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitFileArgs'] files: List of files in the source repository to use when template the Application.
        :param _builtins.str path_param_prefix: Prefix for all path-related parameter names.
        :param _builtins.str revision: Revision of the source repository to use.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "repo_url", repo_url)
        if directories is not None:
            pulumi.set(__self__, "directories", directories)
        if files is not None:
            pulumi.set(__self__, "files", files)
        if path_param_prefix is not None:
            pulumi.set(__self__, "path_param_prefix", path_param_prefix)
        if revision is not None:
            pulumi.set(__self__, "revision", revision)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> _builtins.str:
        """
        URL to the repository to use.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter
    def directories(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitDirectory']]:
        """
        List of directories in the source repository to use when template the Application..
        """
        return pulumi.get(self, "directories")

    @_builtins.property
    @pulumi.getter
    def files(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitFile']]:
        """
        List of files in the source repository to use when template the Application.
        """
        return pulumi.get(self, "files")

    @_builtins.property
    @pulumi.getter(name="pathParamPrefix")
    def path_param_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix for all path-related parameter names.
        """
        return pulumi.get(self, "path_param_prefix")

    @_builtins.property
    @pulumi.getter
    def revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source repository to use.
        """
        return pulumi.get(self, "revision")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitDirectory(dict):
    def __init__(__self__, *,
                 path: _builtins.str,
                 exclude: Optional[_builtins.bool] = None):
        """
        :param _builtins.str path: Path in the repository.
        :param _builtins.bool exclude: Flag indicating whether or not the directory should be excluded when templating.
        """
        pulumi.set(__self__, "path", path)
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path in the repository.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.bool]:
        """
        Flag indicating whether or not the directory should be excluded when templating.
        """
        return pulumi.get(self, "exclude")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitFile(dict):
    def __init__(__self__, *,
                 path: _builtins.str):
        """
        :param _builtins.str path: Path to the file in the repository.
        """
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file in the repository.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorGitTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorList(dict):
    def __init__(__self__, *,
                 elements: Sequence[Mapping[str, _builtins.str]],
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplate'] = None):
        """
        :param Sequence[Mapping[str, _builtins.str]] elements: List of key/value pairs to pass as parameters into the template.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        pulumi.set(__self__, "elements", elements)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter
    def elements(self) -> Sequence[Mapping[str, _builtins.str]]:
        """
        List of key/value pairs to pass as parameters into the template.
        """
        return pulumi.get(self, "elements")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorListTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServer'] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerArgs' bitbucket_server: Fetch pull requests from a repo hosted on a Bitbucket Server.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestFilterArgs'] filters: Filters allow selecting which pull requests to generate for.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGiteaArgs' gitea: Specify the repository from which to fetch the Gitea Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithubArgs' github: Specify the repository from which to fetch the GitHub Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlabArgs' gitlab: Specify the project from which to fetch the GitLab merge requests.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 30min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServer']:
        """
        Fetch pull requests from a repo hosted on a Bitbucket Server.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestFilter']]:
        """
        Filters allow selecting which pull requests to generate for.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitea']:
        """
        Specify the repository from which to fetch the Gitea Pull requests.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithub']:
        """
        Specify the repository from which to fetch the GitHub Pull requests.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlab']:
        """
        Specify the project from which to fetch the GitLab merge requests.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 30min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 repo: _builtins.str,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.str repo: Repo name to scan.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "repo", repo)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGiteaTokenRef'] = None):
        """
        :param _builtins.str api: The Gitea API URL to talk to.
        :param _builtins.str owner: Gitea org or user to scan.
        :param _builtins.str repo: Gitea repo name to scan.
        :param _builtins.bool insecure: Allow insecure tls, for self-signed certificates; default: false.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Gitea API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Gitea repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow insecure tls, for self-signed certificates; default: false.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithubTokenRef'] = None):
        """
        :param _builtins.str owner: GitHub org or user to scan.
        :param _builtins.str repo: GitHub repo name to scan.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret with permission to access pull requests.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        GitHub org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        GitHub repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret with permission to access pull requests.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "pullRequestState":
            suggest = "pull_request_state"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 project: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 pull_request_state: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlabTokenRef'] = None):
        """
        :param _builtins.str project: GitLab project to scan.
        :param _builtins.str api: The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param _builtins.str pull_request_state: additional MRs filter to get only those with a certain state. Default:  "" (all states).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "project", project)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if pull_request_state is not None:
            pulumi.set(__self__, "pull_request_state", pull_request_state)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        GitLab project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="pullRequestState")
    def pull_request_state(self) -> Optional[_builtins.str]:
        """
        additional MRs filter to get only those with a certain state. Default:  "" (all states).
        """
        return pulumi.get(self, "pull_request_state")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProvider(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "azureDevops":
            suggest = "azure_devops"
        elif key == "bitbucketCloud":
            suggest = "bitbucket_cloud"
        elif key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "cloneProtocol":
            suggest = "clone_protocol"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProvider. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProvider.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProvider.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 azure_devops: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevops'] = None,
                 bitbucket_cloud: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloud'] = None,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServer'] = None,
                 clone_protocol: Optional[_builtins.str] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevopsArgs' azure_devops: Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloudArgs' bitbucket_cloud: Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerArgs' bitbucket_server: Use the Bitbucket Server API (1.0) to scan repos in a project.
        :param _builtins.str clone_protocol: Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderFilterArgs'] filters: Filters for which repos should be considered.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGiteaArgs' gitea: Gitea mode uses the Gitea API to scan organizations in your instance.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithubArgs' github: Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabArgs' gitlab: Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if azure_devops is not None:
            pulumi.set(__self__, "azure_devops", azure_devops)
        if bitbucket_cloud is not None:
            pulumi.set(__self__, "bitbucket_cloud", bitbucket_cloud)
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if clone_protocol is not None:
            pulumi.set(__self__, "clone_protocol", clone_protocol)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="azureDevops")
    def azure_devops(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevops']:
        """
        Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        """
        return pulumi.get(self, "azure_devops")

    @_builtins.property
    @pulumi.getter(name="bitbucketCloud")
    def bitbucket_cloud(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloud']:
        """
        Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        """
        return pulumi.get(self, "bitbucket_cloud")

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServer']:
        """
        Use the Bitbucket Server API (1.0) to scan repos in a project.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter(name="cloneProtocol")
    def clone_protocol(self) -> Optional[_builtins.str]:
        """
        Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        """
        return pulumi.get(self, "clone_protocol")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderFilter']]:
        """
        Filters for which repos should be considered.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitea']:
        """
        Gitea mode uses the Gitea API to scan organizations in your instance.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithub']:
        """
        Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlab']:
        """
        Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevops(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "teamProject":
            suggest = "team_project"
        elif key == "accessTokenRef":
            suggest = "access_token_ref"
        elif key == "allBranches":
            suggest = "all_branches"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevops. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 team_project: _builtins.str,
                 access_token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef'] = None,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None):
        """
        :param _builtins.str organization: Azure Devops organization. E.g. "my-organization".
        :param _builtins.str team_project: Azure Devops team project. E.g. "my-team".
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRefArgs' access_token_ref: The Personal Access Token (PAT) to use when connecting.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        pulumi.set(__self__, "organization", organization)
        pulumi.set(__self__, "team_project", team_project)
        if access_token_ref is not None:
            pulumi.set(__self__, "access_token_ref", access_token_ref)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        Azure Devops organization. E.g. "my-organization".
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="teamProject")
    def team_project(self) -> _builtins.str:
        """
        Azure Devops team project. E.g. "my-team".
        """
        return pulumi.get(self, "team_project")

    @_builtins.property
    @pulumi.getter(name="accessTokenRef")
    def access_token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef']:
        """
        The Personal Access Token (PAT) to use when connecting.
        """
        return pulumi.get(self, "access_token_ref")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        return pulumi.get(self, "api")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloud(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appPasswordRef":
            suggest = "app_password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloud. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 user: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 app_password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef'] = None):
        """
        :param _builtins.str owner: Bitbucket workspace to scan.
        :param _builtins.str user: Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRefArgs' app_password_ref: The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "user", user)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if app_password_ref is not None:
            pulumi.set(__self__, "app_password_ref", app_password_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Bitbucket workspace to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def user(self) -> _builtins.str:
        """
        Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        """
        return pulumi.get(self, "user")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="appPasswordRef")
    def app_password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef']:
        """
        The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        return pulumi.get(self, "app_password_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"
        elif key == "labelMatch":
            suggest = "label_match"
        elif key == "pathsDoNotExists":
            suggest = "paths_do_not_exists"
        elif key == "pathsExists":
            suggest = "paths_exists"
        elif key == "repositoryMatch":
            suggest = "repository_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None,
                 label_match: Optional[_builtins.str] = None,
                 paths_do_not_exists: Optional[Sequence[_builtins.str]] = None,
                 paths_exists: Optional[Sequence[_builtins.str]] = None,
                 repository_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        :param _builtins.str label_match: A regex which must match at least one label.
        :param Sequence[_builtins.str] paths_do_not_exists: An array of paths, all of which must not exist.
        :param Sequence[_builtins.str] paths_exists: An array of paths, all of which must exist.
        :param _builtins.str repository_match: A regex for repo names.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)
        if label_match is not None:
            pulumi.set(__self__, "label_match", label_match)
        if paths_do_not_exists is not None:
            pulumi.set(__self__, "paths_do_not_exists", paths_do_not_exists)
        if paths_exists is not None:
            pulumi.set(__self__, "paths_exists", paths_exists)
        if repository_match is not None:
            pulumi.set(__self__, "repository_match", repository_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")

    @_builtins.property
    @pulumi.getter(name="labelMatch")
    def label_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match at least one label.
        """
        return pulumi.get(self, "label_match")

    @_builtins.property
    @pulumi.getter(name="pathsDoNotExists")
    def paths_do_not_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must not exist.
        """
        return pulumi.get(self, "paths_do_not_exists")

    @_builtins.property
    @pulumi.getter(name="pathsExists")
    def paths_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must exist.
        """
        return pulumi.get(self, "paths_exists")

    @_builtins.property
    @pulumi.getter(name="repositoryMatch")
    def repository_match(self) -> Optional[_builtins.str]:
        """
        A regex for repo names.
        """
        return pulumi.get(self, "repository_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGiteaTokenRef'] = None):
        """
        :param _builtins.str owner: Gitea organization or user to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        :param _builtins.bool insecure: Allow self-signed TLS / Certificates.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea organization or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow self-signed TLS / Certificates.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithubTokenRef'] = None):
        """
        :param _builtins.str organization: GitHub org to scan.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "organization", organization)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        GitHub org to scan.
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "caRef":
            suggest = "ca_ref"
        elif key == "includeSubgroups":
            suggest = "include_subgroups"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 ca_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabCaRef'] = None,
                 include_subgroups: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabTokenRef'] = None):
        """
        :param _builtins.str group: Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The Gitlab API URL to talk to.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabCaRefArgs' ca_ref: Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        :param _builtins.bool include_subgroups: Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "group", group)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if ca_ref is not None:
            pulumi.set(__self__, "ca_ref", ca_ref)
        if include_subgroups is not None:
            pulumi.set(__self__, "include_subgroups", include_subgroups)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def group(self) -> _builtins.str:
        """
        Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitlab API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="caRef")
    def ca_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabCaRef']:
        """
        Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        """
        return pulumi.get(self, "ca_ref")

    @_builtins.property
    @pulumi.getter(name="includeSubgroups")
    def include_subgroups(self) -> Optional[_builtins.bool]:
        """
        Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        """
        return pulumi.get(self, "include_subgroups")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabCaRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapName":
            suggest = "config_map_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabCaRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_name: _builtins.str,
                 key: _builtins.str):
        """
        :param _builtins.str config_map_name: Name of Kubernetes `ConfigMap`.
        :param _builtins.str key: Key containing information in Kubernetes `ConfigMap`.
        """
        pulumi.set(__self__, "config_map_name", config_map_name)
        pulumi.set(__self__, "key", key)

    @_builtins.property
    @pulumi.getter(name="configMapName")
    def config_map_name(self) -> _builtins.str:
        """
        Name of Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "config_map_name")

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "key")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeGeneratorSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorMergeTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServer'] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerArgs' bitbucket_server: Fetch pull requests from a repo hosted on a Bitbucket Server.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestFilterArgs'] filters: Filters allow selecting which pull requests to generate for.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGiteaArgs' gitea: Specify the repository from which to fetch the Gitea Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithubArgs' github: Specify the repository from which to fetch the GitHub Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlabArgs' gitlab: Specify the project from which to fetch the GitLab merge requests.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 30min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServer']:
        """
        Fetch pull requests from a repo hosted on a Bitbucket Server.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestFilter']]:
        """
        Filters allow selecting which pull requests to generate for.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitea']:
        """
        Specify the repository from which to fetch the Gitea Pull requests.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithub']:
        """
        Specify the repository from which to fetch the GitHub Pull requests.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlab']:
        """
        Specify the project from which to fetch the GitLab merge requests.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 30min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 repo: _builtins.str,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.str repo: Repo name to scan.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "repo", repo)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGiteaTokenRef'] = None):
        """
        :param _builtins.str api: The Gitea API URL to talk to.
        :param _builtins.str owner: Gitea org or user to scan.
        :param _builtins.str repo: Gitea repo name to scan.
        :param _builtins.bool insecure: Allow insecure tls, for self-signed certificates; default: false.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Gitea API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Gitea repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow insecure tls, for self-signed certificates; default: false.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithubTokenRef'] = None):
        """
        :param _builtins.str owner: GitHub org or user to scan.
        :param _builtins.str repo: GitHub repo name to scan.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret with permission to access pull requests.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        GitHub org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        GitHub repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret with permission to access pull requests.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "pullRequestState":
            suggest = "pull_request_state"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 project: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 pull_request_state: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlabTokenRef'] = None):
        """
        :param _builtins.str project: GitLab project to scan.
        :param _builtins.str api: The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param _builtins.str pull_request_state: additional MRs filter to get only those with a certain state. Default:  "" (all states).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "project", project)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if pull_request_state is not None:
            pulumi.set(__self__, "pull_request_state", pull_request_state)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        GitLab project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="pullRequestState")
    def pull_request_state(self) -> Optional[_builtins.str]:
        """
        additional MRs filter to get only those with a certain state. Default:  "" (all states).
        """
        return pulumi.get(self, "pull_request_state")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProvider(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "azureDevops":
            suggest = "azure_devops"
        elif key == "bitbucketCloud":
            suggest = "bitbucket_cloud"
        elif key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "cloneProtocol":
            suggest = "clone_protocol"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProvider. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProvider.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProvider.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 azure_devops: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevops'] = None,
                 bitbucket_cloud: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloud'] = None,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServer'] = None,
                 clone_protocol: Optional[_builtins.str] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevopsArgs' azure_devops: Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloudArgs' bitbucket_cloud: Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerArgs' bitbucket_server: Use the Bitbucket Server API (1.0) to scan repos in a project.
        :param _builtins.str clone_protocol: Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderFilterArgs'] filters: Filters for which repos should be considered.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGiteaArgs' gitea: Gitea mode uses the Gitea API to scan organizations in your instance.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithubArgs' github: Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabArgs' gitlab: Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if azure_devops is not None:
            pulumi.set(__self__, "azure_devops", azure_devops)
        if bitbucket_cloud is not None:
            pulumi.set(__self__, "bitbucket_cloud", bitbucket_cloud)
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if clone_protocol is not None:
            pulumi.set(__self__, "clone_protocol", clone_protocol)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="azureDevops")
    def azure_devops(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevops']:
        """
        Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        """
        return pulumi.get(self, "azure_devops")

    @_builtins.property
    @pulumi.getter(name="bitbucketCloud")
    def bitbucket_cloud(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloud']:
        """
        Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        """
        return pulumi.get(self, "bitbucket_cloud")

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServer']:
        """
        Use the Bitbucket Server API (1.0) to scan repos in a project.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter(name="cloneProtocol")
    def clone_protocol(self) -> Optional[_builtins.str]:
        """
        Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        """
        return pulumi.get(self, "clone_protocol")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderFilter']]:
        """
        Filters for which repos should be considered.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitea']:
        """
        Gitea mode uses the Gitea API to scan organizations in your instance.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithub']:
        """
        Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlab']:
        """
        Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevops(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "teamProject":
            suggest = "team_project"
        elif key == "accessTokenRef":
            suggest = "access_token_ref"
        elif key == "allBranches":
            suggest = "all_branches"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevops. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 team_project: _builtins.str,
                 access_token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef'] = None,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None):
        """
        :param _builtins.str organization: Azure Devops organization. E.g. "my-organization".
        :param _builtins.str team_project: Azure Devops team project. E.g. "my-team".
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRefArgs' access_token_ref: The Personal Access Token (PAT) to use when connecting.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        pulumi.set(__self__, "organization", organization)
        pulumi.set(__self__, "team_project", team_project)
        if access_token_ref is not None:
            pulumi.set(__self__, "access_token_ref", access_token_ref)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        Azure Devops organization. E.g. "my-organization".
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="teamProject")
    def team_project(self) -> _builtins.str:
        """
        Azure Devops team project. E.g. "my-team".
        """
        return pulumi.get(self, "team_project")

    @_builtins.property
    @pulumi.getter(name="accessTokenRef")
    def access_token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef']:
        """
        The Personal Access Token (PAT) to use when connecting.
        """
        return pulumi.get(self, "access_token_ref")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        return pulumi.get(self, "api")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloud(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appPasswordRef":
            suggest = "app_password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloud. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 user: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 app_password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef'] = None):
        """
        :param _builtins.str owner: Bitbucket workspace to scan.
        :param _builtins.str user: Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRefArgs' app_password_ref: The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "user", user)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if app_password_ref is not None:
            pulumi.set(__self__, "app_password_ref", app_password_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Bitbucket workspace to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def user(self) -> _builtins.str:
        """
        Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        """
        return pulumi.get(self, "user")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="appPasswordRef")
    def app_password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef']:
        """
        The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        return pulumi.get(self, "app_password_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"
        elif key == "labelMatch":
            suggest = "label_match"
        elif key == "pathsDoNotExists":
            suggest = "paths_do_not_exists"
        elif key == "pathsExists":
            suggest = "paths_exists"
        elif key == "repositoryMatch":
            suggest = "repository_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None,
                 label_match: Optional[_builtins.str] = None,
                 paths_do_not_exists: Optional[Sequence[_builtins.str]] = None,
                 paths_exists: Optional[Sequence[_builtins.str]] = None,
                 repository_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        :param _builtins.str label_match: A regex which must match at least one label.
        :param Sequence[_builtins.str] paths_do_not_exists: An array of paths, all of which must not exist.
        :param Sequence[_builtins.str] paths_exists: An array of paths, all of which must exist.
        :param _builtins.str repository_match: A regex for repo names.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)
        if label_match is not None:
            pulumi.set(__self__, "label_match", label_match)
        if paths_do_not_exists is not None:
            pulumi.set(__self__, "paths_do_not_exists", paths_do_not_exists)
        if paths_exists is not None:
            pulumi.set(__self__, "paths_exists", paths_exists)
        if repository_match is not None:
            pulumi.set(__self__, "repository_match", repository_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")

    @_builtins.property
    @pulumi.getter(name="labelMatch")
    def label_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match at least one label.
        """
        return pulumi.get(self, "label_match")

    @_builtins.property
    @pulumi.getter(name="pathsDoNotExists")
    def paths_do_not_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must not exist.
        """
        return pulumi.get(self, "paths_do_not_exists")

    @_builtins.property
    @pulumi.getter(name="pathsExists")
    def paths_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must exist.
        """
        return pulumi.get(self, "paths_exists")

    @_builtins.property
    @pulumi.getter(name="repositoryMatch")
    def repository_match(self) -> Optional[_builtins.str]:
        """
        A regex for repo names.
        """
        return pulumi.get(self, "repository_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGiteaTokenRef'] = None):
        """
        :param _builtins.str owner: Gitea organization or user to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        :param _builtins.bool insecure: Allow self-signed TLS / Certificates.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea organization or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow self-signed TLS / Certificates.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithubTokenRef'] = None):
        """
        :param _builtins.str organization: GitHub org to scan.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "organization", organization)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        GitHub org to scan.
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "caRef":
            suggest = "ca_ref"
        elif key == "includeSubgroups":
            suggest = "include_subgroups"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 ca_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabCaRef'] = None,
                 include_subgroups: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabTokenRef'] = None):
        """
        :param _builtins.str group: Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The Gitlab API URL to talk to.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabCaRefArgs' ca_ref: Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        :param _builtins.bool include_subgroups: Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "group", group)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if ca_ref is not None:
            pulumi.set(__self__, "ca_ref", ca_ref)
        if include_subgroups is not None:
            pulumi.set(__self__, "include_subgroups", include_subgroups)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def group(self) -> _builtins.str:
        """
        Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitlab API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="caRef")
    def ca_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabCaRef']:
        """
        Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        """
        return pulumi.get(self, "ca_ref")

    @_builtins.property
    @pulumi.getter(name="includeSubgroups")
    def include_subgroups(self) -> Optional[_builtins.bool]:
        """
        Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        """
        return pulumi.get(self, "include_subgroups")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabCaRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapName":
            suggest = "config_map_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabCaRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_name: _builtins.str,
                 key: _builtins.str):
        """
        :param _builtins.str config_map_name: Name of Kubernetes `ConfigMap`.
        :param _builtins.str key: Key containing information in Kubernetes `ConfigMap`.
        """
        pulumi.set(__self__, "config_map_name", config_map_name)
        pulumi.set(__self__, "key", key)

    @_builtins.property
    @pulumi.getter(name="configMapName")
    def config_map_name(self) -> _builtins.str:
        """
        Name of Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "config_map_name")

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "key")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeGeneratorSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorMergeTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServer'] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerArgs' bitbucket_server: Fetch pull requests from a repo hosted on a Bitbucket Server.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorPullRequestFilterArgs'] filters: Filters allow selecting which pull requests to generate for.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGiteaArgs' gitea: Specify the repository from which to fetch the Gitea Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithubArgs' github: Specify the repository from which to fetch the GitHub Pull requests.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlabArgs' gitlab: Specify the project from which to fetch the GitLab merge requests.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 30min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServer']:
        """
        Fetch pull requests from a repo hosted on a Bitbucket Server.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestFilter']]:
        """
        Filters allow selecting which pull requests to generate for.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitea']:
        """
        Specify the repository from which to fetch the Gitea Pull requests.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithub']:
        """
        Specify the repository from which to fetch the GitHub Pull requests.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlab']:
        """
        Specify the project from which to fetch the GitLab merge requests.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 30min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 repo: _builtins.str,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.str repo: Repo name to scan.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "repo", repo)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGiteaTokenRef'] = None):
        """
        :param _builtins.str api: The Gitea API URL to talk to.
        :param _builtins.str owner: Gitea org or user to scan.
        :param _builtins.str repo: Gitea repo name to scan.
        :param _builtins.bool insecure: Allow insecure tls, for self-signed certificates; default: false.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Gitea API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        Gitea repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow insecure tls, for self-signed certificates; default: false.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 repo: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithubTokenRef'] = None):
        """
        :param _builtins.str owner: GitHub org or user to scan.
        :param _builtins.str repo: GitHub repo name to scan.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret with permission to access pull requests.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "repo", repo)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        GitHub org or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        GitHub repo name to scan.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret with permission to access pull requests.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "pullRequestState":
            suggest = "pull_request_state"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 project: _builtins.str,
                 api: Optional[_builtins.str] = None,
                 labels: Optional[Sequence[_builtins.str]] = None,
                 pull_request_state: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlabTokenRef'] = None):
        """
        :param _builtins.str project: GitLab project to scan.
        :param _builtins.str api: The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        :param Sequence[_builtins.str] labels: Labels is used to filter the PRs that you want to target.
        :param _builtins.str pull_request_state: additional MRs filter to get only those with a certain state. Default:  "" (all states).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "project", project)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if pull_request_state is not None:
            pulumi.set(__self__, "pull_request_state", pull_request_state)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        GitLab project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Sequence[_builtins.str]]:
        """
        Labels is used to filter the PRs that you want to target.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter(name="pullRequestState")
    def pull_request_state(self) -> Optional[_builtins.str]:
        """
        additional MRs filter to get only those with a certain state. Default:  "" (all states).
        """
        return pulumi.get(self, "pull_request_state")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorPullRequestTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProvider(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "azureDevops":
            suggest = "azure_devops"
        elif key == "bitbucketCloud":
            suggest = "bitbucket_cloud"
        elif key == "bitbucketServer":
            suggest = "bitbucket_server"
        elif key == "cloneProtocol":
            suggest = "clone_protocol"
        elif key == "requeueAfterSeconds":
            suggest = "requeue_after_seconds"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProvider. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProvider.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProvider.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 azure_devops: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevops'] = None,
                 bitbucket_cloud: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloud'] = None,
                 bitbucket_server: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServer'] = None,
                 clone_protocol: Optional[_builtins.str] = None,
                 filters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderFilter']] = None,
                 gitea: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitea'] = None,
                 github: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithub'] = None,
                 gitlab: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlab'] = None,
                 requeue_after_seconds: Optional[_builtins.str] = None,
                 template: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplate'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevopsArgs' azure_devops: Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloudArgs' bitbucket_cloud: Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerArgs' bitbucket_server: Use the Bitbucket Server API (1.0) to scan repos in a project.
        :param _builtins.str clone_protocol: Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorScmProviderFilterArgs'] filters: Filters for which repos should be considered.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGiteaArgs' gitea: Gitea mode uses the Gitea API to scan organizations in your instance.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithubArgs' github: Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabArgs' gitlab: Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        :param _builtins.str requeue_after_seconds: How often to check for changes (in seconds). Default: 3min.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateArgs' template: Generator template. Used to override the values of the spec-level template.
        """
        if azure_devops is not None:
            pulumi.set(__self__, "azure_devops", azure_devops)
        if bitbucket_cloud is not None:
            pulumi.set(__self__, "bitbucket_cloud", bitbucket_cloud)
        if bitbucket_server is not None:
            pulumi.set(__self__, "bitbucket_server", bitbucket_server)
        if clone_protocol is not None:
            pulumi.set(__self__, "clone_protocol", clone_protocol)
        if filters is not None:
            pulumi.set(__self__, "filters", filters)
        if gitea is not None:
            pulumi.set(__self__, "gitea", gitea)
        if github is not None:
            pulumi.set(__self__, "github", github)
        if gitlab is not None:
            pulumi.set(__self__, "gitlab", gitlab)
        if requeue_after_seconds is not None:
            pulumi.set(__self__, "requeue_after_seconds", requeue_after_seconds)
        if template is not None:
            pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="azureDevops")
    def azure_devops(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevops']:
        """
        Uses the Azure DevOps API to look up eligible repositories based on a team project within an Azure DevOps organization.
        """
        return pulumi.get(self, "azure_devops")

    @_builtins.property
    @pulumi.getter(name="bitbucketCloud")
    def bitbucket_cloud(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloud']:
        """
        Uses the Bitbucket API V2 to scan a workspace in bitbucket.org.
        """
        return pulumi.get(self, "bitbucket_cloud")

    @_builtins.property
    @pulumi.getter(name="bitbucketServer")
    def bitbucket_server(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServer']:
        """
        Use the Bitbucket Server API (1.0) to scan repos in a project.
        """
        return pulumi.get(self, "bitbucket_server")

    @_builtins.property
    @pulumi.getter(name="cloneProtocol")
    def clone_protocol(self) -> Optional[_builtins.str]:
        """
        Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers necessarily support all protocols.
        """
        return pulumi.get(self, "clone_protocol")

    @_builtins.property
    @pulumi.getter
    def filters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderFilter']]:
        """
        Filters for which repos should be considered.
        """
        return pulumi.get(self, "filters")

    @_builtins.property
    @pulumi.getter
    def gitea(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitea']:
        """
        Gitea mode uses the Gitea API to scan organizations in your instance.
        """
        return pulumi.get(self, "gitea")

    @_builtins.property
    @pulumi.getter
    def github(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithub']:
        """
        Uses the GitHub API to scan an organization in either github.com or GitHub Enterprise.
        """
        return pulumi.get(self, "github")

    @_builtins.property
    @pulumi.getter
    def gitlab(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlab']:
        """
        Uses the GitLab API to scan and organization in either gitlab.com or self-hosted GitLab.
        """
        return pulumi.get(self, "gitlab")

    @_builtins.property
    @pulumi.getter(name="requeueAfterSeconds")
    def requeue_after_seconds(self) -> Optional[_builtins.str]:
        """
        How often to check for changes (in seconds). Default: 3min.
        """
        return pulumi.get(self, "requeue_after_seconds")

    @_builtins.property
    @pulumi.getter
    def template(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplate']:
        """
        Generator template. Used to override the values of the spec-level template.
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevops(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "teamProject":
            suggest = "team_project"
        elif key == "accessTokenRef":
            suggest = "access_token_ref"
        elif key == "allBranches":
            suggest = "all_branches"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevops. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevops.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 team_project: _builtins.str,
                 access_token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevopsAccessTokenRef'] = None,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None):
        """
        :param _builtins.str organization: Azure Devops organization. E.g. "my-organization".
        :param _builtins.str team_project: Azure Devops team project. E.g. "my-team".
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevopsAccessTokenRefArgs' access_token_ref: The Personal Access Token (PAT) to use when connecting.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        pulumi.set(__self__, "organization", organization)
        pulumi.set(__self__, "team_project", team_project)
        if access_token_ref is not None:
            pulumi.set(__self__, "access_token_ref", access_token_ref)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        Azure Devops organization. E.g. "my-organization".
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="teamProject")
    def team_project(self) -> _builtins.str:
        """
        Azure Devops team project. E.g. "my-team".
        """
        return pulumi.get(self, "team_project")

    @_builtins.property
    @pulumi.getter(name="accessTokenRef")
    def access_token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevopsAccessTokenRef']:
        """
        The Personal Access Token (PAT) to use when connecting.
        """
        return pulumi.get(self, "access_token_ref")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The URL to Azure DevOps. Defaults to https://dev.azure.com.
        """
        return pulumi.get(self, "api")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevopsAccessTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevopsAccessTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderAzureDevopsAccessTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloud(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appPasswordRef":
            suggest = "app_password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloud. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloud.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 user: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 app_password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloudAppPasswordRef'] = None):
        """
        :param _builtins.str owner: Bitbucket workspace to scan.
        :param _builtins.str user: Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloudAppPasswordRefArgs' app_password_ref: The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        pulumi.set(__self__, "owner", owner)
        pulumi.set(__self__, "user", user)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if app_password_ref is not None:
            pulumi.set(__self__, "app_password_ref", app_password_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Bitbucket workspace to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter
    def user(self) -> _builtins.str:
        """
        Bitbucket user to use when authenticating. Should have a "member" role to be able to read all repositories and branches.
        """
        return pulumi.get(self, "user")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="appPasswordRef")
    def app_password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloudAppPasswordRef']:
        """
        The app password to use for the user. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/.
        """
        return pulumi.get(self, "app_password_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloudAppPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloudAppPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketCloudAppPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServer(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "basicAuth":
            suggest = "basic_auth"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServer. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServer.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api: _builtins.str,
                 project: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 basic_auth: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuth'] = None):
        """
        :param _builtins.str api: The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        :param _builtins.str project: Project to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuthArgs' basic_auth: Credentials for Basic auth.
        """
        pulumi.set(__self__, "api", api)
        pulumi.set(__self__, "project", project)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if basic_auth is not None:
            pulumi.set(__self__, "basic_auth", basic_auth)

    @_builtins.property
    @pulumi.getter
    def api(self) -> _builtins.str:
        """
        The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project to scan.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter(name="basicAuth")
    def basic_auth(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuth']:
        """
        Credentials for Basic auth.
        """
        return pulumi.get(self, "basic_auth")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuthPasswordRef'] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuthPasswordRefArgs' password_ref: Password (or personal access token) reference.
        :param _builtins.str username: Username for Basic auth.
        """
        if password_ref is not None:
            pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuthPasswordRef']:
        """
        Password (or personal access token) reference.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for Basic auth.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuthPasswordRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuthPasswordRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderBitbucketServerBasicAuthPasswordRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchMatch":
            suggest = "branch_match"
        elif key == "labelMatch":
            suggest = "label_match"
        elif key == "pathsDoNotExists":
            suggest = "paths_do_not_exists"
        elif key == "pathsExists":
            suggest = "paths_exists"
        elif key == "repositoryMatch":
            suggest = "repository_match"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_match: Optional[_builtins.str] = None,
                 label_match: Optional[_builtins.str] = None,
                 paths_do_not_exists: Optional[Sequence[_builtins.str]] = None,
                 paths_exists: Optional[Sequence[_builtins.str]] = None,
                 repository_match: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_match: A regex which must match the branch name.
        :param _builtins.str label_match: A regex which must match at least one label.
        :param Sequence[_builtins.str] paths_do_not_exists: An array of paths, all of which must not exist.
        :param Sequence[_builtins.str] paths_exists: An array of paths, all of which must exist.
        :param _builtins.str repository_match: A regex for repo names.
        """
        if branch_match is not None:
            pulumi.set(__self__, "branch_match", branch_match)
        if label_match is not None:
            pulumi.set(__self__, "label_match", label_match)
        if paths_do_not_exists is not None:
            pulumi.set(__self__, "paths_do_not_exists", paths_do_not_exists)
        if paths_exists is not None:
            pulumi.set(__self__, "paths_exists", paths_exists)
        if repository_match is not None:
            pulumi.set(__self__, "repository_match", repository_match)

    @_builtins.property
    @pulumi.getter(name="branchMatch")
    def branch_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match the branch name.
        """
        return pulumi.get(self, "branch_match")

    @_builtins.property
    @pulumi.getter(name="labelMatch")
    def label_match(self) -> Optional[_builtins.str]:
        """
        A regex which must match at least one label.
        """
        return pulumi.get(self, "label_match")

    @_builtins.property
    @pulumi.getter(name="pathsDoNotExists")
    def paths_do_not_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must not exist.
        """
        return pulumi.get(self, "paths_do_not_exists")

    @_builtins.property
    @pulumi.getter(name="pathsExists")
    def paths_exists(self) -> Optional[Sequence[_builtins.str]]:
        """
        An array of paths, all of which must exist.
        """
        return pulumi.get(self, "paths_exists")

    @_builtins.property
    @pulumi.getter(name="repositoryMatch")
    def repository_match(self) -> Optional[_builtins.str]:
        """
        A regex for repo names.
        """
        return pulumi.get(self, "repository_match")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitea(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitea. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitea.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitea.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 owner: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 insecure: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGiteaTokenRef'] = None):
        """
        :param _builtins.str owner: Gitea organization or user to scan.
        :param _builtins.bool all_branches: Scan all branches instead of just the default branch.
        :param _builtins.str api: The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        :param _builtins.bool insecure: Allow self-signed TLS / Certificates.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGiteaTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "owner", owner)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def owner(self) -> _builtins.str:
        """
        Gitea organization or user to scan.
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        Scan all branches instead of just the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitea URL to talk to. For example https://gitea.mydomain.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Allow self-signed TLS / Certificates.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGiteaTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGiteaTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGiteaTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGiteaTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithub(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "appSecretName":
            suggest = "app_secret_name"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithub. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithub.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithub.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 organization: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 app_secret_name: Optional[_builtins.str] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithubTokenRef'] = None):
        """
        :param _builtins.str organization: GitHub org to scan.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The GitHub API URL to talk to. Default https://api.github.com/.
        :param _builtins.str app_secret_name: Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithubTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "organization", organization)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if app_secret_name is not None:
            pulumi.set(__self__, "app_secret_name", app_secret_name)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def organization(self) -> _builtins.str:
        """
        GitHub org to scan.
        """
        return pulumi.get(self, "organization")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The GitHub API URL to talk to. Default https://api.github.com/.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="appSecretName")
    def app_secret_name(self) -> Optional[_builtins.str]:
        """
        Reference to a GitHub App repo-creds secret. Uses a GitHub App to access the API instead of a PAT.
        """
        return pulumi.get(self, "app_secret_name")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithubTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithubTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithubTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGithubTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlab(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allBranches":
            suggest = "all_branches"
        elif key == "caRef":
            suggest = "ca_ref"
        elif key == "includeSubgroups":
            suggest = "include_subgroups"
        elif key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlab. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlab.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlab.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: _builtins.str,
                 all_branches: Optional[_builtins.bool] = None,
                 api: Optional[_builtins.str] = None,
                 ca_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabCaRef'] = None,
                 include_subgroups: Optional[_builtins.bool] = None,
                 token_ref: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabTokenRef'] = None):
        """
        :param _builtins.str group: Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        :param _builtins.bool all_branches: If true, scan every branch of every repository. If false, scan only the default branch.
        :param _builtins.str api: The Gitlab API URL to talk to.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabCaRefArgs' ca_ref: Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        :param _builtins.bool include_subgroups: Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabTokenRefArgs' token_ref: Authentication token reference.
        """
        pulumi.set(__self__, "group", group)
        if all_branches is not None:
            pulumi.set(__self__, "all_branches", all_branches)
        if api is not None:
            pulumi.set(__self__, "api", api)
        if ca_ref is not None:
            pulumi.set(__self__, "ca_ref", ca_ref)
        if include_subgroups is not None:
            pulumi.set(__self__, "include_subgroups", include_subgroups)
        if token_ref is not None:
            pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter
    def group(self) -> _builtins.str:
        """
        Gitlab group to scan. You can use either the project id (recommended) or the full namespaced path.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="allBranches")
    def all_branches(self) -> Optional[_builtins.bool]:
        """
        If true, scan every branch of every repository. If false, scan only the default branch.
        """
        return pulumi.get(self, "all_branches")

    @_builtins.property
    @pulumi.getter
    def api(self) -> Optional[_builtins.str]:
        """
        The Gitlab API URL to talk to.
        """
        return pulumi.get(self, "api")

    @_builtins.property
    @pulumi.getter(name="caRef")
    def ca_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabCaRef']:
        """
        Reference to a ConfigMap containing a CA certificate for self-signed GitLab instances.
        """
        return pulumi.get(self, "ca_ref")

    @_builtins.property
    @pulumi.getter(name="includeSubgroups")
    def include_subgroups(self) -> Optional[_builtins.bool]:
        """
        Recurse through subgroups (true) or scan only the base group (false). Defaults to `false`.
        """
        return pulumi.get(self, "include_subgroups")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabTokenRef']:
        """
        Authentication token reference.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabCaRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "configMapName":
            suggest = "config_map_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabCaRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabCaRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 config_map_name: _builtins.str,
                 key: _builtins.str):
        """
        :param _builtins.str config_map_name: Name of Kubernetes `ConfigMap`.
        :param _builtins.str key: Key containing information in Kubernetes `ConfigMap`.
        """
        pulumi.set(__self__, "config_map_name", config_map_name)
        pulumi.set(__self__, "key", key)

    @_builtins.property
    @pulumi.getter(name="configMapName")
    def config_map_name(self) -> _builtins.str:
        """
        Name of Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "config_map_name")

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `ConfigMap`.
        """
        return pulumi.get(self, "key")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabTokenRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "secretName":
            suggest = "secret_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabTokenRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderGitlabTokenRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 secret_name: _builtins.str):
        """
        :param _builtins.str key: Key containing information in Kubernetes `Secret`.
        :param _builtins.str secret_name: Name of Kubernetes `Secret`.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "secret_name", secret_name)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key containing information in Kubernetes `Secret`.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="secretName")
    def secret_name(self) -> _builtins.str:
        """
        Name of Kubernetes `Secret`.
        """
        return pulumi.get(self, "secret_name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplate(dict):
    def __init__(__self__, *,
                 metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateMetadata'] = None,
                 spec: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpec'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecArgs' spec: The application specification.
        """
        if metadata is not None:
            pulumi.set(__self__, "metadata", metadata)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateMetadata']:
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpec']:
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str name: Name of the resulting Application
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecDestination'] = None,
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSource']] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        if destination is not None:
            pulumi.set(__self__, "destination", destination)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecDestination']:
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorScmProviderTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorSelector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "matchLabels":
            suggest = "match_labels"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecGeneratorSelector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorSelector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecGeneratorSelector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorSelectorMatchExpression']] = None,
                 match_labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecGeneratorSelectorMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param Mapping[str, _builtins.str] match_labels: A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if match_labels is not None:
            pulumi.set(__self__, "match_labels", match_labels)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecGeneratorSelectorMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="matchLabels")
    def match_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        A map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of `match_expressions`, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
        """
        return pulumi.get(self, "match_labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecGeneratorSelectorMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecIgnoreApplicationDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecIgnoreApplicationDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecIgnoreApplicationDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecIgnoreApplicationDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence[_builtins.str] jq_path_expressions: jq path to ignore differences
        :param Sequence[_builtins.str] json_pointers: Json pointers to ignore differences
        :param _builtins.str name: name
        """
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        jq path to ignore differences
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        Json pointers to ignore differences
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        name
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecStrategy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "rollingSyncs":
            suggest = "rolling_syncs"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecStrategy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecStrategy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecStrategy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: _builtins.str,
                 rolling_syncs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecStrategyRollingSync']] = None):
        """
        :param _builtins.str type: Type of progressive sync.
        :param Sequence['GitopsApplicationsetApplicationsetSpecStrategyRollingSyncArgs'] rolling_syncs: Strategy allowing you to group Applications by labels present on the generated Application resources. When the ApplicationSet changes, the changes will be applied to each group of Application resources sequentially.
        """
        pulumi.set(__self__, "type", type)
        if rolling_syncs is not None:
            pulumi.set(__self__, "rolling_syncs", rolling_syncs)

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of progressive sync.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter(name="rollingSyncs")
    def rolling_syncs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecStrategyRollingSync']]:
        """
        Strategy allowing you to group Applications by labels present on the generated Application resources. When the ApplicationSet changes, the changes will be applied to each group of Application resources sequentially.
        """
        return pulumi.get(self, "rolling_syncs")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecStrategyRollingSync(dict):
    def __init__(__self__, *,
                 steps: Sequence['outputs.GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStep']):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStepArgs'] steps: Configuration used to define which applications to include in each stage of the rolling sync. All Applications in each group must become Healthy before the ApplicationSet controller will proceed to update the next group of Applications.
        """
        pulumi.set(__self__, "steps", steps)

    @_builtins.property
    @pulumi.getter
    def steps(self) -> Sequence['outputs.GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStep']:
        """
        Configuration used to define which applications to include in each stage of the rolling sync. All Applications in each group must become Healthy before the ApplicationSet controller will proceed to update the next group of Applications.
        """
        return pulumi.get(self, "steps")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStep(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "matchExpressions":
            suggest = "match_expressions"
        elif key == "maxUpdate":
            suggest = "max_update"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStep. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStep.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStep.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 match_expressions: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStepMatchExpression']] = None,
                 max_update: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStepMatchExpressionArgs'] match_expressions: A list of label selector requirements. The requirements are ANDed.
        :param _builtins.str max_update: Maximum number of simultaneous Application updates in a group. Supports both integer and percentage string values (rounds down, but floored at 1 Application for >0%). Default is 100%, unbounded.
        """
        if match_expressions is not None:
            pulumi.set(__self__, "match_expressions", match_expressions)
        if max_update is not None:
            pulumi.set(__self__, "max_update", max_update)

    @_builtins.property
    @pulumi.getter(name="matchExpressions")
    def match_expressions(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStepMatchExpression']]:
        """
        A list of label selector requirements. The requirements are ANDed.
        """
        return pulumi.get(self, "match_expressions")

    @_builtins.property
    @pulumi.getter(name="maxUpdate")
    def max_update(self) -> Optional[_builtins.str]:
        """
        Maximum number of simultaneous Application updates in a group. Supports both integer and percentage string values (rounds down, but floored at 1 Application for >0%). Default is 100%, unbounded.
        """
        return pulumi.get(self, "max_update")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecStrategyRollingSyncStepMatchExpression(dict):
    def __init__(__self__, *,
                 key: Optional[_builtins.str] = None,
                 operator: Optional[_builtins.str] = None,
                 values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str key: The label key that the selector applies to.
        :param _builtins.str operator: A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        :param Sequence[_builtins.str] values: 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.
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if operator is not None:
            pulumi.set(__self__, "operator", operator)
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def key(self) -> Optional[_builtins.str]:
        """
        The label key that the selector applies to.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def operator(self) -> Optional[_builtins.str]:
        """
        A key's relationship to a set of values. Valid operators ard `In`, `NotIn`, `Exists` and `DoesNotExist`.
        """
        return pulumi.get(self, "operator")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence[_builtins.str]]:
        """
        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.
        """
        return pulumi.get(self, "values")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "applicationsSync":
            suggest = "applications_sync"
        elif key == "preserveResourcesOnDeletion":
            suggest = "preserve_resources_on_deletion"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 applications_sync: Optional[_builtins.str] = None,
                 preserve_resources_on_deletion: Optional[_builtins.bool] = None):
        """
        :param _builtins.str applications_sync: Represents the policy applied on the generated applications. Possible values are create-only, create-update, create-delete, and sync.
        :param _builtins.bool preserve_resources_on_deletion: Label selector used to narrow the scope of targeted clusters.
        """
        if applications_sync is not None:
            pulumi.set(__self__, "applications_sync", applications_sync)
        if preserve_resources_on_deletion is not None:
            pulumi.set(__self__, "preserve_resources_on_deletion", preserve_resources_on_deletion)

    @_builtins.property
    @pulumi.getter(name="applicationsSync")
    def applications_sync(self) -> Optional[_builtins.str]:
        """
        Represents the policy applied on the generated applications. Possible values are create-only, create-update, create-delete, and sync.
        """
        return pulumi.get(self, "applications_sync")

    @_builtins.property
    @pulumi.getter(name="preserveResourcesOnDeletion")
    def preserve_resources_on_deletion(self) -> Optional[_builtins.bool]:
        """
        Label selector used to narrow the scope of targeted clusters.
        """
        return pulumi.get(self, "preserve_resources_on_deletion")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplate(dict):
    def __init__(__self__, *,
                 metadata: 'outputs.GitopsApplicationsetApplicationsetSpecTemplateMetadata',
                 spec: 'outputs.GitopsApplicationsetApplicationsetSpecTemplateSpec'):
        """
        :param 'GitopsApplicationsetApplicationsetSpecTemplateMetadataArgs' metadata: Kubernetes object metadata for templated Application.
        :param 'GitopsApplicationsetApplicationsetSpecTemplateSpecArgs' spec: The application specification.
        """
        pulumi.set(__self__, "metadata", metadata)
        pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def metadata(self) -> 'outputs.GitopsApplicationsetApplicationsetSpecTemplateMetadata':
        """
        Kubernetes object metadata for templated Application.
        """
        return pulumi.get(self, "metadata")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> 'outputs.GitopsApplicationsetApplicationsetSpecTemplateSpec':
        """
        The application specification.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateMetadata(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 finalizers: Optional[Sequence[_builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the resulting Application
        :param Mapping[str, _builtins.str] annotations: An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        :param Sequence[_builtins.str] finalizers: List of finalizers to apply to the resulting Application.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        :param _builtins.str namespace: Namespace of the resulting Application
        """
        pulumi.set(__self__, "name", name)
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if finalizers is not None:
            pulumi.set(__self__, "finalizers", finalizers)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the resulting Application
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        An unstructured key value map that may be used to store arbitrary metadata for the resulting Application.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of finalizers to apply to the resulting Application.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) the resulting Application.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Namespace of the resulting Application
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "ignoreDifferences":
            suggest = "ignore_differences"
        elif key == "revisionHistoryLimit":
            suggest = "revision_history_limit"
        elif key == "syncPolicy":
            suggest = "sync_policy"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecTemplateSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 destination: 'outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecDestination',
                 source: Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSource'],
                 ignore_differences: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecIgnoreDifference']] = None,
                 infos: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecInfo']] = None,
                 project: Optional[_builtins.str] = None,
                 revision_history_limit: Optional[_builtins.str] = None,
                 sources: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSource']] = None,
                 sync_policy: Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicy'] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecTemplateSpecDestinationArgs' destination: Reference to the Kubernetes server and namespace in which the application will be deployed.
        :param Sequence['GitopsApplicationsetApplicationsetSpecTemplateSpecSourceArgs'] source: Location of the application's manifests or chart.
        :param Sequence['GitopsApplicationsetApplicationsetSpecTemplateSpecIgnoreDifferenceArgs'] ignore_differences: Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        :param Sequence['GitopsApplicationsetApplicationsetSpecTemplateSpecInfoArgs'] infos: List of information (URLs, email addresses, and plain text) that relates to the application.
        :param _builtins.str project: The project the application belongs to.
        :param _builtins.str revision_history_limit: Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        :param Sequence['GitopsApplicationsetApplicationsetSpecTemplateSpecSourceArgs'] sources: Location of the application's manifests or chart. Use when specifying multiple fields
        :param 'GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyArgs' sync_policy: Controls when and how a sync will be performed.
        """
        pulumi.set(__self__, "destination", destination)
        pulumi.set(__self__, "source", source)
        if ignore_differences is not None:
            pulumi.set(__self__, "ignore_differences", ignore_differences)
        if infos is not None:
            pulumi.set(__self__, "infos", infos)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if revision_history_limit is not None:
            pulumi.set(__self__, "revision_history_limit", revision_history_limit)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)
        if sync_policy is not None:
            pulumi.set(__self__, "sync_policy", sync_policy)

    @_builtins.property
    @pulumi.getter
    def destination(self) -> 'outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecDestination':
        """
        Reference to the Kubernetes server and namespace in which the application will be deployed.
        """
        return pulumi.get(self, "destination")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSource']:
        """
        Location of the application's manifests or chart.
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter(name="ignoreDifferences")
    def ignore_differences(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecIgnoreDifference']]:
        """
        Resources and their fields which should be ignored during comparison. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/#application-level-configuration.
        """
        return pulumi.get(self, "ignore_differences")

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecInfo']]:
        """
        List of information (URLs, email addresses, and plain text) that relates to the application.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The project the application belongs to.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="revisionHistoryLimit")
    def revision_history_limit(self) -> Optional[_builtins.str]:
        """
        Limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
        """
        return pulumi.get(self, "revision_history_limit")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSource']]:
        """
        Location of the application's manifests or chart. Use when specifying multiple fields
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicy")
    def sync_policy(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicy']:
        """
        Controls when and how a sync will be performed.
        """
        return pulumi.get(self, "sync_policy")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecDestination(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None,
                 server: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the target cluster. Can be used instead of `server`.
        :param _builtins.str namespace: Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)
        if server is not None:
            pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the target cluster. Can be used instead of `server`.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        Target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        URL of the target cluster and must be set to the Kubernetes control plane API.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecIgnoreDifference(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jqPathExpressions":
            suggest = "jq_path_expressions"
        elif key == "jsonPointers":
            suggest = "json_pointers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecTemplateSpecIgnoreDifference. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecIgnoreDifference.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecIgnoreDifference.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group: Optional[_builtins.str] = None,
                 jq_path_expressions: Optional[Sequence[_builtins.str]] = None,
                 json_pointers: Optional[Sequence[_builtins.str]] = None,
                 kind: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 namespace: Optional[_builtins.str] = None):
        """
        :param _builtins.str group: The Kubernetes resource Group to match for.
        :param Sequence[_builtins.str] jq_path_expressions: List of JQ path expression strings targeting the field(s) to ignore.
        :param Sequence[_builtins.str] json_pointers: List of JSONPaths strings targeting the field(s) to ignore.
        :param _builtins.str kind: The Kubernetes resource Kind to match for.
        :param _builtins.str name: The Kubernetes resource Name to match for.
        :param _builtins.str namespace: The Kubernetes resource Namespace to match for.
        """
        if group is not None:
            pulumi.set(__self__, "group", group)
        if jq_path_expressions is not None:
            pulumi.set(__self__, "jq_path_expressions", jq_path_expressions)
        if json_pointers is not None:
            pulumi.set(__self__, "json_pointers", json_pointers)
        if kind is not None:
            pulumi.set(__self__, "kind", kind)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespace is not None:
            pulumi.set(__self__, "namespace", namespace)

    @_builtins.property
    @pulumi.getter
    def group(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Group to match for.
        """
        return pulumi.get(self, "group")

    @_builtins.property
    @pulumi.getter(name="jqPathExpressions")
    def jq_path_expressions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JQ path expression strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "jq_path_expressions")

    @_builtins.property
    @pulumi.getter(name="jsonPointers")
    def json_pointers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of JSONPaths strings targeting the field(s) to ignore.
        """
        return pulumi.get(self, "json_pointers")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Kind to match for.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Name to match for.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> Optional[_builtins.str]:
        """
        The Kubernetes resource Namespace to match for.
        """
        return pulumi.get(self, "namespace")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecInfo(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the information.
        :param _builtins.str value: Value of the information.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the information.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the information.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoUrl":
            suggest = "repo_url"
        elif key == "targetRevision":
            suggest = "target_revision"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecTemplateSpecSource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 repo_url: _builtins.str,
                 chart: Optional[_builtins.str] = None,
                 directory: Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectory'] = None,
                 helm: Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelm'] = None,
                 kustomize: Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceKustomize'] = None,
                 path: Optional[_builtins.str] = None,
                 plugin: Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourcePlugin'] = None,
                 ref: Optional[_builtins.str] = None,
                 target_revision: Optional[_builtins.str] = None):
        """
        :param _builtins.str repo_url: URL to the repository (Git or Helm) that contains the application manifests.
        :param _builtins.str chart: Helm chart name. Must be specified for applications sourced from a Helm repo.
        :param 'GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryArgs' directory: Path/directory specific options.
        :param 'GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmArgs' helm: Helm specific options.
        :param 'GitopsApplicationsetApplicationsetSpecTemplateSpecSourceKustomizeArgs' kustomize: Kustomize specific options.
        :param _builtins.str path: Directory path within the repository. Only valid for applications sourced from Git.
        :param 'GitopsApplicationsetApplicationsetSpecTemplateSpecSourcePluginArgs' plugin: Config management plugin specific options.
        :param _builtins.str ref: Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        :param _builtins.str target_revision: Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        pulumi.set(__self__, "repo_url", repo_url)
        if chart is not None:
            pulumi.set(__self__, "chart", chart)
        if directory is not None:
            pulumi.set(__self__, "directory", directory)
        if helm is not None:
            pulumi.set(__self__, "helm", helm)
        if kustomize is not None:
            pulumi.set(__self__, "kustomize", kustomize)
        if path is not None:
            pulumi.set(__self__, "path", path)
        if plugin is not None:
            pulumi.set(__self__, "plugin", plugin)
        if ref is not None:
            pulumi.set(__self__, "ref", ref)
        if target_revision is not None:
            pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> _builtins.str:
        """
        URL to the repository (Git or Helm) that contains the application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter
    def chart(self) -> Optional[_builtins.str]:
        """
        Helm chart name. Must be specified for applications sourced from a Helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directory(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectory']:
        """
        Path/directory specific options.
        """
        return pulumi.get(self, "directory")

    @_builtins.property
    @pulumi.getter
    def helm(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelm']:
        """
        Helm specific options.
        """
        return pulumi.get(self, "helm")

    @_builtins.property
    @pulumi.getter
    def kustomize(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceKustomize']:
        """
        Kustomize specific options.
        """
        return pulumi.get(self, "kustomize")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Directory path within the repository. Only valid for applications sourced from Git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugin(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourcePlugin']:
        """
        Config management plugin specific options.
        """
        return pulumi.get(self, "plugin")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> Optional[_builtins.str]:
        """
        Reference to another `source` within defined sources. See associated documentation on [Helm value files from external Git repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) regarding combining `ref` with `path` and/or `chart`.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> Optional[_builtins.str]:
        """
        Revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectory(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnet: Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnet'] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        :param 'GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnetArgs' jsonnet: Jsonnet specific options.
        :param _builtins.bool recurse: Whether to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnet is not None:
            pulumi.set(__self__, "jsonnet", jsonnet)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation. This takes precedence over the `include` field. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{config.yaml,env-use2/*}'
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation. If this field is set, only matching manifests will be included. To match multiple patterns, wrap the patterns in {} and separate them with commas. For example: '{*.yml,*.yaml}'
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnet(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnet']:
        """
        Jsonnet specific options.
        """
        return pulumi.get(self, "jsonnet")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Whether to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extVars":
            suggest = "ext_vars"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnetExtVar']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnetTla']] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of Jsonnet External Variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of Jsonnet Top-level Arguments
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnetExtVar']]:
        """
        List of Jsonnet External Variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnetTla']]:
        """
        List of Jsonnet Top-level Arguments
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnetExtVar(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSourceDirectoryJsonnetTla(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Determines whether the variable should be evaluated as jsonnet code or treated as string.
        :param _builtins.str name: Name of Jsonnet variable.
        :param _builtins.str value: Value of Jsonnet variable.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Determines whether the variable should be evaluated as jsonnet code or treated as string.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of Jsonnet variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of Jsonnet variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fileParameters":
            suggest = "file_parameters"
        elif key == "ignoreMissingValueFiles":
            suggest = "ignore_missing_value_files"
        elif key == "passCredentials":
            suggest = "pass_credentials"
        elif key == "releaseName":
            suggest = "release_name"
        elif key == "skipCrds":
            suggest = "skip_crds"
        elif key == "skipSchemaValidation":
            suggest = "skip_schema_validation"
        elif key == "skipTests":
            suggest = "skip_tests"
        elif key == "valueFiles":
            suggest = "value_files"
        elif key == "valuesObject":
            suggest = "values_object"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmFileParameter']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmParameter']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 values_object: Optional[Mapping[str, _builtins.str]] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmFileParameterArgs'] file_parameters: File parameters for the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        :param Sequence['GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmParameterArgs'] parameters: Helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        :param _builtins.str release_name: Helm release name. If omitted it will use the application name.
        :param _builtins.bool skip_crds: Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of Helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to 'helm template', typically defined as a block.
        :param Mapping[str, _builtins.str] values_object: Helm values to be passed to 'helm template', typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3").
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if values_object is not None:
            pulumi.set(__self__, "values_object", values_object)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmFileParameter']]:
        """
        File parameters for the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when `value_files` do not exist locally by not appending them to 'helm template --values'.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmParameter']]:
        """
        Helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        If true then adds '--pass-credentials' to Helm commands to pass credentials to all domains.
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name. If omitted it will use the application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Whether to skip custom resource definition installation step (Helm's [--skip-crds](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/)).
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter(name="valuesObject")
    def values_object(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Helm values to be passed to 'helm template', typically defined as a block.
        """
        return pulumi.get(self, "values_object")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3").
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmFileParameter(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 path: _builtins.str):
        """
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str path: Path to the file containing the values for the Helm parameter.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Path to the file containing the values for the Helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmParameter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forceString":
            suggest = "force_string"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmParameter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSourceHelmParameter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Determines whether to tell Helm to interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the Helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Determines whether to tell Helm to interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the Helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSourceKustomize(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "commonAnnotations":
            suggest = "common_annotations"
        elif key == "commonLabels":
            suggest = "common_labels"
        elif key == "forceCommonAnnotations":
            suggest = "force_common_annotations"
        elif key == "forceCommonLabels":
            suggest = "force_common_labels"
        elif key == "namePrefix":
            suggest = "name_prefix"
        elif key == "nameSuffix":
            suggest = "name_suffix"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecTemplateSpecSourceKustomize. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSourceKustomize.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSourceKustomize.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of Kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix appended to resources for Kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for Kustomize apps.
        :param _builtins.str version: Version of Kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for Kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of Kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSourcePlugin(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourcePluginEnv']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GitopsApplicationsetApplicationsetSpecTemplateSpecSourcePluginEnvArgs'] envs: Environment variables passed to the plugin.
        :param _builtins.str name: Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSourcePluginEnv']]:
        """
        Environment variables passed to the plugin.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin. Only set the plugin name if the plugin is defined in `argocd-cm`. If the plugin is defined as a sidecar, omit the name. The plugin will be automatically matched with the Application according to the plugin's discovery rules.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSourcePluginEnv(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the environment variable.
        :param _builtins.str value: Value of the environment variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the environment variable.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the environment variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedNamespaceMetadata":
            suggest = "managed_namespace_metadata"
        elif key == "syncOptions":
            suggest = "sync_options"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 automated: Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyAutomated'] = None,
                 managed_namespace_metadata: Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyManagedNamespaceMetadata'] = None,
                 retry: Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetry'] = None,
                 sync_options: Optional[Sequence[_builtins.str]] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyAutomatedArgs' automated: Whether to automatically keep an application synced to the target revision.
        :param 'GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyManagedNamespaceMetadataArgs' managed_namespace_metadata: Controls metadata in the given namespace (if `CreateNamespace=true`).
        :param 'GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetryArgs' retry: Controls failed sync retry behavior.
        :param Sequence[_builtins.str] sync_options: List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        if automated is not None:
            pulumi.set(__self__, "automated", automated)
        if managed_namespace_metadata is not None:
            pulumi.set(__self__, "managed_namespace_metadata", managed_namespace_metadata)
        if retry is not None:
            pulumi.set(__self__, "retry", retry)
        if sync_options is not None:
            pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automated(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyAutomated']:
        """
        Whether to automatically keep an application synced to the target revision.
        """
        return pulumi.get(self, "automated")

    @_builtins.property
    @pulumi.getter(name="managedNamespaceMetadata")
    def managed_namespace_metadata(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyManagedNamespaceMetadata']:
        """
        Controls metadata in the given namespace (if `CreateNamespace=true`).
        """
        return pulumi.get(self, "managed_namespace_metadata")

    @_builtins.property
    @pulumi.getter
    def retry(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetry']:
        """
        Controls failed sync retry behavior.
        """
        return pulumi.get(self, "retry")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of sync options. More info: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyAutomated(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowEmpty":
            suggest = "allow_empty"
        elif key == "selfHeal":
            suggest = "self_heal"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyAutomated. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyAutomated.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_empty: Optional[_builtins.bool] = None,
                 prune: Optional[_builtins.bool] = None,
                 self_heal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool allow_empty: Allows apps have zero live resources.
        :param _builtins.bool prune: Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        :param _builtins.bool self_heal: Whether to revert resources back to their desired state upon modification in the cluster.
        """
        if allow_empty is not None:
            pulumi.set(__self__, "allow_empty", allow_empty)
        if prune is not None:
            pulumi.set(__self__, "prune", prune)
        if self_heal is not None:
            pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> Optional[_builtins.bool]:
        """
        Allows apps have zero live resources.
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> Optional[_builtins.bool]:
        """
        Whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync.
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> Optional[_builtins.bool]:
        """
        Whether to revert resources back to their desired state upon modification in the cluster.
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyManagedNamespaceMetadata(dict):
    def __init__(__self__, *,
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations to apply to the namespace.
        :param Mapping[str, _builtins.str] labels: Labels to apply to the namespace.
        """
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations to apply to the namespace.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels to apply to the namespace.
        """
        return pulumi.get(self, "labels")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetry(dict):
    def __init__(__self__, *,
                 backoff: Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetryBackoff'] = None,
                 limit: Optional[_builtins.str] = None):
        """
        :param 'GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetryBackoffArgs' backoff: Controls how to backoff on subsequent retries of failed syncs.
        :param _builtins.str limit: Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        if backoff is not None:
            pulumi.set(__self__, "backoff", backoff)
        if limit is not None:
            pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoff(self) -> Optional['outputs.GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetryBackoff']:
        """
        Controls how to backoff on subsequent retries of failed syncs.
        """
        return pulumi.get(self, "backoff")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> Optional[_builtins.str]:
        """
        Maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetryBackoff(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "maxDuration":
            suggest = "max_duration"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetryBackoff. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        GitopsApplicationsetApplicationsetSpecTemplateSpecSyncPolicyRetryBackoff.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 factor: Optional[_builtins.str] = None,
                 max_duration: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if factor is not None:
            pulumi.set(__self__, "factor", factor)
        if max_duration is not None:
            pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> Optional[_builtins.str]:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> Optional[_builtins.str]:
        """
        Maximum amount of time allowed for the backoff strategy. Default unit is seconds, but could also be a duration (e.g. `2m`, `1h`), as a string.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class HarRegistryConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "authType":
            suggest = "auth_type"
        elif key == "upstreamProxies":
            suggest = "upstream_proxies"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in HarRegistryConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        HarRegistryConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        HarRegistryConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: _builtins.str,
                 auth_type: Optional[_builtins.str] = None,
                 auths: Optional[Sequence['outputs.HarRegistryConfigAuth']] = None,
                 source: Optional[_builtins.str] = None,
                 upstream_proxies: Optional[Sequence[_builtins.str]] = None,
                 url: Optional[_builtins.str] = None):
        """
        :param _builtins.str type: Type of registry (VIRTUAL or UPSTREAM)
        :param _builtins.str auth_type: Type of authentication for UPSTREAM registry type (UserPassword, Anonymous)
        :param Sequence['HarRegistryConfigAuthArgs'] auths: Authentication configuration for UPSTREAM registry type
        :param _builtins.str source: Upstream source
        :param Sequence[_builtins.str] upstream_proxies: List of upstream proxies for VIRTUAL registry type
        :param _builtins.str url: URL of the upstream (required if type=UPSTREAM & package_type=HELM)
        """
        pulumi.set(__self__, "type", type)
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if auths is not None:
            pulumi.set(__self__, "auths", auths)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if upstream_proxies is not None:
            pulumi.set(__self__, "upstream_proxies", upstream_proxies)
        if url is not None:
            pulumi.set(__self__, "url", url)

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of registry (VIRTUAL or UPSTREAM)
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[_builtins.str]:
        """
        Type of authentication for UPSTREAM registry type (UserPassword, Anonymous)
        """
        return pulumi.get(self, "auth_type")

    @_builtins.property
    @pulumi.getter
    def auths(self) -> Optional[Sequence['outputs.HarRegistryConfigAuth']]:
        """
        Authentication configuration for UPSTREAM registry type
        """
        return pulumi.get(self, "auths")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[_builtins.str]:
        """
        Upstream source
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter(name="upstreamProxies")
    def upstream_proxies(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of upstream proxies for VIRTUAL registry type
        """
        return pulumi.get(self, "upstream_proxies")

    @_builtins.property
    @pulumi.getter
    def url(self) -> Optional[_builtins.str]:
        """
        URL of the upstream (required if type=UPSTREAM & package_type=HELM)
        """
        return pulumi.get(self, "url")


@pulumi.output_type
class HarRegistryConfigAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "authType":
            suggest = "auth_type"
        elif key == "accessKey":
            suggest = "access_key"
        elif key == "accessKeyIdentifier":
            suggest = "access_key_identifier"
        elif key == "accessKeySecretPath":
            suggest = "access_key_secret_path"
        elif key == "secretIdentifier":
            suggest = "secret_identifier"
        elif key == "secretKeyIdentifier":
            suggest = "secret_key_identifier"
        elif key == "secretKeySecretPath":
            suggest = "secret_key_secret_path"
        elif key == "secretSpacePath":
            suggest = "secret_space_path"
        elif key == "userName":
            suggest = "user_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in HarRegistryConfigAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        HarRegistryConfigAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        HarRegistryConfigAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 auth_type: _builtins.str,
                 access_key: Optional[_builtins.str] = None,
                 access_key_identifier: Optional[_builtins.str] = None,
                 access_key_secret_path: Optional[_builtins.str] = None,
                 secret_identifier: Optional[_builtins.str] = None,
                 secret_key_identifier: Optional[_builtins.str] = None,
                 secret_key_secret_path: Optional[_builtins.str] = None,
                 secret_space_path: Optional[_builtins.str] = None,
                 user_name: Optional[_builtins.str] = None):
        """
        :param _builtins.str auth_type: Type of authentication (UserPassword, Anonymous)
        :param _builtins.str secret_identifier: Secret identifier for UserPassword auth type
        :param _builtins.str secret_space_path: Secret space path for UserPassword auth type
        :param _builtins.str user_name: Username for UserPassword auth type
        """
        pulumi.set(__self__, "auth_type", auth_type)
        if access_key is not None:
            pulumi.set(__self__, "access_key", access_key)
        if access_key_identifier is not None:
            pulumi.set(__self__, "access_key_identifier", access_key_identifier)
        if access_key_secret_path is not None:
            pulumi.set(__self__, "access_key_secret_path", access_key_secret_path)
        if secret_identifier is not None:
            pulumi.set(__self__, "secret_identifier", secret_identifier)
        if secret_key_identifier is not None:
            pulumi.set(__self__, "secret_key_identifier", secret_key_identifier)
        if secret_key_secret_path is not None:
            pulumi.set(__self__, "secret_key_secret_path", secret_key_secret_path)
        if secret_space_path is not None:
            pulumi.set(__self__, "secret_space_path", secret_space_path)
        if user_name is not None:
            pulumi.set(__self__, "user_name", user_name)

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> _builtins.str:
        """
        Type of authentication (UserPassword, Anonymous)
        """
        return pulumi.get(self, "auth_type")

    @_builtins.property
    @pulumi.getter(name="accessKey")
    def access_key(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "access_key")

    @_builtins.property
    @pulumi.getter(name="accessKeyIdentifier")
    def access_key_identifier(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "access_key_identifier")

    @_builtins.property
    @pulumi.getter(name="accessKeySecretPath")
    def access_key_secret_path(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "access_key_secret_path")

    @_builtins.property
    @pulumi.getter(name="secretIdentifier")
    def secret_identifier(self) -> Optional[_builtins.str]:
        """
        Secret identifier for UserPassword auth type
        """
        return pulumi.get(self, "secret_identifier")

    @_builtins.property
    @pulumi.getter(name="secretKeyIdentifier")
    def secret_key_identifier(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "secret_key_identifier")

    @_builtins.property
    @pulumi.getter(name="secretKeySecretPath")
    def secret_key_secret_path(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "secret_key_secret_path")

    @_builtins.property
    @pulumi.getter(name="secretSpacePath")
    def secret_space_path(self) -> Optional[_builtins.str]:
        """
        Secret space path for UserPassword auth type
        """
        return pulumi.get(self, "secret_space_path")

    @_builtins.property
    @pulumi.getter(name="userName")
    def user_name(self) -> Optional[_builtins.str]:
        """
        Username for UserPassword auth type
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class HelmConnectorCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in HelmConnectorCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        HelmConnectorCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        HelmConnectorCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class IdpCatalogEntityGitDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "baseBranch":
            suggest = "base_branch"
        elif key == "branchName":
            suggest = "branch_name"
        elif key == "commitMessage":
            suggest = "commit_message"
        elif key == "connectorRef":
            suggest = "connector_ref"
        elif key == "filePath":
            suggest = "file_path"
        elif key == "isHarnessCodeRepo":
            suggest = "is_harness_code_repo"
        elif key == "lastCommitId":
            suggest = "last_commit_id"
        elif key == "lastObjectId":
            suggest = "last_object_id"
        elif key == "repoName":
            suggest = "repo_name"
        elif key == "storeType":
            suggest = "store_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in IdpCatalogEntityGitDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        IdpCatalogEntityGitDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        IdpCatalogEntityGitDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 base_branch: Optional[_builtins.str] = None,
                 branch_name: Optional[_builtins.str] = None,
                 commit_message: Optional[_builtins.str] = None,
                 connector_ref: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 is_harness_code_repo: Optional[_builtins.bool] = None,
                 last_commit_id: Optional[_builtins.str] = None,
                 last_object_id: Optional[_builtins.str] = None,
                 repo_name: Optional[_builtins.str] = None,
                 store_type: Optional[_builtins.str] = None):
        """
        :param _builtins.str base_branch: Name of the default branch (this checks out a new branch titled by branch_name).
        :param _builtins.str branch_name: Name of the branch.
        :param _builtins.str commit_message: Commit message used for the merge commit.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for importing entity from Git To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.bool is_harness_code_repo: If the repo is a Harness Code repo
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating Pipeline.
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str store_type: Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        if base_branch is not None:
            pulumi.set(__self__, "base_branch", base_branch)
        if branch_name is not None:
            pulumi.set(__self__, "branch_name", branch_name)
        if commit_message is not None:
            pulumi.set(__self__, "commit_message", commit_message)
        if connector_ref is not None:
            pulumi.set(__self__, "connector_ref", connector_ref)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if is_harness_code_repo is not None:
            pulumi.set(__self__, "is_harness_code_repo", is_harness_code_repo)
        if last_commit_id is not None:
            pulumi.set(__self__, "last_commit_id", last_commit_id)
        if last_object_id is not None:
            pulumi.set(__self__, "last_object_id", last_object_id)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)
        if store_type is not None:
            pulumi.set(__self__, "store_type", store_type)

    @_builtins.property
    @pulumi.getter(name="baseBranch")
    def base_branch(self) -> Optional[_builtins.str]:
        """
        Name of the default branch (this checks out a new branch titled by branch_name).
        """
        return pulumi.get(self, "base_branch")

    @_builtins.property
    @pulumi.getter(name="branchName")
    def branch_name(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch_name")

    @_builtins.property
    @pulumi.getter(name="commitMessage")
    def commit_message(self) -> Optional[_builtins.str]:
        """
        Commit message used for the merge commit.
        """
        return pulumi.get(self, "commit_message")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for importing entity from Git To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="isHarnessCodeRepo")
    def is_harness_code_repo(self) -> Optional[_builtins.bool]:
        """
        If the repo is a Harness Code repo
        """
        return pulumi.get(self, "is_harness_code_repo")

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> Optional[_builtins.str]:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> Optional[_builtins.str]:
        """
        Last object identifier (for Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="storeType")
    def store_type(self) -> Optional[_builtins.str]:
        """
        Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        return pulumi.get(self, "store_type")


@pulumi.output_type
class InfraModuleTestingTestingMetadata(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "providerConnector":
            suggest = "provider_connector"
        elif key == "provisionerType":
            suggest = "provisioner_type"
        elif key == "provisionerVersion":
            suggest = "provisioner_version"
        elif key == "releasePipeline":
            suggest = "release_pipeline"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InfraModuleTestingTestingMetadata. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InfraModuleTestingTestingMetadata.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InfraModuleTestingTestingMetadata.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 account: Optional[_builtins.str] = None,
                 org: Optional[_builtins.str] = None,
                 pipelines: Optional[Sequence[_builtins.str]] = None,
                 project: Optional[_builtins.str] = None,
                 provider_connector: Optional[_builtins.str] = None,
                 provisioner_type: Optional[_builtins.str] = None,
                 provisioner_version: Optional[_builtins.str] = None,
                 release_pipeline: Optional[_builtins.str] = None):
        """
        :param _builtins.str account: Account is the internal customer account ID
        :param _builtins.str org: Organization identifier
        :param Sequence[_builtins.str] pipelines: Pipelines where the testing is enabled
        :param _builtins.str project: Project identifier
        :param _builtins.str provider_connector: Provider connector for testing purposes
        :param _builtins.str provisioner_type: Provisioner type for testing purposes
        :param _builtins.str provisioner_version: Provisioner version for testing purposes
        :param _builtins.str release_pipeline: Release pipeline
        """
        if account is not None:
            pulumi.set(__self__, "account", account)
        if org is not None:
            pulumi.set(__self__, "org", org)
        if pipelines is not None:
            pulumi.set(__self__, "pipelines", pipelines)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if provider_connector is not None:
            pulumi.set(__self__, "provider_connector", provider_connector)
        if provisioner_type is not None:
            pulumi.set(__self__, "provisioner_type", provisioner_type)
        if provisioner_version is not None:
            pulumi.set(__self__, "provisioner_version", provisioner_version)
        if release_pipeline is not None:
            pulumi.set(__self__, "release_pipeline", release_pipeline)

    @_builtins.property
    @pulumi.getter
    def account(self) -> Optional[_builtins.str]:
        """
        Account is the internal customer account ID
        """
        return pulumi.get(self, "account")

    @_builtins.property
    @pulumi.getter
    def org(self) -> Optional[_builtins.str]:
        """
        Organization identifier
        """
        return pulumi.get(self, "org")

    @_builtins.property
    @pulumi.getter
    def pipelines(self) -> Optional[Sequence[_builtins.str]]:
        """
        Pipelines where the testing is enabled
        """
        return pulumi.get(self, "pipelines")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        Project identifier
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="providerConnector")
    def provider_connector(self) -> Optional[_builtins.str]:
        """
        Provider connector for testing purposes
        """
        return pulumi.get(self, "provider_connector")

    @_builtins.property
    @pulumi.getter(name="provisionerType")
    def provisioner_type(self) -> Optional[_builtins.str]:
        """
        Provisioner type for testing purposes
        """
        return pulumi.get(self, "provisioner_type")

    @_builtins.property
    @pulumi.getter(name="provisionerVersion")
    def provisioner_version(self) -> Optional[_builtins.str]:
        """
        Provisioner version for testing purposes
        """
        return pulumi.get(self, "provisioner_version")

    @_builtins.property
    @pulumi.getter(name="releasePipeline")
    def release_pipeline(self) -> Optional[_builtins.str]:
        """
        Release pipeline
        """
        return pulumi.get(self, "release_pipeline")


@pulumi.output_type
class InfraVariableSetConnector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "connectorRef":
            suggest = "connector_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InfraVariableSetConnector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InfraVariableSetConnector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InfraVariableSetConnector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 connector_ref: _builtins.str,
                 type: _builtins.str):
        """
        :param _builtins.str connector_ref: Connector Ref is the reference to the connector
        :param _builtins.str type: Type is the connector type of the connector. Supported types: aws, azure, gcp
        """
        pulumi.set(__self__, "connector_ref", connector_ref)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> _builtins.str:
        """
        Connector Ref is the reference to the connector
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type is the connector type of the connector. Supported types: aws, azure, gcp
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class InfraVariableSetEnvironmentVariable(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "valueType":
            suggest = "value_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InfraVariableSetEnvironmentVariable. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InfraVariableSetEnvironmentVariable.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InfraVariableSetEnvironmentVariable.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 value: _builtins.str,
                 value_type: _builtins.str):
        """
        :param _builtins.str key: Key is the identifier for the variable. Must be unique within the Variable Set.
        :param _builtins.str value: Value is the value of the variable. For string value types this field should contain the value of the variable. For secret value types this should contain a reference to a valid harness secret.
        :param _builtins.str value_type: Value type indicates the value type of the variable. Currently we support string and secret.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "value_type", value_type)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key is the identifier for the variable. Must be unique within the Variable Set.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        Value is the value of the variable. For string value types this field should contain the value of the variable. For secret value types this should contain a reference to a valid harness secret.
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueType")
    def value_type(self) -> _builtins.str:
        """
        Value type indicates the value type of the variable. Currently we support string and secret.
        """
        return pulumi.get(self, "value_type")


@pulumi.output_type
class InfraVariableSetTerraformVariable(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "valueType":
            suggest = "value_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InfraVariableSetTerraformVariable. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InfraVariableSetTerraformVariable.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InfraVariableSetTerraformVariable.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 value: _builtins.str,
                 value_type: _builtins.str):
        """
        :param _builtins.str key: Key is the identifier for the variable. Must be unique within the Variable Set.
        :param _builtins.str value: Value is the value of the variable. For string value types this field should contain the value of the variable. For secret value types this should contain a reference to a valid harness secret.
        :param _builtins.str value_type: Value type indicates the value type of the variable. Currently we support string and secret.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "value_type", value_type)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key is the identifier for the variable. Must be unique within the Variable Set.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        Value is the value of the variable. For string value types this field should contain the value of the variable. For secret value types this should contain a reference to a valid harness secret.
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueType")
    def value_type(self) -> _builtins.str:
        """
        Value type indicates the value type of the variable. Currently we support string and secret.
        """
        return pulumi.get(self, "value_type")


@pulumi.output_type
class InfraVariableSetTerraformVariableFile(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repositoryConnector":
            suggest = "repository_connector"
        elif key == "repositoryBranch":
            suggest = "repository_branch"
        elif key == "repositoryCommit":
            suggest = "repository_commit"
        elif key == "repositoryPath":
            suggest = "repository_path"
        elif key == "repositorySha":
            suggest = "repository_sha"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InfraVariableSetTerraformVariableFile. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InfraVariableSetTerraformVariableFile.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InfraVariableSetTerraformVariableFile.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 repository: _builtins.str,
                 repository_connector: _builtins.str,
                 repository_branch: Optional[_builtins.str] = None,
                 repository_commit: Optional[_builtins.str] = None,
                 repository_path: Optional[_builtins.str] = None,
                 repository_sha: Optional[_builtins.str] = None):
        """
        :param _builtins.str repository: Repository is the name of the repository to fetch the code from.
        :param _builtins.str repository_connector: Repository connector is the reference to the connector used to fetch the variables.
        :param _builtins.str repository_branch: Repository branch is the name of the branch to fetch the variables from. This cannot be set if repository commit or sha is set
        :param _builtins.str repository_commit: Repository commit is tag to fetch the variables from. This cannot be set if repository branch or sha is set.
        :param _builtins.str repository_path: Repository path is the path in which the variables reside.
        :param _builtins.str repository_sha: Repository commit is SHA to fetch the variables from. This cannot be set if repository branch or commit is set.
        """
        pulumi.set(__self__, "repository", repository)
        pulumi.set(__self__, "repository_connector", repository_connector)
        if repository_branch is not None:
            pulumi.set(__self__, "repository_branch", repository_branch)
        if repository_commit is not None:
            pulumi.set(__self__, "repository_commit", repository_commit)
        if repository_path is not None:
            pulumi.set(__self__, "repository_path", repository_path)
        if repository_sha is not None:
            pulumi.set(__self__, "repository_sha", repository_sha)

    @_builtins.property
    @pulumi.getter
    def repository(self) -> _builtins.str:
        """
        Repository is the name of the repository to fetch the code from.
        """
        return pulumi.get(self, "repository")

    @_builtins.property
    @pulumi.getter(name="repositoryConnector")
    def repository_connector(self) -> _builtins.str:
        """
        Repository connector is the reference to the connector used to fetch the variables.
        """
        return pulumi.get(self, "repository_connector")

    @_builtins.property
    @pulumi.getter(name="repositoryBranch")
    def repository_branch(self) -> Optional[_builtins.str]:
        """
        Repository branch is the name of the branch to fetch the variables from. This cannot be set if repository commit or sha is set
        """
        return pulumi.get(self, "repository_branch")

    @_builtins.property
    @pulumi.getter(name="repositoryCommit")
    def repository_commit(self) -> Optional[_builtins.str]:
        """
        Repository commit is tag to fetch the variables from. This cannot be set if repository branch or sha is set.
        """
        return pulumi.get(self, "repository_commit")

    @_builtins.property
    @pulumi.getter(name="repositoryPath")
    def repository_path(self) -> Optional[_builtins.str]:
        """
        Repository path is the path in which the variables reside.
        """
        return pulumi.get(self, "repository_path")

    @_builtins.property
    @pulumi.getter(name="repositorySha")
    def repository_sha(self) -> Optional[_builtins.str]:
        """
        Repository commit is SHA to fetch the variables from. This cannot be set if repository branch or commit is set.
        """
        return pulumi.get(self, "repository_sha")


@pulumi.output_type
class InfrastructureGitDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "baseBranch":
            suggest = "base_branch"
        elif key == "commitMessage":
            suggest = "commit_message"
        elif key == "connectorRef":
            suggest = "connector_ref"
        elif key == "filePath":
            suggest = "file_path"
        elif key == "importFromGit":
            suggest = "import_from_git"
        elif key == "isForceImport":
            suggest = "is_force_import"
        elif key == "isHarnesscodeRepo":
            suggest = "is_harnesscode_repo"
        elif key == "isNewBranch":
            suggest = "is_new_branch"
        elif key == "lastCommitId":
            suggest = "last_commit_id"
        elif key == "lastObjectId":
            suggest = "last_object_id"
        elif key == "loadFromCache":
            suggest = "load_from_cache"
        elif key == "loadFromFallbackBranch":
            suggest = "load_from_fallback_branch"
        elif key == "parentEntityConnectorRef":
            suggest = "parent_entity_connector_ref"
        elif key == "parentEntityRepoName":
            suggest = "parent_entity_repo_name"
        elif key == "repoName":
            suggest = "repo_name"
        elif key == "storeType":
            suggest = "store_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InfrastructureGitDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InfrastructureGitDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InfrastructureGitDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 base_branch: Optional[_builtins.str] = None,
                 branch: Optional[_builtins.str] = None,
                 commit_message: Optional[_builtins.str] = None,
                 connector_ref: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 import_from_git: Optional[_builtins.bool] = None,
                 is_force_import: Optional[_builtins.bool] = None,
                 is_harnesscode_repo: Optional[_builtins.bool] = None,
                 is_new_branch: Optional[_builtins.bool] = None,
                 last_commit_id: Optional[_builtins.str] = None,
                 last_object_id: Optional[_builtins.str] = None,
                 load_from_cache: Optional[_builtins.str] = None,
                 load_from_fallback_branch: Optional[_builtins.bool] = None,
                 parent_entity_connector_ref: Optional[_builtins.str] = None,
                 parent_entity_repo_name: Optional[_builtins.str] = None,
                 repo_name: Optional[_builtins.str] = None,
                 store_type: Optional[_builtins.str] = None):
        """
        :param _builtins.str base_branch: Name of the default branch (this checks out a new branch titled by branch_name).
        :param _builtins.str branch: Name of the branch.
        :param _builtins.str commit_message: Commit message used for the merge commit.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.bool import_from_git: import infrastructure from git
        :param _builtins.bool is_force_import: force import infrastructure from remote even if same file path already exist
        :param _builtins.bool is_harnesscode_repo: If the gitProvider is HarnessCode
        :param _builtins.bool is_new_branch: If a new branch creation is requested.
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating infrastructure.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating infrastructure.
        :param _builtins.str load_from_cache: If the Entity is to be fetched from cache
        :param _builtins.bool load_from_fallback_branch: If the Entity is to be fetched from fallbackBranch
        :param _builtins.str parent_entity_connector_ref: Identifier of the Harness Connector used for CRUD operations on the Parent Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str parent_entity_repo_name: Name of the repository where parent entity lies.
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str store_type: Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        if base_branch is not None:
            pulumi.set(__self__, "base_branch", base_branch)
        if branch is not None:
            pulumi.set(__self__, "branch", branch)
        if commit_message is not None:
            pulumi.set(__self__, "commit_message", commit_message)
        if connector_ref is not None:
            pulumi.set(__self__, "connector_ref", connector_ref)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if import_from_git is not None:
            pulumi.set(__self__, "import_from_git", import_from_git)
        if is_force_import is not None:
            pulumi.set(__self__, "is_force_import", is_force_import)
        if is_harnesscode_repo is not None:
            pulumi.set(__self__, "is_harnesscode_repo", is_harnesscode_repo)
        if is_new_branch is not None:
            pulumi.set(__self__, "is_new_branch", is_new_branch)
        if last_commit_id is not None:
            pulumi.set(__self__, "last_commit_id", last_commit_id)
        if last_object_id is not None:
            pulumi.set(__self__, "last_object_id", last_object_id)
        if load_from_cache is not None:
            pulumi.set(__self__, "load_from_cache", load_from_cache)
        if load_from_fallback_branch is not None:
            pulumi.set(__self__, "load_from_fallback_branch", load_from_fallback_branch)
        if parent_entity_connector_ref is not None:
            pulumi.set(__self__, "parent_entity_connector_ref", parent_entity_connector_ref)
        if parent_entity_repo_name is not None:
            pulumi.set(__self__, "parent_entity_repo_name", parent_entity_repo_name)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)
        if store_type is not None:
            pulumi.set(__self__, "store_type", store_type)

    @_builtins.property
    @pulumi.getter(name="baseBranch")
    def base_branch(self) -> Optional[_builtins.str]:
        """
        Name of the default branch (this checks out a new branch titled by branch_name).
        """
        return pulumi.get(self, "base_branch")

    @_builtins.property
    @pulumi.getter
    def branch(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch")

    @_builtins.property
    @pulumi.getter(name="commitMessage")
    def commit_message(self) -> Optional[_builtins.str]:
        """
        Commit message used for the merge commit.
        """
        return pulumi.get(self, "commit_message")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="importFromGit")
    def import_from_git(self) -> Optional[_builtins.bool]:
        """
        import infrastructure from git
        """
        return pulumi.get(self, "import_from_git")

    @_builtins.property
    @pulumi.getter(name="isForceImport")
    def is_force_import(self) -> Optional[_builtins.bool]:
        """
        force import infrastructure from remote even if same file path already exist
        """
        return pulumi.get(self, "is_force_import")

    @_builtins.property
    @pulumi.getter(name="isHarnesscodeRepo")
    def is_harnesscode_repo(self) -> Optional[_builtins.bool]:
        """
        If the gitProvider is HarnessCode
        """
        return pulumi.get(self, "is_harnesscode_repo")

    @_builtins.property
    @pulumi.getter(name="isNewBranch")
    def is_new_branch(self) -> Optional[_builtins.bool]:
        """
        If a new branch creation is requested.
        """
        return pulumi.get(self, "is_new_branch")

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> Optional[_builtins.str]:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating infrastructure.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> Optional[_builtins.str]:
        """
        Last object identifier (for Github). To be provided only when updating infrastructure.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="loadFromCache")
    def load_from_cache(self) -> Optional[_builtins.str]:
        """
        If the Entity is to be fetched from cache
        """
        return pulumi.get(self, "load_from_cache")

    @_builtins.property
    @pulumi.getter(name="loadFromFallbackBranch")
    def load_from_fallback_branch(self) -> Optional[_builtins.bool]:
        """
        If the Entity is to be fetched from fallbackBranch
        """
        return pulumi.get(self, "load_from_fallback_branch")

    @_builtins.property
    @pulumi.getter(name="parentEntityConnectorRef")
    def parent_entity_connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for CRUD operations on the Parent Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "parent_entity_connector_ref")

    @_builtins.property
    @pulumi.getter(name="parentEntityRepoName")
    def parent_entity_repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository where parent entity lies.
        """
        return pulumi.get(self, "parent_entity_repo_name")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="storeType")
    def store_type(self) -> Optional[_builtins.str]:
        """
        Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        return pulumi.get(self, "store_type")


@pulumi.output_type
class InputSetGitDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "baseBranch":
            suggest = "base_branch"
        elif key == "branchName":
            suggest = "branch_name"
        elif key == "commitMessage":
            suggest = "commit_message"
        elif key == "connectorRef":
            suggest = "connector_ref"
        elif key == "filePath":
            suggest = "file_path"
        elif key == "isHarnessCodeRepo":
            suggest = "is_harness_code_repo"
        elif key == "lastCommitId":
            suggest = "last_commit_id"
        elif key == "lastObjectId":
            suggest = "last_object_id"
        elif key == "parentEntityConnectorRef":
            suggest = "parent_entity_connector_ref"
        elif key == "parentEntityRepoName":
            suggest = "parent_entity_repo_name"
        elif key == "repoName":
            suggest = "repo_name"
        elif key == "storeType":
            suggest = "store_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InputSetGitDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InputSetGitDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InputSetGitDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 base_branch: Optional[_builtins.str] = None,
                 branch_name: Optional[_builtins.str] = None,
                 commit_message: Optional[_builtins.str] = None,
                 connector_ref: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 is_harness_code_repo: Optional[_builtins.bool] = None,
                 last_commit_id: Optional[_builtins.str] = None,
                 last_object_id: Optional[_builtins.str] = None,
                 parent_entity_connector_ref: Optional[_builtins.str] = None,
                 parent_entity_repo_name: Optional[_builtins.str] = None,
                 repo_name: Optional[_builtins.str] = None,
                 store_type: Optional[_builtins.str] = None):
        """
        :param _builtins.str base_branch: Name of the default branch (this checks out a new branch titled by branch_name).
        :param _builtins.str branch_name: Name of the branch.
        :param _builtins.str commit_message: Commit message used for the merge commit.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.bool is_harness_code_repo: If the repo is harness code.
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating Pipeline.
        :param _builtins.str parent_entity_connector_ref: Connector reference for Parent Entity (Pipeline). To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str parent_entity_repo_name: Repository name for Parent Entity (Pipeline).
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str store_type: Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        if base_branch is not None:
            pulumi.set(__self__, "base_branch", base_branch)
        if branch_name is not None:
            pulumi.set(__self__, "branch_name", branch_name)
        if commit_message is not None:
            pulumi.set(__self__, "commit_message", commit_message)
        if connector_ref is not None:
            pulumi.set(__self__, "connector_ref", connector_ref)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if is_harness_code_repo is not None:
            pulumi.set(__self__, "is_harness_code_repo", is_harness_code_repo)
        if last_commit_id is not None:
            pulumi.set(__self__, "last_commit_id", last_commit_id)
        if last_object_id is not None:
            pulumi.set(__self__, "last_object_id", last_object_id)
        if parent_entity_connector_ref is not None:
            pulumi.set(__self__, "parent_entity_connector_ref", parent_entity_connector_ref)
        if parent_entity_repo_name is not None:
            pulumi.set(__self__, "parent_entity_repo_name", parent_entity_repo_name)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)
        if store_type is not None:
            pulumi.set(__self__, "store_type", store_type)

    @_builtins.property
    @pulumi.getter(name="baseBranch")
    def base_branch(self) -> Optional[_builtins.str]:
        """
        Name of the default branch (this checks out a new branch titled by branch_name).
        """
        return pulumi.get(self, "base_branch")

    @_builtins.property
    @pulumi.getter(name="branchName")
    def branch_name(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch_name")

    @_builtins.property
    @pulumi.getter(name="commitMessage")
    def commit_message(self) -> Optional[_builtins.str]:
        """
        Commit message used for the merge commit.
        """
        return pulumi.get(self, "commit_message")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="isHarnessCodeRepo")
    def is_harness_code_repo(self) -> Optional[_builtins.bool]:
        """
        If the repo is harness code.
        """
        return pulumi.get(self, "is_harness_code_repo")

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> Optional[_builtins.str]:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> Optional[_builtins.str]:
        """
        Last object identifier (for Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="parentEntityConnectorRef")
    def parent_entity_connector_ref(self) -> Optional[_builtins.str]:
        """
        Connector reference for Parent Entity (Pipeline). To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "parent_entity_connector_ref")

    @_builtins.property
    @pulumi.getter(name="parentEntityRepoName")
    def parent_entity_repo_name(self) -> Optional[_builtins.str]:
        """
        Repository name for Parent Entity (Pipeline).
        """
        return pulumi.get(self, "parent_entity_repo_name")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="storeType")
    def store_type(self) -> Optional[_builtins.str]:
        """
        Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        return pulumi.get(self, "store_type")


@pulumi.output_type
class InputSetGitImportInfo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchName":
            suggest = "branch_name"
        elif key == "connectorRef":
            suggest = "connector_ref"
        elif key == "filePath":
            suggest = "file_path"
        elif key == "isForceImport":
            suggest = "is_force_import"
        elif key == "repoName":
            suggest = "repo_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InputSetGitImportInfo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InputSetGitImportInfo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InputSetGitImportInfo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_name: Optional[_builtins.str] = None,
                 connector_ref: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 is_force_import: Optional[_builtins.bool] = None,
                 repo_name: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_name: Name of the branch.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for importing entity from Git To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.str repo_name: Name of the repository.
        """
        if branch_name is not None:
            pulumi.set(__self__, "branch_name", branch_name)
        if connector_ref is not None:
            pulumi.set(__self__, "connector_ref", connector_ref)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if is_force_import is not None:
            pulumi.set(__self__, "is_force_import", is_force_import)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)

    @_builtins.property
    @pulumi.getter(name="branchName")
    def branch_name(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch_name")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for importing entity from Git To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="isForceImport")
    def is_force_import(self) -> Optional[_builtins.bool]:
        return pulumi.get(self, "is_force_import")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")


@pulumi.output_type
class InputSetInputSetImportRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "inputSetDescription":
            suggest = "input_set_description"
        elif key == "inputSetName":
            suggest = "input_set_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InputSetInputSetImportRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InputSetInputSetImportRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InputSetInputSetImportRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 input_set_description: Optional[_builtins.str] = None,
                 input_set_name: Optional[_builtins.str] = None):
        """
        :param _builtins.str input_set_description: Description of the input set.
        :param _builtins.str input_set_name: Name of the input set.
        """
        if input_set_description is not None:
            pulumi.set(__self__, "input_set_description", input_set_description)
        if input_set_name is not None:
            pulumi.set(__self__, "input_set_name", input_set_name)

    @_builtins.property
    @pulumi.getter(name="inputSetDescription")
    def input_set_description(self) -> Optional[_builtins.str]:
        """
        Description of the input set.
        """
        return pulumi.get(self, "input_set_description")

    @_builtins.property
    @pulumi.getter(name="inputSetName")
    def input_set_name(self) -> Optional[_builtins.str]:
        """
        Name of the input set.
        """
        return pulumi.get(self, "input_set_name")


@pulumi.output_type
class JenkinsConnectorAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "jenkinsBearerToken":
            suggest = "jenkins_bearer_token"
        elif key == "jenkinsUserNamePassword":
            suggest = "jenkins_user_name_password"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in JenkinsConnectorAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        JenkinsConnectorAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        JenkinsConnectorAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: _builtins.str,
                 jenkins_bearer_token: Optional['outputs.JenkinsConnectorAuthJenkinsBearerToken'] = None,
                 jenkins_user_name_password: Optional['outputs.JenkinsConnectorAuthJenkinsUserNamePassword'] = None):
        """
        :param _builtins.str type: Can be one of UsernamePassword, Anonymous, Bearer Token(HTTP Header)
        :param 'JenkinsConnectorAuthJenkinsBearerTokenArgs' jenkins_bearer_token: Authenticate to App Dynamics using bearer token.
        :param 'JenkinsConnectorAuthJenkinsUserNamePasswordArgs' jenkins_user_name_password: Authenticate to App Dynamics using user name and password.
        """
        pulumi.set(__self__, "type", type)
        if jenkins_bearer_token is not None:
            pulumi.set(__self__, "jenkins_bearer_token", jenkins_bearer_token)
        if jenkins_user_name_password is not None:
            pulumi.set(__self__, "jenkins_user_name_password", jenkins_user_name_password)

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Can be one of UsernamePassword, Anonymous, Bearer Token(HTTP Header)
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter(name="jenkinsBearerToken")
    def jenkins_bearer_token(self) -> Optional['outputs.JenkinsConnectorAuthJenkinsBearerToken']:
        """
        Authenticate to App Dynamics using bearer token.
        """
        return pulumi.get(self, "jenkins_bearer_token")

    @_builtins.property
    @pulumi.getter(name="jenkinsUserNamePassword")
    def jenkins_user_name_password(self) -> Optional['outputs.JenkinsConnectorAuthJenkinsUserNamePassword']:
        """
        Authenticate to App Dynamics using user name and password.
        """
        return pulumi.get(self, "jenkins_user_name_password")


@pulumi.output_type
class JenkinsConnectorAuthJenkinsBearerToken(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tokenRef":
            suggest = "token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in JenkinsConnectorAuthJenkinsBearerToken. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        JenkinsConnectorAuthJenkinsBearerToken.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        JenkinsConnectorAuthJenkinsBearerToken.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 token_ref: _builtins.str):
        """
        :param _builtins.str token_ref: Reference of the token. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Reference of the token. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class JenkinsConnectorAuthJenkinsUserNamePassword(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in JenkinsConnectorAuthJenkinsUserNamePassword. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        JenkinsConnectorAuthJenkinsUserNamePassword.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        JenkinsConnectorAuthJenkinsUserNamePassword.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Username reference to use for authentication.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Username reference to use for authentication.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class JiraConnectorAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "authType":
            suggest = "auth_type"
        elif key == "personalAccessToken":
            suggest = "personal_access_token"
        elif key == "usernamePassword":
            suggest = "username_password"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in JiraConnectorAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        JiraConnectorAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        JiraConnectorAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 auth_type: _builtins.str,
                 personal_access_token: Optional['outputs.JiraConnectorAuthPersonalAccessToken'] = None,
                 username_password: Optional['outputs.JiraConnectorAuthUsernamePassword'] = None):
        """
        :param _builtins.str auth_type: Authentication types for Jira connector
        :param 'JiraConnectorAuthPersonalAccessTokenArgs' personal_access_token: Authenticate using personal access token.
        :param 'JiraConnectorAuthUsernamePasswordArgs' username_password: Authenticate using username password.
        """
        pulumi.set(__self__, "auth_type", auth_type)
        if personal_access_token is not None:
            pulumi.set(__self__, "personal_access_token", personal_access_token)
        if username_password is not None:
            pulumi.set(__self__, "username_password", username_password)

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> _builtins.str:
        """
        Authentication types for Jira connector
        """
        return pulumi.get(self, "auth_type")

    @_builtins.property
    @pulumi.getter(name="personalAccessToken")
    def personal_access_token(self) -> Optional['outputs.JiraConnectorAuthPersonalAccessToken']:
        """
        Authenticate using personal access token.
        """
        return pulumi.get(self, "personal_access_token")

    @_builtins.property
    @pulumi.getter(name="usernamePassword")
    def username_password(self) -> Optional['outputs.JiraConnectorAuthUsernamePassword']:
        """
        Authenticate using username password.
        """
        return pulumi.get(self, "username_password")


@pulumi.output_type
class JiraConnectorAuthPersonalAccessToken(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "patRef":
            suggest = "pat_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in JiraConnectorAuthPersonalAccessToken. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        JiraConnectorAuthPersonalAccessToken.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        JiraConnectorAuthPersonalAccessToken.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 pat_ref: _builtins.str):
        """
        :param _builtins.str pat_ref: Reference to a secret containing the personal access token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "pat_ref", pat_ref)

    @_builtins.property
    @pulumi.getter(name="patRef")
    def pat_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the personal access token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "pat_ref")


@pulumi.output_type
class JiraConnectorAuthUsernamePassword(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in JiraConnectorAuthUsernamePassword. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        JiraConnectorAuthUsernamePassword.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        JiraConnectorAuthUsernamePassword.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class KubernetesConnectorClientKeyCert(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientCertRef":
            suggest = "client_cert_ref"
        elif key == "clientKeyAlgorithm":
            suggest = "client_key_algorithm"
        elif key == "clientKeyRef":
            suggest = "client_key_ref"
        elif key == "masterUrl":
            suggest = "master_url"
        elif key == "caCertRef":
            suggest = "ca_cert_ref"
        elif key == "clientKeyPassphraseRef":
            suggest = "client_key_passphrase_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in KubernetesConnectorClientKeyCert. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        KubernetesConnectorClientKeyCert.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        KubernetesConnectorClientKeyCert.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 client_cert_ref: _builtins.str,
                 client_key_algorithm: _builtins.str,
                 client_key_ref: _builtins.str,
                 master_url: _builtins.str,
                 ca_cert_ref: Optional[_builtins.str] = None,
                 client_key_passphrase_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str client_cert_ref: Reference to the secret containing the client certificate for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str client_key_algorithm: The algorithm used to generate the client key for the connector. Valid values are RSA, EC
        :param _builtins.str client_key_ref: Reference to the secret containing the client key for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str master_url: The URL of the Kubernetes cluster.
        :param _builtins.str ca_cert_ref: Reference to the secret containing the CA certificate for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str client_key_passphrase_ref: Reference to the secret containing the client key passphrase for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "client_cert_ref", client_cert_ref)
        pulumi.set(__self__, "client_key_algorithm", client_key_algorithm)
        pulumi.set(__self__, "client_key_ref", client_key_ref)
        pulumi.set(__self__, "master_url", master_url)
        if ca_cert_ref is not None:
            pulumi.set(__self__, "ca_cert_ref", ca_cert_ref)
        if client_key_passphrase_ref is not None:
            pulumi.set(__self__, "client_key_passphrase_ref", client_key_passphrase_ref)

    @_builtins.property
    @pulumi.getter(name="clientCertRef")
    def client_cert_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the client certificate for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_cert_ref")

    @_builtins.property
    @pulumi.getter(name="clientKeyAlgorithm")
    def client_key_algorithm(self) -> _builtins.str:
        """
        The algorithm used to generate the client key for the connector. Valid values are RSA, EC
        """
        return pulumi.get(self, "client_key_algorithm")

    @_builtins.property
    @pulumi.getter(name="clientKeyRef")
    def client_key_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the client key for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_key_ref")

    @_builtins.property
    @pulumi.getter(name="masterUrl")
    def master_url(self) -> _builtins.str:
        """
        The URL of the Kubernetes cluster.
        """
        return pulumi.get(self, "master_url")

    @_builtins.property
    @pulumi.getter(name="caCertRef")
    def ca_cert_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the secret containing the CA certificate for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ca_cert_ref")

    @_builtins.property
    @pulumi.getter(name="clientKeyPassphraseRef")
    def client_key_passphrase_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the secret containing the client key passphrase for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_key_passphrase_ref")


@pulumi.output_type
class KubernetesConnectorInheritFromDelegate(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "delegateSelectors":
            suggest = "delegate_selectors"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in KubernetesConnectorInheritFromDelegate. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        KubernetesConnectorInheritFromDelegate.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        KubernetesConnectorInheritFromDelegate.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 delegate_selectors: Sequence[_builtins.str]):
        """
        :param Sequence[_builtins.str] delegate_selectors: Selectors to use for the delegate.
        """
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        Selectors to use for the delegate.
        """
        return pulumi.get(self, "delegate_selectors")


@pulumi.output_type
class KubernetesConnectorOpenidConnect(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientIdRef":
            suggest = "client_id_ref"
        elif key == "issuerUrl":
            suggest = "issuer_url"
        elif key == "masterUrl":
            suggest = "master_url"
        elif key == "passwordRef":
            suggest = "password_ref"
        elif key == "secretRef":
            suggest = "secret_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in KubernetesConnectorOpenidConnect. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        KubernetesConnectorOpenidConnect.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        KubernetesConnectorOpenidConnect.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 client_id_ref: _builtins.str,
                 issuer_url: _builtins.str,
                 master_url: _builtins.str,
                 password_ref: _builtins.str,
                 scopes: Optional[Sequence[_builtins.str]] = None,
                 secret_ref: Optional[_builtins.str] = None,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str client_id_ref: Reference to the secret containing the client ID for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str issuer_url: The URL of the OpenID Connect issuer.
        :param _builtins.str master_url: The URL of the Kubernetes cluster.
        :param _builtins.str password_ref: Reference to the secret containing the password for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param Sequence[_builtins.str] scopes: Scopes to request for the connector.
        :param _builtins.str secret_ref: Reference to the secret containing the client secret for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username for the connector.
        :param _builtins.str username_ref: Reference to the secret containing the username for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "client_id_ref", client_id_ref)
        pulumi.set(__self__, "issuer_url", issuer_url)
        pulumi.set(__self__, "master_url", master_url)
        pulumi.set(__self__, "password_ref", password_ref)
        if scopes is not None:
            pulumi.set(__self__, "scopes", scopes)
        if secret_ref is not None:
            pulumi.set(__self__, "secret_ref", secret_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="clientIdRef")
    def client_id_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the client ID for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_id_ref")

    @_builtins.property
    @pulumi.getter(name="issuerUrl")
    def issuer_url(self) -> _builtins.str:
        """
        The URL of the OpenID Connect issuer.
        """
        return pulumi.get(self, "issuer_url")

    @_builtins.property
    @pulumi.getter(name="masterUrl")
    def master_url(self) -> _builtins.str:
        """
        The URL of the Kubernetes cluster.
        """
        return pulumi.get(self, "master_url")

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the password for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def scopes(self) -> Optional[Sequence[_builtins.str]]:
        """
        Scopes to request for the connector.
        """
        return pulumi.get(self, "scopes")

    @_builtins.property
    @pulumi.getter(name="secretRef")
    def secret_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the secret containing the client secret for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "secret_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for the connector.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the secret containing the username for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class KubernetesConnectorServiceAccount(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "masterUrl":
            suggest = "master_url"
        elif key == "serviceAccountTokenRef":
            suggest = "service_account_token_ref"
        elif key == "caCertRef":
            suggest = "ca_cert_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in KubernetesConnectorServiceAccount. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        KubernetesConnectorServiceAccount.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        KubernetesConnectorServiceAccount.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 master_url: _builtins.str,
                 service_account_token_ref: _builtins.str,
                 ca_cert_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str master_url: The URL of the Kubernetes cluster.
        :param _builtins.str service_account_token_ref: Reference to the secret containing the service account token for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str ca_cert_ref: Reference to the secret containing the CA certificate for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "master_url", master_url)
        pulumi.set(__self__, "service_account_token_ref", service_account_token_ref)
        if ca_cert_ref is not None:
            pulumi.set(__self__, "ca_cert_ref", ca_cert_ref)

    @_builtins.property
    @pulumi.getter(name="masterUrl")
    def master_url(self) -> _builtins.str:
        """
        The URL of the Kubernetes cluster.
        """
        return pulumi.get(self, "master_url")

    @_builtins.property
    @pulumi.getter(name="serviceAccountTokenRef")
    def service_account_token_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the service account token for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "service_account_token_ref")

    @_builtins.property
    @pulumi.getter(name="caCertRef")
    def ca_cert_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the secret containing the CA certificate for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ca_cert_ref")


@pulumi.output_type
class KubernetesConnectorUsernamePassword(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "masterUrl":
            suggest = "master_url"
        elif key == "passwordRef":
            suggest = "password_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in KubernetesConnectorUsernamePassword. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        KubernetesConnectorUsernamePassword.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        KubernetesConnectorUsernamePassword.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 master_url: _builtins.str,
                 password_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str master_url: The URL of the Kubernetes cluster.
        :param _builtins.str password_ref: Reference to the secret containing the password for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username for the connector.
        :param _builtins.str username_ref: Reference to the secret containing the username for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "master_url", master_url)
        pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="masterUrl")
    def master_url(self) -> _builtins.str:
        """
        The URL of the Kubernetes cluster.
        """
        return pulumi.get(self, "master_url")

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the password for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for the connector.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the secret containing the username for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class ManualFreezeCurrentOrUpcomingWindow(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "endTime":
            suggest = "end_time"
        elif key == "startTime":
            suggest = "start_time"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ManualFreezeCurrentOrUpcomingWindow. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ManualFreezeCurrentOrUpcomingWindow.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ManualFreezeCurrentOrUpcomingWindow.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 end_time: Optional[_builtins.int] = None,
                 start_time: Optional[_builtins.int] = None):
        """
        :param _builtins.int end_time: End time of the freeze window
        :param _builtins.int start_time: Start time of the freeze window
        """
        if end_time is not None:
            pulumi.set(__self__, "end_time", end_time)
        if start_time is not None:
            pulumi.set(__self__, "start_time", start_time)

    @_builtins.property
    @pulumi.getter(name="endTime")
    def end_time(self) -> Optional[_builtins.int]:
        """
        End time of the freeze window
        """
        return pulumi.get(self, "end_time")

    @_builtins.property
    @pulumi.getter(name="startTime")
    def start_time(self) -> Optional[_builtins.int]:
        """
        Start time of the freeze window
        """
        return pulumi.get(self, "start_time")


@pulumi.output_type
class ManualFreezeFreezeWindow(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "endTime":
            suggest = "end_time"
        elif key == "startTime":
            suggest = "start_time"
        elif key == "timeZone":
            suggest = "time_zone"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ManualFreezeFreezeWindow. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ManualFreezeFreezeWindow.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ManualFreezeFreezeWindow.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 duration: Optional[_builtins.str] = None,
                 end_time: Optional[_builtins.str] = None,
                 recurrences: Optional[Sequence['outputs.ManualFreezeFreezeWindowRecurrence']] = None,
                 start_time: Optional[_builtins.str] = None,
                 time_zone: Optional[_builtins.str] = None):
        """
        :param _builtins.str duration: Duration of the freeze window
        :param _builtins.str end_time: End Time of the freeze window
        :param Sequence['ManualFreezeFreezeWindowRecurrenceArgs'] recurrences: Recurrence of the freeze window
        :param _builtins.str start_time: Start Time of the freeze window
        :param _builtins.str time_zone: Time zone of the freeze window
        """
        if duration is not None:
            pulumi.set(__self__, "duration", duration)
        if end_time is not None:
            pulumi.set(__self__, "end_time", end_time)
        if recurrences is not None:
            pulumi.set(__self__, "recurrences", recurrences)
        if start_time is not None:
            pulumi.set(__self__, "start_time", start_time)
        if time_zone is not None:
            pulumi.set(__self__, "time_zone", time_zone)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> Optional[_builtins.str]:
        """
        Duration of the freeze window
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter(name="endTime")
    def end_time(self) -> Optional[_builtins.str]:
        """
        End Time of the freeze window
        """
        return pulumi.get(self, "end_time")

    @_builtins.property
    @pulumi.getter
    def recurrences(self) -> Optional[Sequence['outputs.ManualFreezeFreezeWindowRecurrence']]:
        """
        Recurrence of the freeze window
        """
        return pulumi.get(self, "recurrences")

    @_builtins.property
    @pulumi.getter(name="startTime")
    def start_time(self) -> Optional[_builtins.str]:
        """
        Start Time of the freeze window
        """
        return pulumi.get(self, "start_time")

    @_builtins.property
    @pulumi.getter(name="timeZone")
    def time_zone(self) -> Optional[_builtins.str]:
        """
        Time zone of the freeze window
        """
        return pulumi.get(self, "time_zone")


@pulumi.output_type
class ManualFreezeFreezeWindowRecurrence(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "recurrenceSpecs":
            suggest = "recurrence_specs"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ManualFreezeFreezeWindowRecurrence. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ManualFreezeFreezeWindowRecurrence.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ManualFreezeFreezeWindowRecurrence.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 recurrence_specs: Optional[Sequence['outputs.ManualFreezeFreezeWindowRecurrenceRecurrenceSpec']] = None,
                 type: Optional[_builtins.str] = None):
        """
        :param Sequence['ManualFreezeFreezeWindowRecurrenceRecurrenceSpecArgs'] recurrence_specs: Used to filter resources on their attributes
        :param _builtins.str type: Type of the recurrence
        """
        if recurrence_specs is not None:
            pulumi.set(__self__, "recurrence_specs", recurrence_specs)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="recurrenceSpecs")
    def recurrence_specs(self) -> Optional[Sequence['outputs.ManualFreezeFreezeWindowRecurrenceRecurrenceSpec']]:
        """
        Used to filter resources on their attributes
        """
        return pulumi.get(self, "recurrence_specs")

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[_builtins.str]:
        """
        Type of the recurrence
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class ManualFreezeFreezeWindowRecurrenceRecurrenceSpec(dict):
    def __init__(__self__, *,
                 until: Optional[_builtins.str] = None,
                 value: Optional[_builtins.int] = None):
        """
        :param _builtins.str until: Time till which freeze window recurrs
        :param _builtins.int value: Every n months recurrence
        """
        if until is not None:
            pulumi.set(__self__, "until", until)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def until(self) -> Optional[_builtins.str]:
        """
        Time till which freeze window recurrs
        """
        return pulumi.get(self, "until")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.int]:
        """
        Every n months recurrence
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class MonitoredServiceRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "environmentRef":
            suggest = "environment_ref"
        elif key == "serviceRef":
            suggest = "service_ref"
        elif key == "changeSources":
            suggest = "change_sources"
        elif key == "environmentRefLists":
            suggest = "environment_ref_lists"
        elif key == "healthSources":
            suggest = "health_sources"
        elif key == "notificationRuleRefs":
            suggest = "notification_rule_refs"
        elif key == "templateRef":
            suggest = "template_ref"
        elif key == "versionLabel":
            suggest = "version_label"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in MonitoredServiceRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        MonitoredServiceRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        MonitoredServiceRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 environment_ref: _builtins.str,
                 name: _builtins.str,
                 service_ref: _builtins.str,
                 type: _builtins.str,
                 change_sources: Optional[Sequence['outputs.MonitoredServiceRequestChangeSource']] = None,
                 dependencies: Optional[Sequence['outputs.MonitoredServiceRequestDependency']] = None,
                 description: Optional[_builtins.str] = None,
                 enabled: Optional[_builtins.bool] = None,
                 environment_ref_lists: Optional[Sequence[_builtins.str]] = None,
                 health_sources: Optional[Sequence['outputs.MonitoredServiceRequestHealthSource']] = None,
                 notification_rule_refs: Optional[Sequence['outputs.MonitoredServiceRequestNotificationRuleRef']] = None,
                 tags: Optional[Sequence[_builtins.str]] = None,
                 template_ref: Optional[_builtins.str] = None,
                 version_label: Optional[_builtins.str] = None):
        """
        :param _builtins.str environment_ref: Environment in which the service is deployed.
        :param _builtins.str name: Name for the monitored service.
        :param _builtins.str service_ref: Service reference for the monitored service.
        :param _builtins.str type: Type of the monitored service.
        :param Sequence['MonitoredServiceRequestChangeSourceArgs'] change_sources: Set of change sources for the monitored service.
        :param Sequence['MonitoredServiceRequestDependencyArgs'] dependencies: Dependencies of the monitored service.
        :param _builtins.str description: Description for the monitored service.
        :param _builtins.bool enabled: Enable or disable the monitored service.
        :param Sequence[_builtins.str] environment_ref_lists: Environment reference list for the monitored service.
        :param Sequence['MonitoredServiceRequestHealthSourceArgs'] health_sources: Set of health sources for the monitored service.
        :param Sequence['MonitoredServiceRequestNotificationRuleRefArgs'] notification_rule_refs: Notification rule references for the monitored service.
        :param Sequence[_builtins.str] tags: Tags for the monitored service. comma-separated key value string pairs.
        :param _builtins.str template_ref: Template reference for the monitored service.
        :param _builtins.str version_label: Template version label for the monitored service.
        """
        pulumi.set(__self__, "environment_ref", environment_ref)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "service_ref", service_ref)
        pulumi.set(__self__, "type", type)
        if change_sources is not None:
            pulumi.set(__self__, "change_sources", change_sources)
        if dependencies is not None:
            pulumi.set(__self__, "dependencies", dependencies)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if environment_ref_lists is not None:
            pulumi.set(__self__, "environment_ref_lists", environment_ref_lists)
        if health_sources is not None:
            pulumi.set(__self__, "health_sources", health_sources)
        if notification_rule_refs is not None:
            pulumi.set(__self__, "notification_rule_refs", notification_rule_refs)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if template_ref is not None:
            pulumi.set(__self__, "template_ref", template_ref)
        if version_label is not None:
            pulumi.set(__self__, "version_label", version_label)

    @_builtins.property
    @pulumi.getter(name="environmentRef")
    def environment_ref(self) -> _builtins.str:
        """
        Environment in which the service is deployed.
        """
        return pulumi.get(self, "environment_ref")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name for the monitored service.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="serviceRef")
    def service_ref(self) -> _builtins.str:
        """
        Service reference for the monitored service.
        """
        return pulumi.get(self, "service_ref")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of the monitored service.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter(name="changeSources")
    def change_sources(self) -> Optional[Sequence['outputs.MonitoredServiceRequestChangeSource']]:
        """
        Set of change sources for the monitored service.
        """
        return pulumi.get(self, "change_sources")

    @_builtins.property
    @pulumi.getter
    def dependencies(self) -> Optional[Sequence['outputs.MonitoredServiceRequestDependency']]:
        """
        Dependencies of the monitored service.
        """
        return pulumi.get(self, "dependencies")

    @_builtins.property
    @pulumi.getter
    def description(self) -> Optional[_builtins.str]:
        """
        Description for the monitored service.
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter
    @_utilities.deprecated("""enabled field is deprecated""")
    def enabled(self) -> Optional[_builtins.bool]:
        """
        Enable or disable the monitored service.
        """
        return pulumi.get(self, "enabled")

    @_builtins.property
    @pulumi.getter(name="environmentRefLists")
    def environment_ref_lists(self) -> Optional[Sequence[_builtins.str]]:
        """
        Environment reference list for the monitored service.
        """
        return pulumi.get(self, "environment_ref_lists")

    @_builtins.property
    @pulumi.getter(name="healthSources")
    def health_sources(self) -> Optional[Sequence['outputs.MonitoredServiceRequestHealthSource']]:
        """
        Set of health sources for the monitored service.
        """
        return pulumi.get(self, "health_sources")

    @_builtins.property
    @pulumi.getter(name="notificationRuleRefs")
    def notification_rule_refs(self) -> Optional[Sequence['outputs.MonitoredServiceRequestNotificationRuleRef']]:
        """
        Notification rule references for the monitored service.
        """
        return pulumi.get(self, "notification_rule_refs")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Optional[Sequence[_builtins.str]]:
        """
        Tags for the monitored service. comma-separated key value string pairs.
        """
        return pulumi.get(self, "tags")

    @_builtins.property
    @pulumi.getter(name="templateRef")
    def template_ref(self) -> Optional[_builtins.str]:
        """
        Template reference for the monitored service.
        """
        return pulumi.get(self, "template_ref")

    @_builtins.property
    @pulumi.getter(name="versionLabel")
    def version_label(self) -> Optional[_builtins.str]:
        """
        Template version label for the monitored service.
        """
        return pulumi.get(self, "version_label")


@pulumi.output_type
class MonitoredServiceRequestChangeSource(dict):
    def __init__(__self__, *,
                 category: _builtins.str,
                 identifier: _builtins.str,
                 name: _builtins.str,
                 type: _builtins.str,
                 enabled: Optional[_builtins.bool] = None,
                 spec: Optional[_builtins.str] = None):
        """
        :param _builtins.str category: Category of the change source.
        :param _builtins.str identifier: Identifier of the change source.
        :param _builtins.str name: Name of the change source.
        :param _builtins.str type: Type of the change source.
        :param _builtins.bool enabled: Enable or disable the change source.
        :param _builtins.str spec: Specification of the change source. Depends on the type of the change source.
        """
        pulumi.set(__self__, "category", category)
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def category(self) -> _builtins.str:
        """
        Category of the change source.
        """
        return pulumi.get(self, "category")

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        """
        Identifier of the change source.
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the change source.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of the change source.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> Optional[_builtins.bool]:
        """
        Enable or disable the change source.
        """
        return pulumi.get(self, "enabled")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional[_builtins.str]:
        """
        Specification of the change source. Depends on the type of the change source.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class MonitoredServiceRequestDependency(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "monitoredServiceIdentifier":
            suggest = "monitored_service_identifier"
        elif key == "dependencyMetadata":
            suggest = "dependency_metadata"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in MonitoredServiceRequestDependency. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        MonitoredServiceRequestDependency.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        MonitoredServiceRequestDependency.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 monitored_service_identifier: _builtins.str,
                 type: _builtins.str,
                 dependency_metadata: Optional[_builtins.str] = None):
        """
        :param _builtins.str monitored_service_identifier: Monitored service identifier of the dependency.
        :param _builtins.str type: Type of the service dependency.
        :param _builtins.str dependency_metadata: Dependency metadata for the monitored service.
        """
        pulumi.set(__self__, "monitored_service_identifier", monitored_service_identifier)
        pulumi.set(__self__, "type", type)
        if dependency_metadata is not None:
            pulumi.set(__self__, "dependency_metadata", dependency_metadata)

    @_builtins.property
    @pulumi.getter(name="monitoredServiceIdentifier")
    def monitored_service_identifier(self) -> _builtins.str:
        """
        Monitored service identifier of the dependency.
        """
        return pulumi.get(self, "monitored_service_identifier")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of the service dependency.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter(name="dependencyMetadata")
    def dependency_metadata(self) -> Optional[_builtins.str]:
        """
        Dependency metadata for the monitored service.
        """
        return pulumi.get(self, "dependency_metadata")


@pulumi.output_type
class MonitoredServiceRequestHealthSource(dict):
    def __init__(__self__, *,
                 identifier: _builtins.str,
                 name: _builtins.str,
                 spec: _builtins.str,
                 type: _builtins.str,
                 version: Optional[_builtins.str] = None):
        """
        :param _builtins.str identifier: Identifier of the health source.
        :param _builtins.str name: Name of the health source.
        :param _builtins.str spec: Specification of the health source. Depends on the type of the health source.
        :param _builtins.str type: Type of the health source.
        :param _builtins.str version: Version of the health source.
        """
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "spec", spec)
        pulumi.set(__self__, "type", type)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        """
        Identifier of the health source.
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the health source.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> _builtins.str:
        """
        Specification of the health source. Depends on the type of the health source.
        """
        return pulumi.get(self, "spec")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of the health source.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of the health source.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class MonitoredServiceRequestNotificationRuleRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "notificationRuleRef":
            suggest = "notification_rule_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in MonitoredServiceRequestNotificationRuleRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        MonitoredServiceRequestNotificationRuleRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        MonitoredServiceRequestNotificationRuleRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 enabled: _builtins.bool,
                 notification_rule_ref: _builtins.str):
        """
        :param _builtins.bool enabled: Enable or disable notification rule reference for the monitored service.
        :param _builtins.str notification_rule_ref: Notification rule reference for the monitored service.
        """
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "notification_rule_ref", notification_rule_ref)

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> _builtins.bool:
        """
        Enable or disable notification rule reference for the monitored service.
        """
        return pulumi.get(self, "enabled")

    @_builtins.property
    @pulumi.getter(name="notificationRuleRef")
    def notification_rule_ref(self) -> _builtins.str:
        """
        Notification rule reference for the monitored service.
        """
        return pulumi.get(self, "notification_rule_ref")


@pulumi.output_type
class NexusConnectorCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in NexusConnectorCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        NexusConnectorCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        NexusConnectorCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class NotificationRuleRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "notificationMethod":
            suggest = "notification_method"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in NotificationRuleRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        NotificationRuleRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        NotificationRuleRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 conditions: Sequence['outputs.NotificationRuleRequestCondition'],
                 name: _builtins.str,
                 notification_method: 'outputs.NotificationRuleRequestNotificationMethod',
                 type: _builtins.str):
        """
        :param Sequence['NotificationRuleRequestConditionArgs'] conditions: Notification Rule conditions specification.
        :param _builtins.str name: Name for the Notification Rule.
        :param 'NotificationRuleRequestNotificationMethodArgs' notification_method: Notification Method specifications.
        :param _builtins.str type: Type of the Notification Rule.
        """
        pulumi.set(__self__, "conditions", conditions)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "notification_method", notification_method)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter
    def conditions(self) -> Sequence['outputs.NotificationRuleRequestCondition']:
        """
        Notification Rule conditions specification.
        """
        return pulumi.get(self, "conditions")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name for the Notification Rule.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="notificationMethod")
    def notification_method(self) -> 'outputs.NotificationRuleRequestNotificationMethod':
        """
        Notification Method specifications.
        """
        return pulumi.get(self, "notification_method")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of the Notification Rule.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class NotificationRuleRequestCondition(dict):
    def __init__(__self__, *,
                 type: _builtins.str,
                 spec: Optional[_builtins.str] = None):
        """
        :param _builtins.str type: Type of the condition.
        :param _builtins.str spec: Specification of the notification condition. Depends on the type of the notification condition.
        """
        pulumi.set(__self__, "type", type)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of the condition.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional[_builtins.str]:
        """
        Specification of the notification condition. Depends on the type of the notification condition.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class NotificationRuleRequestNotificationMethod(dict):
    def __init__(__self__, *,
                 type: _builtins.str,
                 spec: Optional[_builtins.str] = None):
        """
        :param _builtins.str type: Type of the Notification Method.
        :param _builtins.str spec: Specification of the notification method. Depends on the type of the notification method.
        """
        pulumi.set(__self__, "type", type)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of the Notification Method.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional[_builtins.str]:
        """
        Specification of the notification method. Depends on the type of the notification method.
        """
        return pulumi.get(self, "spec")


@pulumi.output_type
class OciHelmConnectorCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in OciHelmConnectorCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        OciHelmConnectorCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        OciHelmConnectorCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class OverridesGitDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "baseBranch":
            suggest = "base_branch"
        elif key == "commitMessage":
            suggest = "commit_message"
        elif key == "connectorRef":
            suggest = "connector_ref"
        elif key == "filePath":
            suggest = "file_path"
        elif key == "isHarnessCodeRepo":
            suggest = "is_harness_code_repo"
        elif key == "isNewBranch":
            suggest = "is_new_branch"
        elif key == "lastCommitId":
            suggest = "last_commit_id"
        elif key == "lastObjectId":
            suggest = "last_object_id"
        elif key == "loadFromCache":
            suggest = "load_from_cache"
        elif key == "loadFromFallbackBranch":
            suggest = "load_from_fallback_branch"
        elif key == "repoName":
            suggest = "repo_name"
        elif key == "storeType":
            suggest = "store_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in OverridesGitDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        OverridesGitDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        OverridesGitDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 base_branch: Optional[_builtins.str] = None,
                 branch: Optional[_builtins.str] = None,
                 commit_message: Optional[_builtins.str] = None,
                 connector_ref: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 is_harness_code_repo: Optional[_builtins.bool] = None,
                 is_new_branch: Optional[_builtins.bool] = None,
                 last_commit_id: Optional[_builtins.str] = None,
                 last_object_id: Optional[_builtins.str] = None,
                 load_from_cache: Optional[_builtins.bool] = None,
                 load_from_fallback_branch: Optional[_builtins.bool] = None,
                 repo_name: Optional[_builtins.str] = None,
                 store_type: Optional[_builtins.str] = None):
        """
        :param _builtins.str base_branch: Name of the default branch (this checks out a new branch titled by branch_name).
        :param _builtins.str branch: Name of the branch.
        :param _builtins.str commit_message: Commit message used for the merge commit.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.bool is_harness_code_repo: If the repo is in harness code
        :param _builtins.bool is_new_branch: If the branch being created is new
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating override.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating override.
        :param _builtins.bool load_from_cache: Load service yaml from catch
        :param _builtins.bool load_from_fallback_branch: Load service yaml from fallback branch
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str store_type: Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        if base_branch is not None:
            pulumi.set(__self__, "base_branch", base_branch)
        if branch is not None:
            pulumi.set(__self__, "branch", branch)
        if commit_message is not None:
            pulumi.set(__self__, "commit_message", commit_message)
        if connector_ref is not None:
            pulumi.set(__self__, "connector_ref", connector_ref)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if is_harness_code_repo is not None:
            pulumi.set(__self__, "is_harness_code_repo", is_harness_code_repo)
        if is_new_branch is not None:
            pulumi.set(__self__, "is_new_branch", is_new_branch)
        if last_commit_id is not None:
            pulumi.set(__self__, "last_commit_id", last_commit_id)
        if last_object_id is not None:
            pulumi.set(__self__, "last_object_id", last_object_id)
        if load_from_cache is not None:
            pulumi.set(__self__, "load_from_cache", load_from_cache)
        if load_from_fallback_branch is not None:
            pulumi.set(__self__, "load_from_fallback_branch", load_from_fallback_branch)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)
        if store_type is not None:
            pulumi.set(__self__, "store_type", store_type)

    @_builtins.property
    @pulumi.getter(name="baseBranch")
    def base_branch(self) -> Optional[_builtins.str]:
        """
        Name of the default branch (this checks out a new branch titled by branch_name).
        """
        return pulumi.get(self, "base_branch")

    @_builtins.property
    @pulumi.getter
    def branch(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch")

    @_builtins.property
    @pulumi.getter(name="commitMessage")
    def commit_message(self) -> Optional[_builtins.str]:
        """
        Commit message used for the merge commit.
        """
        return pulumi.get(self, "commit_message")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="isHarnessCodeRepo")
    def is_harness_code_repo(self) -> Optional[_builtins.bool]:
        """
        If the repo is in harness code
        """
        return pulumi.get(self, "is_harness_code_repo")

    @_builtins.property
    @pulumi.getter(name="isNewBranch")
    def is_new_branch(self) -> Optional[_builtins.bool]:
        """
        If the branch being created is new
        """
        return pulumi.get(self, "is_new_branch")

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> Optional[_builtins.str]:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating override.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> Optional[_builtins.str]:
        """
        Last object identifier (for Github). To be provided only when updating override.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="loadFromCache")
    def load_from_cache(self) -> Optional[_builtins.bool]:
        """
        Load service yaml from catch
        """
        return pulumi.get(self, "load_from_cache")

    @_builtins.property
    @pulumi.getter(name="loadFromFallbackBranch")
    def load_from_fallback_branch(self) -> Optional[_builtins.bool]:
        """
        Load service yaml from fallback branch
        """
        return pulumi.get(self, "load_from_fallback_branch")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="storeType")
    def store_type(self) -> Optional[_builtins.str]:
        """
        Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        return pulumi.get(self, "store_type")


@pulumi.output_type
class PipelineCentralNotificationRuleCustomNotificationTemplateRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "templateRef":
            suggest = "template_ref"
        elif key == "versionLabel":
            suggest = "version_label"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PipelineCentralNotificationRuleCustomNotificationTemplateRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PipelineCentralNotificationRuleCustomNotificationTemplateRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PipelineCentralNotificationRuleCustomNotificationTemplateRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 template_ref: _builtins.str,
                 version_label: _builtins.str,
                 variables: Optional[Sequence['outputs.PipelineCentralNotificationRuleCustomNotificationTemplateRefVariable']] = None):
        pulumi.set(__self__, "template_ref", template_ref)
        pulumi.set(__self__, "version_label", version_label)
        if variables is not None:
            pulumi.set(__self__, "variables", variables)

    @_builtins.property
    @pulumi.getter(name="templateRef")
    def template_ref(self) -> _builtins.str:
        return pulumi.get(self, "template_ref")

    @_builtins.property
    @pulumi.getter(name="versionLabel")
    def version_label(self) -> _builtins.str:
        return pulumi.get(self, "version_label")

    @_builtins.property
    @pulumi.getter
    def variables(self) -> Optional[Sequence['outputs.PipelineCentralNotificationRuleCustomNotificationTemplateRefVariable']]:
        return pulumi.get(self, "variables")


@pulumi.output_type
class PipelineCentralNotificationRuleCustomNotificationTemplateRefVariable(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 value: _builtins.str,
                 type: Optional[_builtins.str] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "type")


@pulumi.output_type
class PipelineCentralNotificationRuleNotificationCondition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "conditionName":
            suggest = "condition_name"
        elif key == "notificationEventConfigs":
            suggest = "notification_event_configs"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PipelineCentralNotificationRuleNotificationCondition. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PipelineCentralNotificationRuleNotificationCondition.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PipelineCentralNotificationRuleNotificationCondition.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 condition_name: _builtins.str,
                 notification_event_configs: Sequence['outputs.PipelineCentralNotificationRuleNotificationConditionNotificationEventConfig']):
        pulumi.set(__self__, "condition_name", condition_name)
        pulumi.set(__self__, "notification_event_configs", notification_event_configs)

    @_builtins.property
    @pulumi.getter(name="conditionName")
    def condition_name(self) -> _builtins.str:
        return pulumi.get(self, "condition_name")

    @_builtins.property
    @pulumi.getter(name="notificationEventConfigs")
    def notification_event_configs(self) -> Sequence['outputs.PipelineCentralNotificationRuleNotificationConditionNotificationEventConfig']:
        return pulumi.get(self, "notification_event_configs")


@pulumi.output_type
class PipelineCentralNotificationRuleNotificationConditionNotificationEventConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "notificationEntity":
            suggest = "notification_entity"
        elif key == "notificationEvent":
            suggest = "notification_event"
        elif key == "entityIdentifiers":
            suggest = "entity_identifiers"
        elif key == "notificationEventDatas":
            suggest = "notification_event_datas"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PipelineCentralNotificationRuleNotificationConditionNotificationEventConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PipelineCentralNotificationRuleNotificationConditionNotificationEventConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PipelineCentralNotificationRuleNotificationConditionNotificationEventConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 notification_entity: _builtins.str,
                 notification_event: _builtins.str,
                 entity_identifiers: Optional[Sequence[_builtins.str]] = None,
                 notification_event_datas: Optional[Sequence['outputs.PipelineCentralNotificationRuleNotificationConditionNotificationEventConfigNotificationEventData']] = None):
        """
        :param _builtins.str notification_event: The pipeline event that triggers the notification. Supported values: `PIPELINE_START`, `PIPELINE_SUCCESS`, `PIPELINE_FAILED`, `STAGE_START`, `STAGE_SUCCESS`, `STAGE_FAILED`.
        """
        pulumi.set(__self__, "notification_entity", notification_entity)
        pulumi.set(__self__, "notification_event", notification_event)
        if entity_identifiers is not None:
            pulumi.set(__self__, "entity_identifiers", entity_identifiers)
        if notification_event_datas is not None:
            pulumi.set(__self__, "notification_event_datas", notification_event_datas)

    @_builtins.property
    @pulumi.getter(name="notificationEntity")
    def notification_entity(self) -> _builtins.str:
        return pulumi.get(self, "notification_entity")

    @_builtins.property
    @pulumi.getter(name="notificationEvent")
    def notification_event(self) -> _builtins.str:
        """
        The pipeline event that triggers the notification. Supported values: `PIPELINE_START`, `PIPELINE_SUCCESS`, `PIPELINE_FAILED`, `STAGE_START`, `STAGE_SUCCESS`, `STAGE_FAILED`.
        """
        return pulumi.get(self, "notification_event")

    @_builtins.property
    @pulumi.getter(name="entityIdentifiers")
    def entity_identifiers(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "entity_identifiers")

    @_builtins.property
    @pulumi.getter(name="notificationEventDatas")
    def notification_event_datas(self) -> Optional[Sequence['outputs.PipelineCentralNotificationRuleNotificationConditionNotificationEventConfigNotificationEventData']]:
        return pulumi.get(self, "notification_event_datas")


@pulumi.output_type
class PipelineCentralNotificationRuleNotificationConditionNotificationEventConfigNotificationEventData(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "scopeIdentifiers":
            suggest = "scope_identifiers"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PipelineCentralNotificationRuleNotificationConditionNotificationEventConfigNotificationEventData. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PipelineCentralNotificationRuleNotificationConditionNotificationEventConfigNotificationEventData.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PipelineCentralNotificationRuleNotificationConditionNotificationEventConfigNotificationEventData.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 scope_identifiers: Optional[Sequence[_builtins.str]] = None,
                 type: Optional[_builtins.str] = None):
        if scope_identifiers is not None:
            pulumi.set(__self__, "scope_identifiers", scope_identifiers)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="scopeIdentifiers")
    def scope_identifiers(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "scope_identifiers")

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "type")


@pulumi.output_type
class PipelineFiltersFilterProperties(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "filterType":
            suggest = "filter_type"
        elif key == "moduleProperties":
            suggest = "module_properties"
        elif key == "pipelineIdentifiers":
            suggest = "pipeline_identifiers"
        elif key == "pipelineName":
            suggest = "pipeline_name"
        elif key == "pipelineTags":
            suggest = "pipeline_tags"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PipelineFiltersFilterProperties. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PipelineFiltersFilterProperties.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PipelineFiltersFilterProperties.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 filter_type: _builtins.str,
                 description: Optional[_builtins.str] = None,
                 module_properties: Optional['outputs.PipelineFiltersFilterPropertiesModuleProperties'] = None,
                 name: Optional[_builtins.str] = None,
                 pipeline_identifiers: Optional[Sequence[_builtins.str]] = None,
                 pipeline_name: Optional[_builtins.str] = None,
                 pipeline_tags: Optional[Sequence[Mapping[str, _builtins.str]]] = None,
                 tags: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str filter_type: Corresponding Entity of the filters. Currently supported types are {Connector, DelegateProfile, Delegate, PipelineSetup, PipelineExecution, Deployment, Audit, Template, EnvironmentGroup, FileStore, CCMRecommendation, Anomaly, Environment}.
        :param _builtins.str description: description of the pipline filter.
        :param 'PipelineFiltersFilterPropertiesModulePropertiesArgs' module_properties: module properties of the pipline filter.
        :param _builtins.str name: Name of the pipeline filter.
        :param Sequence[_builtins.str] pipeline_identifiers: Pipeline identifiers to filter on.
        :param _builtins.str pipeline_name: Name of the pipeline execution filter.
        :param Sequence[Mapping[str, _builtins.str]] pipeline_tags: Tags to associate with the pipeline. tags should be in the form of `{key:key1, value:key1value}`
        :param Sequence[_builtins.str] tags: Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        pulumi.set(__self__, "filter_type", filter_type)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if module_properties is not None:
            pulumi.set(__self__, "module_properties", module_properties)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if pipeline_identifiers is not None:
            pulumi.set(__self__, "pipeline_identifiers", pipeline_identifiers)
        if pipeline_name is not None:
            pulumi.set(__self__, "pipeline_name", pipeline_name)
        if pipeline_tags is not None:
            pulumi.set(__self__, "pipeline_tags", pipeline_tags)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @_builtins.property
    @pulumi.getter(name="filterType")
    def filter_type(self) -> _builtins.str:
        """
        Corresponding Entity of the filters. Currently supported types are {Connector, DelegateProfile, Delegate, PipelineSetup, PipelineExecution, Deployment, Audit, Template, EnvironmentGroup, FileStore, CCMRecommendation, Anomaly, Environment}.
        """
        return pulumi.get(self, "filter_type")

    @_builtins.property
    @pulumi.getter
    def description(self) -> Optional[_builtins.str]:
        """
        description of the pipline filter.
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter(name="moduleProperties")
    def module_properties(self) -> Optional['outputs.PipelineFiltersFilterPropertiesModuleProperties']:
        """
        module properties of the pipline filter.
        """
        return pulumi.get(self, "module_properties")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the pipeline filter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="pipelineIdentifiers")
    def pipeline_identifiers(self) -> Optional[Sequence[_builtins.str]]:
        """
        Pipeline identifiers to filter on.
        """
        return pulumi.get(self, "pipeline_identifiers")

    @_builtins.property
    @pulumi.getter(name="pipelineName")
    def pipeline_name(self) -> Optional[_builtins.str]:
        """
        Name of the pipeline execution filter.
        """
        return pulumi.get(self, "pipeline_name")

    @_builtins.property
    @pulumi.getter(name="pipelineTags")
    def pipeline_tags(self) -> Optional[Sequence[Mapping[str, _builtins.str]]]:
        """
        Tags to associate with the pipeline. tags should be in the form of `{key:key1, value:key1value}`
        """
        return pulumi.get(self, "pipeline_tags")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Optional[Sequence[_builtins.str]]:
        """
        Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        return pulumi.get(self, "tags")


@pulumi.output_type
class PipelineFiltersFilterPropertiesModuleProperties(dict):
    def __init__(__self__, *,
                 cd: Optional['outputs.PipelineFiltersFilterPropertiesModulePropertiesCd'] = None,
                 ci: Optional['outputs.PipelineFiltersFilterPropertiesModulePropertiesCi'] = None):
        """
        :param 'PipelineFiltersFilterPropertiesModulePropertiesCdArgs' cd: CD related properties to be filtered on.
        :param 'PipelineFiltersFilterPropertiesModulePropertiesCiArgs' ci: CI related properties to be filtered on.
        """
        if cd is not None:
            pulumi.set(__self__, "cd", cd)
        if ci is not None:
            pulumi.set(__self__, "ci", ci)

    @_builtins.property
    @pulumi.getter
    def cd(self) -> Optional['outputs.PipelineFiltersFilterPropertiesModulePropertiesCd']:
        """
        CD related properties to be filtered on.
        """
        return pulumi.get(self, "cd")

    @_builtins.property
    @pulumi.getter
    def ci(self) -> Optional['outputs.PipelineFiltersFilterPropertiesModulePropertiesCi']:
        """
        CI related properties to be filtered on.
        """
        return pulumi.get(self, "ci")


@pulumi.output_type
class PipelineFiltersFilterPropertiesModulePropertiesCd(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "artifactDisplayNames":
            suggest = "artifact_display_names"
        elif key == "deploymentTypes":
            suggest = "deployment_types"
        elif key == "environmentIdentifiers":
            suggest = "environment_identifiers"
        elif key == "environmentNames":
            suggest = "environment_names"
        elif key == "serviceDefinitionTypes":
            suggest = "service_definition_types"
        elif key == "serviceIdentifiers":
            suggest = "service_identifiers"
        elif key == "serviceNames":
            suggest = "service_names"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PipelineFiltersFilterPropertiesModulePropertiesCd. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PipelineFiltersFilterPropertiesModulePropertiesCd.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PipelineFiltersFilterPropertiesModulePropertiesCd.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 artifact_display_names: Optional[Sequence[_builtins.str]] = None,
                 deployment_types: Optional[_builtins.str] = None,
                 environment_identifiers: Optional[Sequence[_builtins.str]] = None,
                 environment_names: Optional[Sequence[_builtins.str]] = None,
                 service_definition_types: Optional[_builtins.str] = None,
                 service_identifiers: Optional[Sequence[_builtins.str]] = None,
                 service_names: Optional[Sequence[_builtins.str]] = None):
        """
        :param Sequence[_builtins.str] artifact_display_names: Artifact display names of the CD pipeline.
        :param _builtins.str deployment_types: Deployment type of the CD pipeline, eg. Kubernetes
        :param Sequence[_builtins.str] environment_identifiers: Environment identifier of the CD pipeline.
        :param Sequence[_builtins.str] environment_names: Environment names of the CD pipeline.
        :param _builtins.str service_definition_types: Deployment type of the CD pipeline, eg. Kubernetes
        :param Sequence[_builtins.str] service_identifiers: Service identifiers of the CD pipeline.
        :param Sequence[_builtins.str] service_names: Service names of the CD pipeline.
        """
        if artifact_display_names is not None:
            pulumi.set(__self__, "artifact_display_names", artifact_display_names)
        if deployment_types is not None:
            pulumi.set(__self__, "deployment_types", deployment_types)
        if environment_identifiers is not None:
            pulumi.set(__self__, "environment_identifiers", environment_identifiers)
        if environment_names is not None:
            pulumi.set(__self__, "environment_names", environment_names)
        if service_definition_types is not None:
            pulumi.set(__self__, "service_definition_types", service_definition_types)
        if service_identifiers is not None:
            pulumi.set(__self__, "service_identifiers", service_identifiers)
        if service_names is not None:
            pulumi.set(__self__, "service_names", service_names)

    @_builtins.property
    @pulumi.getter(name="artifactDisplayNames")
    def artifact_display_names(self) -> Optional[Sequence[_builtins.str]]:
        """
        Artifact display names of the CD pipeline.
        """
        return pulumi.get(self, "artifact_display_names")

    @_builtins.property
    @pulumi.getter(name="deploymentTypes")
    def deployment_types(self) -> Optional[_builtins.str]:
        """
        Deployment type of the CD pipeline, eg. Kubernetes
        """
        return pulumi.get(self, "deployment_types")

    @_builtins.property
    @pulumi.getter(name="environmentIdentifiers")
    def environment_identifiers(self) -> Optional[Sequence[_builtins.str]]:
        """
        Environment identifier of the CD pipeline.
        """
        return pulumi.get(self, "environment_identifiers")

    @_builtins.property
    @pulumi.getter(name="environmentNames")
    def environment_names(self) -> Optional[Sequence[_builtins.str]]:
        """
        Environment names of the CD pipeline.
        """
        return pulumi.get(self, "environment_names")

    @_builtins.property
    @pulumi.getter(name="serviceDefinitionTypes")
    def service_definition_types(self) -> Optional[_builtins.str]:
        """
        Deployment type of the CD pipeline, eg. Kubernetes
        """
        return pulumi.get(self, "service_definition_types")

    @_builtins.property
    @pulumi.getter(name="serviceIdentifiers")
    def service_identifiers(self) -> Optional[Sequence[_builtins.str]]:
        """
        Service identifiers of the CD pipeline.
        """
        return pulumi.get(self, "service_identifiers")

    @_builtins.property
    @pulumi.getter(name="serviceNames")
    def service_names(self) -> Optional[Sequence[_builtins.str]]:
        """
        Service names of the CD pipeline.
        """
        return pulumi.get(self, "service_names")


@pulumi.output_type
class PipelineFiltersFilterPropertiesModulePropertiesCi(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "buildType":
            suggest = "build_type"
        elif key == "ciExecutionInfo":
            suggest = "ci_execution_info"
        elif key == "repoNames":
            suggest = "repo_names"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PipelineFiltersFilterPropertiesModulePropertiesCi. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PipelineFiltersFilterPropertiesModulePropertiesCi.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PipelineFiltersFilterPropertiesModulePropertiesCi.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch: Optional[_builtins.str] = None,
                 build_type: Optional[_builtins.str] = None,
                 ci_execution_info: Optional['outputs.PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfo'] = None,
                 repo_names: Optional[_builtins.str] = None,
                 tag: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch: Branch which was used while building.
        :param _builtins.str build_type: Build type of the pipeline. Possible values: branch.
        :param 'PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfoArgs' ci_execution_info: CI execution info for the pipeline.
        :param _builtins.str repo_names: name of the repository used in the pipeline.
        :param _builtins.str tag: Tags to associate with the CI pipeline resource.
        """
        if branch is not None:
            pulumi.set(__self__, "branch", branch)
        if build_type is not None:
            pulumi.set(__self__, "build_type", build_type)
        if ci_execution_info is not None:
            pulumi.set(__self__, "ci_execution_info", ci_execution_info)
        if repo_names is not None:
            pulumi.set(__self__, "repo_names", repo_names)
        if tag is not None:
            pulumi.set(__self__, "tag", tag)

    @_builtins.property
    @pulumi.getter
    def branch(self) -> Optional[_builtins.str]:
        """
        Branch which was used while building.
        """
        return pulumi.get(self, "branch")

    @_builtins.property
    @pulumi.getter(name="buildType")
    def build_type(self) -> Optional[_builtins.str]:
        """
        Build type of the pipeline. Possible values: branch.
        """
        return pulumi.get(self, "build_type")

    @_builtins.property
    @pulumi.getter(name="ciExecutionInfo")
    def ci_execution_info(self) -> Optional['outputs.PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfo']:
        """
        CI execution info for the pipeline.
        """
        return pulumi.get(self, "ci_execution_info")

    @_builtins.property
    @pulumi.getter(name="repoNames")
    def repo_names(self) -> Optional[_builtins.str]:
        """
        name of the repository used in the pipeline.
        """
        return pulumi.get(self, "repo_names")

    @_builtins.property
    @pulumi.getter
    def tag(self) -> Optional[_builtins.str]:
        """
        Tags to associate with the CI pipeline resource.
        """
        return pulumi.get(self, "tag")


@pulumi.output_type
class PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "pullRequest":
            suggest = "pull_request"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 event: Optional[_builtins.str] = None,
                 pull_request: Optional['outputs.PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfoPullRequest'] = None):
        """
        :param _builtins.str event: Event for the ci execution, Possible values: pullRequest.
        :param 'PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfoPullRequestArgs' pull_request: The pull request details of the CI pipeline.
        """
        if event is not None:
            pulumi.set(__self__, "event", event)
        if pull_request is not None:
            pulumi.set(__self__, "pull_request", pull_request)

    @_builtins.property
    @pulumi.getter
    def event(self) -> Optional[_builtins.str]:
        """
        Event for the ci execution, Possible values: pullRequest.
        """
        return pulumi.get(self, "event")

    @_builtins.property
    @pulumi.getter(name="pullRequest")
    def pull_request(self) -> Optional['outputs.PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfoPullRequest']:
        """
        The pull request details of the CI pipeline.
        """
        return pulumi.get(self, "pull_request")


@pulumi.output_type
class PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfoPullRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "sourceBranch":
            suggest = "source_branch"
        elif key == "targetBranch":
            suggest = "target_branch"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfoPullRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfoPullRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PipelineFiltersFilterPropertiesModulePropertiesCiCiExecutionInfoPullRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 source_branch: Optional[_builtins.str] = None,
                 target_branch: Optional[_builtins.str] = None):
        """
        :param _builtins.str source_branch: Source branch of the pull request.
        :param _builtins.str target_branch: Target branch of the pull request.
        """
        if source_branch is not None:
            pulumi.set(__self__, "source_branch", source_branch)
        if target_branch is not None:
            pulumi.set(__self__, "target_branch", target_branch)

    @_builtins.property
    @pulumi.getter(name="sourceBranch")
    def source_branch(self) -> Optional[_builtins.str]:
        """
        Source branch of the pull request.
        """
        return pulumi.get(self, "source_branch")

    @_builtins.property
    @pulumi.getter(name="targetBranch")
    def target_branch(self) -> Optional[_builtins.str]:
        """
        Target branch of the pull request.
        """
        return pulumi.get(self, "target_branch")


@pulumi.output_type
class PipelineGitDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "baseBranch":
            suggest = "base_branch"
        elif key == "branchName":
            suggest = "branch_name"
        elif key == "commitMessage":
            suggest = "commit_message"
        elif key == "connectorRef":
            suggest = "connector_ref"
        elif key == "filePath":
            suggest = "file_path"
        elif key == "isHarnessCodeRepo":
            suggest = "is_harness_code_repo"
        elif key == "lastCommitId":
            suggest = "last_commit_id"
        elif key == "lastObjectId":
            suggest = "last_object_id"
        elif key == "repoName":
            suggest = "repo_name"
        elif key == "storeType":
            suggest = "store_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PipelineGitDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PipelineGitDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PipelineGitDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 base_branch: Optional[_builtins.str] = None,
                 branch_name: Optional[_builtins.str] = None,
                 commit_message: Optional[_builtins.str] = None,
                 connector_ref: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 is_harness_code_repo: Optional[_builtins.bool] = None,
                 last_commit_id: Optional[_builtins.str] = None,
                 last_object_id: Optional[_builtins.str] = None,
                 repo_name: Optional[_builtins.str] = None,
                 store_type: Optional[_builtins.str] = None):
        """
        :param _builtins.str base_branch: Name of the default branch (this checks out a new branch titled by branch_name).
        :param _builtins.str branch_name: Name of the branch.
        :param _builtins.str commit_message: Commit message used for the merge commit.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.bool is_harness_code_repo: If the repo is harness code.
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating Pipeline.
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str store_type: Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        if base_branch is not None:
            pulumi.set(__self__, "base_branch", base_branch)
        if branch_name is not None:
            pulumi.set(__self__, "branch_name", branch_name)
        if commit_message is not None:
            pulumi.set(__self__, "commit_message", commit_message)
        if connector_ref is not None:
            pulumi.set(__self__, "connector_ref", connector_ref)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if is_harness_code_repo is not None:
            pulumi.set(__self__, "is_harness_code_repo", is_harness_code_repo)
        if last_commit_id is not None:
            pulumi.set(__self__, "last_commit_id", last_commit_id)
        if last_object_id is not None:
            pulumi.set(__self__, "last_object_id", last_object_id)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)
        if store_type is not None:
            pulumi.set(__self__, "store_type", store_type)

    @_builtins.property
    @pulumi.getter(name="baseBranch")
    def base_branch(self) -> Optional[_builtins.str]:
        """
        Name of the default branch (this checks out a new branch titled by branch_name).
        """
        return pulumi.get(self, "base_branch")

    @_builtins.property
    @pulumi.getter(name="branchName")
    def branch_name(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch_name")

    @_builtins.property
    @pulumi.getter(name="commitMessage")
    def commit_message(self) -> Optional[_builtins.str]:
        """
        Commit message used for the merge commit.
        """
        return pulumi.get(self, "commit_message")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="isHarnessCodeRepo")
    def is_harness_code_repo(self) -> Optional[_builtins.bool]:
        """
        If the repo is harness code.
        """
        return pulumi.get(self, "is_harness_code_repo")

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> Optional[_builtins.str]:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> Optional[_builtins.str]:
        """
        Last object identifier (for Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="storeType")
    def store_type(self) -> Optional[_builtins.str]:
        """
        Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        return pulumi.get(self, "store_type")


@pulumi.output_type
class PipelineGitImportInfo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchName":
            suggest = "branch_name"
        elif key == "connectorRef":
            suggest = "connector_ref"
        elif key == "filePath":
            suggest = "file_path"
        elif key == "repoName":
            suggest = "repo_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PipelineGitImportInfo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PipelineGitImportInfo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PipelineGitImportInfo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_name: Optional[_builtins.str] = None,
                 connector_ref: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 repo_name: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_name: Name of the branch.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for importing entity from Git To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.str repo_name: Name of the repository.
        """
        if branch_name is not None:
            pulumi.set(__self__, "branch_name", branch_name)
        if connector_ref is not None:
            pulumi.set(__self__, "connector_ref", connector_ref)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)

    @_builtins.property
    @pulumi.getter(name="branchName")
    def branch_name(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch_name")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for importing entity from Git To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")


@pulumi.output_type
class PipelinePipelineImportRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "pipelineDescription":
            suggest = "pipeline_description"
        elif key == "pipelineName":
            suggest = "pipeline_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PipelinePipelineImportRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PipelinePipelineImportRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PipelinePipelineImportRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 pipeline_description: Optional[_builtins.str] = None,
                 pipeline_name: Optional[_builtins.str] = None):
        """
        :param _builtins.str pipeline_description: Description of the pipeline.
        :param _builtins.str pipeline_name: Name of the pipeline.
        """
        if pipeline_description is not None:
            pulumi.set(__self__, "pipeline_description", pipeline_description)
        if pipeline_name is not None:
            pulumi.set(__self__, "pipeline_name", pipeline_name)

    @_builtins.property
    @pulumi.getter(name="pipelineDescription")
    def pipeline_description(self) -> Optional[_builtins.str]:
        """
        Description of the pipeline.
        """
        return pulumi.get(self, "pipeline_description")

    @_builtins.property
    @pulumi.getter(name="pipelineName")
    def pipeline_name(self) -> Optional[_builtins.str]:
        """
        Name of the pipeline.
        """
        return pulumi.get(self, "pipeline_name")


@pulumi.output_type
class PolicySetPolicy(dict):
    def __init__(__self__, *,
                 identifier: _builtins.str,
                 severity: _builtins.str):
        """
        :param _builtins.str identifier: Account Identifier of the account
        :param _builtins.str severity: Policy failure response - 'warning' for continuation, 'error' for exit
        """
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "severity", severity)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        """
        Account Identifier of the account
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def severity(self) -> _builtins.str:
        """
        Policy failure response - 'warning' for continuation, 'error' for exit
        """
        return pulumi.get(self, "severity")


@pulumi.output_type
class PolicySetPolicyReference(dict):
    def __init__(__self__, *,
                 identifier: _builtins.str,
                 severity: _builtins.str):
        """
        :param _builtins.str identifier: Unique identifier of the policy
        :param _builtins.str severity: Policy failure response - 'warning' for continuation, 'error' for exit
        """
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "severity", severity)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        """
        Unique identifier of the policy
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def severity(self) -> _builtins.str:
        """
        Policy failure response - 'warning' for continuation, 'error' for exit
        """
        return pulumi.get(self, "severity")


@pulumi.output_type
class PrometheusConnectorHeader(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "encryptedValueRef":
            suggest = "encrypted_value_ref"
        elif key == "valueEncrypted":
            suggest = "value_encrypted"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PrometheusConnectorHeader. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PrometheusConnectorHeader.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PrometheusConnectorHeader.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 encrypted_value_ref: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None,
                 value_encrypted: Optional[_builtins.bool] = None):
        """
        :param _builtins.str key: Key.
        :param _builtins.str encrypted_value_ref: Reference to the Harness secret containing the encrypted value. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str value: Value.
        :param _builtins.bool value_encrypted: Encrypted value.
        """
        pulumi.set(__self__, "key", key)
        if encrypted_value_ref is not None:
            pulumi.set(__self__, "encrypted_value_ref", encrypted_value_ref)
        if value is not None:
            pulumi.set(__self__, "value", value)
        if value_encrypted is not None:
            pulumi.set(__self__, "value_encrypted", value_encrypted)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="encryptedValueRef")
    def encrypted_value_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the Harness secret containing the encrypted value. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "encrypted_value_ref")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value.
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueEncrypted")
    def value_encrypted(self) -> Optional[_builtins.bool]:
        """
        Encrypted value.
        """
        return pulumi.get(self, "value_encrypted")


@pulumi.output_type
class ProviderSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientId":
            suggest = "client_id"
        elif key == "clientSecretRef":
            suggest = "client_secret_ref"
        elif key == "delegateSelectors":
            suggest = "delegate_selectors"
        elif key == "secretManagerRef":
            suggest = "secret_manager_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ProviderSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ProviderSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ProviderSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: _builtins.str,
                 client_id: Optional[_builtins.str] = None,
                 client_secret_ref: Optional[_builtins.str] = None,
                 delegate_selectors: Optional[Sequence[_builtins.str]] = None,
                 domain: Optional[_builtins.str] = None,
                 secret_manager_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str type: The type of the provider entity.
        :param _builtins.str client_id: Client Id of the OAuth app to connect
        :param _builtins.str client_secret_ref: Client Secret Ref of the OAuth app to connect
        :param Sequence[_builtins.str] delegate_selectors: Delegate selectors to fetch the access token
        :param _builtins.str domain: Host domain of the provider.
        :param _builtins.str secret_manager_ref: Secret Manager Ref to store the access/refresh tokens
        """
        pulumi.set(__self__, "type", type)
        if client_id is not None:
            pulumi.set(__self__, "client_id", client_id)
        if client_secret_ref is not None:
            pulumi.set(__self__, "client_secret_ref", client_secret_ref)
        if delegate_selectors is not None:
            pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        if domain is not None:
            pulumi.set(__self__, "domain", domain)
        if secret_manager_ref is not None:
            pulumi.set(__self__, "secret_manager_ref", secret_manager_ref)

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        The type of the provider entity.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter(name="clientId")
    def client_id(self) -> Optional[_builtins.str]:
        """
        Client Id of the OAuth app to connect
        """
        return pulumi.get(self, "client_id")

    @_builtins.property
    @pulumi.getter(name="clientSecretRef")
    def client_secret_ref(self) -> Optional[_builtins.str]:
        """
        Client Secret Ref of the OAuth app to connect
        """
        return pulumi.get(self, "client_secret_ref")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Optional[Sequence[_builtins.str]]:
        """
        Delegate selectors to fetch the access token
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter
    def domain(self) -> Optional[_builtins.str]:
        """
        Host domain of the provider.
        """
        return pulumi.get(self, "domain")

    @_builtins.property
    @pulumi.getter(name="secretManagerRef")
    def secret_manager_ref(self) -> Optional[_builtins.str]:
        """
        Secret Manager Ref to store the access/refresh tokens
        """
        return pulumi.get(self, "secret_manager_ref")


@pulumi.output_type
class RepoRuleBranchBypass(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repoOwners":
            suggest = "repo_owners"
        elif key == "userIds":
            suggest = "user_ids"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in RepoRuleBranchBypass. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        RepoRuleBranchBypass.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        RepoRuleBranchBypass.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 repo_owners: Optional[_builtins.bool] = None,
                 user_ids: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.bool repo_owners: Allow users with repository edit permission to bypass.
        :param Sequence[_builtins.str] user_ids: List of user ids with who can bypass.
        """
        if repo_owners is not None:
            pulumi.set(__self__, "repo_owners", repo_owners)
        if user_ids is not None:
            pulumi.set(__self__, "user_ids", user_ids)

    @_builtins.property
    @pulumi.getter(name="repoOwners")
    def repo_owners(self) -> Optional[_builtins.bool]:
        """
        Allow users with repository edit permission to bypass.
        """
        return pulumi.get(self, "repo_owners")

    @_builtins.property
    @pulumi.getter(name="userIds")
    def user_ids(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of user ids with who can bypass.
        """
        return pulumi.get(self, "user_ids")


@pulumi.output_type
class RepoRuleBranchPattern(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "defaultBranch":
            suggest = "default_branch"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in RepoRuleBranchPattern. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        RepoRuleBranchPattern.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        RepoRuleBranchPattern.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 default_branch: Optional[_builtins.bool] = None,
                 excludes: Optional[Sequence[_builtins.str]] = None,
                 includes: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.bool default_branch: Should rule apply to default branch of the repository.
        :param Sequence[_builtins.str] excludes: Globstar branch patterns on which rules will NOT be applied.
        :param Sequence[_builtins.str] includes: Globstar branch patterns on which rules will be applied.
        """
        if default_branch is not None:
            pulumi.set(__self__, "default_branch", default_branch)
        if excludes is not None:
            pulumi.set(__self__, "excludes", excludes)
        if includes is not None:
            pulumi.set(__self__, "includes", includes)

    @_builtins.property
    @pulumi.getter(name="defaultBranch")
    def default_branch(self) -> Optional[_builtins.bool]:
        """
        Should rule apply to default branch of the repository.
        """
        return pulumi.get(self, "default_branch")

    @_builtins.property
    @pulumi.getter
    def excludes(self) -> Optional[Sequence[_builtins.str]]:
        """
        Globstar branch patterns on which rules will NOT be applied.
        """
        return pulumi.get(self, "excludes")

    @_builtins.property
    @pulumi.getter
    def includes(self) -> Optional[Sequence[_builtins.str]]:
        """
        Globstar branch patterns on which rules will be applied.
        """
        return pulumi.get(self, "includes")


@pulumi.output_type
class RepoRuleBranchPolicy(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "allowMergeStrategies":
            suggest = "allow_merge_strategies"
        elif key == "blockBranchCreation":
            suggest = "block_branch_creation"
        elif key == "blockBranchDeletion":
            suggest = "block_branch_deletion"
        elif key == "deleteBranchOnMerge":
            suggest = "delete_branch_on_merge"
        elif key == "requireCodeOwners":
            suggest = "require_code_owners"
        elif key == "requireLatestCommitApproval":
            suggest = "require_latest_commit_approval"
        elif key == "requireMinimumApprovalCount":
            suggest = "require_minimum_approval_count"
        elif key == "requireNoChangeRequest":
            suggest = "require_no_change_request"
        elif key == "requirePullRequest":
            suggest = "require_pull_request"
        elif key == "requireResolveAllComments":
            suggest = "require_resolve_all_comments"
        elif key == "requireStatusChecks":
            suggest = "require_status_checks"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in RepoRuleBranchPolicy. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        RepoRuleBranchPolicy.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        RepoRuleBranchPolicy.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 allow_merge_strategies: Optional[Sequence[_builtins.str]] = None,
                 block_branch_creation: Optional[_builtins.bool] = None,
                 block_branch_deletion: Optional[_builtins.bool] = None,
                 delete_branch_on_merge: Optional[_builtins.bool] = None,
                 require_code_owners: Optional[_builtins.bool] = None,
                 require_latest_commit_approval: Optional[_builtins.bool] = None,
                 require_minimum_approval_count: Optional[_builtins.int] = None,
                 require_no_change_request: Optional[_builtins.bool] = None,
                 require_pull_request: Optional[_builtins.bool] = None,
                 require_resolve_all_comments: Optional[_builtins.bool] = None,
                 require_status_checks: Optional[Sequence[_builtins.str]] = None):
        """
        :param Sequence[_builtins.str] allow_merge_strategies: Limit which merge strategies are available to merge a pull request(Any of squash, rebase, merge).
        :param _builtins.bool block_branch_creation: Only allow users with bypass permission to create matching branches.
        :param _builtins.bool block_branch_deletion: Only allow users with bypass permission to delete matching branches.
        :param _builtins.bool delete_branch_on_merge: Automatically delete the source branch of a pull request after it is merged.
        :param _builtins.bool require_code_owners: Require approval on pull requests from one reviewer for each codeowner rule.
        :param _builtins.bool require_latest_commit_approval: Require re-approval when there are new changes in the pull request.
        :param _builtins.int require_minimum_approval_count: Require approval on pull requests from a minimum number of reviewers.
        :param _builtins.bool require_no_change_request: Require all request for changes have been resolved.
        :param _builtins.bool require_pull_request: Do not allow any changes to matching branches without a pull request.
        :param _builtins.bool require_resolve_all_comments: All comments on a pull request must be resolved before it can be merged.
        :param Sequence[_builtins.str] require_status_checks: Selected status checks must pass before a pull request can be merged.
        """
        if allow_merge_strategies is not None:
            pulumi.set(__self__, "allow_merge_strategies", allow_merge_strategies)
        if block_branch_creation is not None:
            pulumi.set(__self__, "block_branch_creation", block_branch_creation)
        if block_branch_deletion is not None:
            pulumi.set(__self__, "block_branch_deletion", block_branch_deletion)
        if delete_branch_on_merge is not None:
            pulumi.set(__self__, "delete_branch_on_merge", delete_branch_on_merge)
        if require_code_owners is not None:
            pulumi.set(__self__, "require_code_owners", require_code_owners)
        if require_latest_commit_approval is not None:
            pulumi.set(__self__, "require_latest_commit_approval", require_latest_commit_approval)
        if require_minimum_approval_count is not None:
            pulumi.set(__self__, "require_minimum_approval_count", require_minimum_approval_count)
        if require_no_change_request is not None:
            pulumi.set(__self__, "require_no_change_request", require_no_change_request)
        if require_pull_request is not None:
            pulumi.set(__self__, "require_pull_request", require_pull_request)
        if require_resolve_all_comments is not None:
            pulumi.set(__self__, "require_resolve_all_comments", require_resolve_all_comments)
        if require_status_checks is not None:
            pulumi.set(__self__, "require_status_checks", require_status_checks)

    @_builtins.property
    @pulumi.getter(name="allowMergeStrategies")
    def allow_merge_strategies(self) -> Optional[Sequence[_builtins.str]]:
        """
        Limit which merge strategies are available to merge a pull request(Any of squash, rebase, merge).
        """
        return pulumi.get(self, "allow_merge_strategies")

    @_builtins.property
    @pulumi.getter(name="blockBranchCreation")
    def block_branch_creation(self) -> Optional[_builtins.bool]:
        """
        Only allow users with bypass permission to create matching branches.
        """
        return pulumi.get(self, "block_branch_creation")

    @_builtins.property
    @pulumi.getter(name="blockBranchDeletion")
    def block_branch_deletion(self) -> Optional[_builtins.bool]:
        """
        Only allow users with bypass permission to delete matching branches.
        """
        return pulumi.get(self, "block_branch_deletion")

    @_builtins.property
    @pulumi.getter(name="deleteBranchOnMerge")
    def delete_branch_on_merge(self) -> Optional[_builtins.bool]:
        """
        Automatically delete the source branch of a pull request after it is merged.
        """
        return pulumi.get(self, "delete_branch_on_merge")

    @_builtins.property
    @pulumi.getter(name="requireCodeOwners")
    def require_code_owners(self) -> Optional[_builtins.bool]:
        """
        Require approval on pull requests from one reviewer for each codeowner rule.
        """
        return pulumi.get(self, "require_code_owners")

    @_builtins.property
    @pulumi.getter(name="requireLatestCommitApproval")
    def require_latest_commit_approval(self) -> Optional[_builtins.bool]:
        """
        Require re-approval when there are new changes in the pull request.
        """
        return pulumi.get(self, "require_latest_commit_approval")

    @_builtins.property
    @pulumi.getter(name="requireMinimumApprovalCount")
    def require_minimum_approval_count(self) -> Optional[_builtins.int]:
        """
        Require approval on pull requests from a minimum number of reviewers.
        """
        return pulumi.get(self, "require_minimum_approval_count")

    @_builtins.property
    @pulumi.getter(name="requireNoChangeRequest")
    def require_no_change_request(self) -> Optional[_builtins.bool]:
        """
        Require all request for changes have been resolved.
        """
        return pulumi.get(self, "require_no_change_request")

    @_builtins.property
    @pulumi.getter(name="requirePullRequest")
    def require_pull_request(self) -> Optional[_builtins.bool]:
        """
        Do not allow any changes to matching branches without a pull request.
        """
        return pulumi.get(self, "require_pull_request")

    @_builtins.property
    @pulumi.getter(name="requireResolveAllComments")
    def require_resolve_all_comments(self) -> Optional[_builtins.bool]:
        """
        All comments on a pull request must be resolved before it can be merged.
        """
        return pulumi.get(self, "require_resolve_all_comments")

    @_builtins.property
    @pulumi.getter(name="requireStatusChecks")
    def require_status_checks(self) -> Optional[Sequence[_builtins.str]]:
        """
        Selected status checks must pass before a pull request can be merged.
        """
        return pulumi.get(self, "require_status_checks")


@pulumi.output_type
class RepoSource(dict):
    def __init__(__self__, *,
                 host: Optional[_builtins.str] = None,
                 password: Optional[_builtins.str] = None,
                 repo: Optional[_builtins.str] = None,
                 type: Optional[_builtins.str] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param _builtins.str host: The host URL for the import source.
        :param _builtins.str password: The password for authentication when importing.
        :param _builtins.str repo: The full identifier of the repository on the SCM provider's platform.
        :param _builtins.str type: The type of SCM provider (github, gitlab, bitbucket, stash, gitea, gogs) when importing.
        :param _builtins.str username: The username for authentication when importing.
        """
        if host is not None:
            pulumi.set(__self__, "host", host)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter
    def host(self) -> Optional[_builtins.str]:
        """
        The host URL for the import source.
        """
        return pulumi.get(self, "host")

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[_builtins.str]:
        """
        The password for authentication when importing.
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> Optional[_builtins.str]:
        """
        The full identifier of the repository on the SCM provider's platform.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[_builtins.str]:
        """
        The type of SCM provider (github, gitlab, bitbucket, stash, gitea, gogs) when importing.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        The username for authentication when importing.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class ResourceGroupIncludedScope(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "accountId":
            suggest = "account_id"
        elif key == "orgId":
            suggest = "org_id"
        elif key == "projectId":
            suggest = "project_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ResourceGroupIncludedScope. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ResourceGroupIncludedScope.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ResourceGroupIncludedScope.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 filter: _builtins.str,
                 account_id: Optional[_builtins.str] = None,
                 org_id: Optional[_builtins.str] = None,
                 project_id: Optional[_builtins.str] = None):
        """
        :param _builtins.str filter: Can be one of these 2 EXCLUDING*CHILD*SCOPES or INCLUDING*CHILD*SCOPES
        :param _builtins.str account_id: Account Identifier of the account
        :param _builtins.str org_id: Organization Identifier
        :param _builtins.str project_id: Project Identifier
        """
        pulumi.set(__self__, "filter", filter)
        if account_id is not None:
            pulumi.set(__self__, "account_id", account_id)
        if org_id is not None:
            pulumi.set(__self__, "org_id", org_id)
        if project_id is not None:
            pulumi.set(__self__, "project_id", project_id)

    @_builtins.property
    @pulumi.getter
    def filter(self) -> _builtins.str:
        """
        Can be one of these 2 EXCLUDING*CHILD*SCOPES or INCLUDING*CHILD*SCOPES
        """
        return pulumi.get(self, "filter")

    @_builtins.property
    @pulumi.getter(name="accountId")
    def account_id(self) -> Optional[_builtins.str]:
        """
        Account Identifier of the account
        """
        return pulumi.get(self, "account_id")

    @_builtins.property
    @pulumi.getter(name="orgId")
    def org_id(self) -> Optional[_builtins.str]:
        """
        Organization Identifier
        """
        return pulumi.get(self, "org_id")

    @_builtins.property
    @pulumi.getter(name="projectId")
    def project_id(self) -> Optional[_builtins.str]:
        """
        Project Identifier
        """
        return pulumi.get(self, "project_id")


@pulumi.output_type
class ResourceGroupResourceFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "includeAllResources":
            suggest = "include_all_resources"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ResourceGroupResourceFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ResourceGroupResourceFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ResourceGroupResourceFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 include_all_resources: Optional[_builtins.bool] = None,
                 resources: Optional[Sequence['outputs.ResourceGroupResourceFilterResource']] = None):
        """
        :param _builtins.bool include_all_resources: Include all resource or not
        :param Sequence['ResourceGroupResourceFilterResourceArgs'] resources: Resources for a resource group
        """
        if include_all_resources is not None:
            pulumi.set(__self__, "include_all_resources", include_all_resources)
        if resources is not None:
            pulumi.set(__self__, "resources", resources)

    @_builtins.property
    @pulumi.getter(name="includeAllResources")
    def include_all_resources(self) -> Optional[_builtins.bool]:
        """
        Include all resource or not
        """
        return pulumi.get(self, "include_all_resources")

    @_builtins.property
    @pulumi.getter
    def resources(self) -> Optional[Sequence['outputs.ResourceGroupResourceFilterResource']]:
        """
        Resources for a resource group
        """
        return pulumi.get(self, "resources")


@pulumi.output_type
class ResourceGroupResourceFilterResource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "resourceType":
            suggest = "resource_type"
        elif key == "attributeFilters":
            suggest = "attribute_filters"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ResourceGroupResourceFilterResource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ResourceGroupResourceFilterResource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ResourceGroupResourceFilterResource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 resource_type: _builtins.str,
                 attribute_filters: Optional[Sequence['outputs.ResourceGroupResourceFilterResourceAttributeFilter']] = None,
                 identifiers: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str resource_type: Type of the resource
        :param Sequence['ResourceGroupResourceFilterResourceAttributeFilterArgs'] attribute_filters: Used to filter resources on their attributes
        :param Sequence[_builtins.str] identifiers: List of the identifiers
        """
        pulumi.set(__self__, "resource_type", resource_type)
        if attribute_filters is not None:
            pulumi.set(__self__, "attribute_filters", attribute_filters)
        if identifiers is not None:
            pulumi.set(__self__, "identifiers", identifiers)

    @_builtins.property
    @pulumi.getter(name="resourceType")
    def resource_type(self) -> _builtins.str:
        """
        Type of the resource
        """
        return pulumi.get(self, "resource_type")

    @_builtins.property
    @pulumi.getter(name="attributeFilters")
    def attribute_filters(self) -> Optional[Sequence['outputs.ResourceGroupResourceFilterResourceAttributeFilter']]:
        """
        Used to filter resources on their attributes
        """
        return pulumi.get(self, "attribute_filters")

    @_builtins.property
    @pulumi.getter
    def identifiers(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of the identifiers
        """
        return pulumi.get(self, "identifiers")


@pulumi.output_type
class ResourceGroupResourceFilterResourceAttributeFilter(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "attributeName":
            suggest = "attribute_name"
        elif key == "attributeValues":
            suggest = "attribute_values"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ResourceGroupResourceFilterResourceAttributeFilter. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ResourceGroupResourceFilterResourceAttributeFilter.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ResourceGroupResourceFilterResourceAttributeFilter.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 attribute_name: Optional[_builtins.str] = None,
                 attribute_values: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str attribute_name: Name of the attribute. Valid values are `category`, `type`, `labels`, `tag` or `tags`.
        :param Sequence[_builtins.str] attribute_values: Value of the attributes.Valid values for `category` are [ARTIFACTORY,CLOUD*COST,CLOUD*PROVIDER,CODE*REPO,MONITORING,SECRET*MANAGER,TICKETING], for `type` are [Production,PreProduction], for `labels`, it can be using the syntax 'label:value', for `tag` or `tags` it can be any string.
        """
        if attribute_name is not None:
            pulumi.set(__self__, "attribute_name", attribute_name)
        if attribute_values is not None:
            pulumi.set(__self__, "attribute_values", attribute_values)

    @_builtins.property
    @pulumi.getter(name="attributeName")
    def attribute_name(self) -> Optional[_builtins.str]:
        """
        Name of the attribute. Valid values are `category`, `type`, `labels`, `tag` or `tags`.
        """
        return pulumi.get(self, "attribute_name")

    @_builtins.property
    @pulumi.getter(name="attributeValues")
    def attribute_values(self) -> Optional[Sequence[_builtins.str]]:
        """
        Value of the attributes.Valid values for `category` are [ARTIFACTORY,CLOUD*COST,CLOUD*PROVIDER,CODE*REPO,MONITORING,SECRET*MANAGER,TICKETING], for `type` are [Production,PreProduction], for `labels`, it can be using the syntax 'label:value', for `tag` or `tags` it can be any string.
        """
        return pulumi.get(self, "attribute_values")


@pulumi.output_type
class RoleAssignmentsPrincipal(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "scopeLevel":
            suggest = "scope_level"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in RoleAssignmentsPrincipal. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        RoleAssignmentsPrincipal.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        RoleAssignmentsPrincipal.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 type: _builtins.str,
                 identifier: Optional[_builtins.str] = None,
                 scope_level: Optional[_builtins.str] = None):
        """
        :param _builtins.str type: Type.
        :param _builtins.str identifier: Identifier.
        :param _builtins.str scope_level: Scope level.
        """
        pulumi.set(__self__, "type", type)
        if identifier is not None:
            pulumi.set(__self__, "identifier", identifier)
        if scope_level is not None:
            pulumi.set(__self__, "scope_level", scope_level)

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> Optional[_builtins.str]:
        """
        Identifier.
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter(name="scopeLevel")
    def scope_level(self) -> Optional[_builtins.str]:
        """
        Scope level.
        """
        return pulumi.get(self, "scope_level")


@pulumi.output_type
class SecretFileAdditionalMetadata(dict):
    def __init__(__self__, *,
                 values: Optional[Sequence['outputs.SecretFileAdditionalMetadataValue']] = None):
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence['outputs.SecretFileAdditionalMetadataValue']]:
        return pulumi.get(self, "values")


@pulumi.output_type
class SecretFileAdditionalMetadataValue(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "gcpProjectId":
            suggest = "gcp_project_id"
        elif key == "kmsKeyId":
            suggest = "kms_key_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecretFileAdditionalMetadataValue. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecretFileAdditionalMetadataValue.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecretFileAdditionalMetadataValue.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 gcp_project_id: Optional[_builtins.str] = None,
                 kms_key_id: Optional[_builtins.str] = None,
                 regions: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param _builtins.str gcp_project_id: GCP Project ID (for GCP Secret Manager)
        :param _builtins.str kms_key_id: KMS Key ID (for AWS Secret Manager)
        :param _builtins.str regions: GCP region for the secret (for GCP Secret Manager)
        :param _builtins.str version: Version of the secret (for AWS/Azure Secret Manager)
        """
        if gcp_project_id is not None:
            pulumi.set(__self__, "gcp_project_id", gcp_project_id)
        if kms_key_id is not None:
            pulumi.set(__self__, "kms_key_id", kms_key_id)
        if regions is not None:
            pulumi.set(__self__, "regions", regions)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="gcpProjectId")
    def gcp_project_id(self) -> Optional[_builtins.str]:
        """
        GCP Project ID (for GCP Secret Manager)
        """
        return pulumi.get(self, "gcp_project_id")

    @_builtins.property
    @pulumi.getter(name="kmsKeyId")
    def kms_key_id(self) -> Optional[_builtins.str]:
        """
        KMS Key ID (for AWS Secret Manager)
        """
        return pulumi.get(self, "kms_key_id")

    @_builtins.property
    @pulumi.getter
    def regions(self) -> Optional[_builtins.str]:
        """
        GCP region for the secret (for GCP Secret Manager)
        """
        return pulumi.get(self, "regions")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of the secret (for AWS/Azure Secret Manager)
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class SecretSshkeyKerberos(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tgtGenerationMethod":
            suggest = "tgt_generation_method"
        elif key == "tgtKeyTabFilePathSpec":
            suggest = "tgt_key_tab_file_path_spec"
        elif key == "tgtPasswordSpec":
            suggest = "tgt_password_spec"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecretSshkeyKerberos. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecretSshkeyKerberos.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecretSshkeyKerberos.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 principal: _builtins.str,
                 realm: _builtins.str,
                 tgt_generation_method: Optional[_builtins.str] = None,
                 tgt_key_tab_file_path_spec: Optional['outputs.SecretSshkeyKerberosTgtKeyTabFilePathSpec'] = None,
                 tgt_password_spec: Optional['outputs.SecretSshkeyKerberosTgtPasswordSpec'] = None):
        """
        :param _builtins.str principal: Username to use for authentication.
        :param _builtins.str realm: Reference to a secret containing the password to use for authentication.
        :param _builtins.str tgt_generation_method: Method to generate tgt
        :param 'SecretSshkeyKerberosTgtKeyTabFilePathSpecArgs' tgt_key_tab_file_path_spec: Authenticate to App Dynamics using username and password.
        :param 'SecretSshkeyKerberosTgtPasswordSpecArgs' tgt_password_spec: Authenticate to App Dynamics using username and password.
        """
        pulumi.set(__self__, "principal", principal)
        pulumi.set(__self__, "realm", realm)
        if tgt_generation_method is not None:
            pulumi.set(__self__, "tgt_generation_method", tgt_generation_method)
        if tgt_key_tab_file_path_spec is not None:
            pulumi.set(__self__, "tgt_key_tab_file_path_spec", tgt_key_tab_file_path_spec)
        if tgt_password_spec is not None:
            pulumi.set(__self__, "tgt_password_spec", tgt_password_spec)

    @_builtins.property
    @pulumi.getter
    def principal(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "principal")

    @_builtins.property
    @pulumi.getter
    def realm(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication.
        """
        return pulumi.get(self, "realm")

    @_builtins.property
    @pulumi.getter(name="tgtGenerationMethod")
    def tgt_generation_method(self) -> Optional[_builtins.str]:
        """
        Method to generate tgt
        """
        return pulumi.get(self, "tgt_generation_method")

    @_builtins.property
    @pulumi.getter(name="tgtKeyTabFilePathSpec")
    def tgt_key_tab_file_path_spec(self) -> Optional['outputs.SecretSshkeyKerberosTgtKeyTabFilePathSpec']:
        """
        Authenticate to App Dynamics using username and password.
        """
        return pulumi.get(self, "tgt_key_tab_file_path_spec")

    @_builtins.property
    @pulumi.getter(name="tgtPasswordSpec")
    def tgt_password_spec(self) -> Optional['outputs.SecretSshkeyKerberosTgtPasswordSpec']:
        """
        Authenticate to App Dynamics using username and password.
        """
        return pulumi.get(self, "tgt_password_spec")


@pulumi.output_type
class SecretSshkeyKerberosTgtKeyTabFilePathSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "keyPath":
            suggest = "key_path"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecretSshkeyKerberosTgtKeyTabFilePathSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecretSshkeyKerberosTgtKeyTabFilePathSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecretSshkeyKerberosTgtKeyTabFilePathSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key_path: Optional[_builtins.str] = None):
        """
        :param _builtins.str key_path: key path
        """
        if key_path is not None:
            pulumi.set(__self__, "key_path", key_path)

    @_builtins.property
    @pulumi.getter(name="keyPath")
    def key_path(self) -> Optional[_builtins.str]:
        """
        key path
        """
        return pulumi.get(self, "key_path")


@pulumi.output_type
class SecretSshkeyKerberosTgtPasswordSpec(dict):
    def __init__(__self__, *,
                 password: Optional[_builtins.str] = None):
        """
        :param _builtins.str password: password. To reference a password at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a password at the account scope, prefix 'account` to the expression: account.{identifier}
        """
        if password is not None:
            pulumi.set(__self__, "password", password)

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[_builtins.str]:
        """
        password. To reference a password at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a password at the account scope, prefix 'account` to the expression: account.{identifier}
        """
        return pulumi.get(self, "password")


@pulumi.output_type
class SecretSshkeySsh(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "credentialType":
            suggest = "credential_type"
        elif key == "sshPasswordCredential":
            suggest = "ssh_password_credential"
        elif key == "sshkeyPathCredential":
            suggest = "sshkey_path_credential"
        elif key == "sshkeyReferenceCredential":
            suggest = "sshkey_reference_credential"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecretSshkeySsh. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecretSshkeySsh.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecretSshkeySsh.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 credential_type: _builtins.str,
                 ssh_password_credential: Optional['outputs.SecretSshkeySshSshPasswordCredential'] = None,
                 sshkey_path_credential: Optional['outputs.SecretSshkeySshSshkeyPathCredential'] = None,
                 sshkey_reference_credential: Optional['outputs.SecretSshkeySshSshkeyReferenceCredential'] = None):
        """
        :param _builtins.str credential_type: This specifies SSH credential type as Password, KeyPath or KeyReference
        :param 'SecretSshkeySshSshPasswordCredentialArgs' ssh_password_credential: SSH credential of type keyReference
        :param 'SecretSshkeySshSshkeyPathCredentialArgs' sshkey_path_credential: SSH credential of type keyPath
        :param 'SecretSshkeySshSshkeyReferenceCredentialArgs' sshkey_reference_credential: SSH credential of type keyReference
        """
        pulumi.set(__self__, "credential_type", credential_type)
        if ssh_password_credential is not None:
            pulumi.set(__self__, "ssh_password_credential", ssh_password_credential)
        if sshkey_path_credential is not None:
            pulumi.set(__self__, "sshkey_path_credential", sshkey_path_credential)
        if sshkey_reference_credential is not None:
            pulumi.set(__self__, "sshkey_reference_credential", sshkey_reference_credential)

    @_builtins.property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> _builtins.str:
        """
        This specifies SSH credential type as Password, KeyPath or KeyReference
        """
        return pulumi.get(self, "credential_type")

    @_builtins.property
    @pulumi.getter(name="sshPasswordCredential")
    def ssh_password_credential(self) -> Optional['outputs.SecretSshkeySshSshPasswordCredential']:
        """
        SSH credential of type keyReference
        """
        return pulumi.get(self, "ssh_password_credential")

    @_builtins.property
    @pulumi.getter(name="sshkeyPathCredential")
    def sshkey_path_credential(self) -> Optional['outputs.SecretSshkeySshSshkeyPathCredential']:
        """
        SSH credential of type keyPath
        """
        return pulumi.get(self, "sshkey_path_credential")

    @_builtins.property
    @pulumi.getter(name="sshkeyReferenceCredential")
    def sshkey_reference_credential(self) -> Optional['outputs.SecretSshkeySshSshkeyReferenceCredential']:
        """
        SSH credential of type keyReference
        """
        return pulumi.get(self, "sshkey_reference_credential")


@pulumi.output_type
class SecretSshkeySshSshPasswordCredential(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "userName":
            suggest = "user_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecretSshkeySshSshPasswordCredential. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecretSshkeySshSshPasswordCredential.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecretSshkeySshSshPasswordCredential.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password: _builtins.str,
                 user_name: _builtins.str):
        """
        :param _builtins.str password: SSH Password. To reference a password at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a password at the account scope, prefix 'account` to the expression: account.{identifier}
        :param _builtins.str user_name: SSH Username.
        """
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "user_name", user_name)

    @_builtins.property
    @pulumi.getter
    def password(self) -> _builtins.str:
        """
        SSH Password. To reference a password at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a password at the account scope, prefix 'account` to the expression: account.{identifier}
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter(name="userName")
    def user_name(self) -> _builtins.str:
        """
        SSH Username.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class SecretSshkeySshSshkeyPathCredential(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "keyPath":
            suggest = "key_path"
        elif key == "userName":
            suggest = "user_name"
        elif key == "encryptedPassphrase":
            suggest = "encrypted_passphrase"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecretSshkeySshSshkeyPathCredential. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecretSshkeySshSshkeyPathCredential.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecretSshkeySshSshkeyPathCredential.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key_path: _builtins.str,
                 user_name: _builtins.str,
                 encrypted_passphrase: Optional[_builtins.str] = None):
        """
        :param _builtins.str key_path: Path of the key file.
        :param _builtins.str user_name: SSH Username.
        :param _builtins.str encrypted_passphrase: Encrypted Passphrase . To reference a encryptedPassphrase at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a encryptedPassPhrase at the account scope, prefix 'account` to the expression: account.{identifier}
        """
        pulumi.set(__self__, "key_path", key_path)
        pulumi.set(__self__, "user_name", user_name)
        if encrypted_passphrase is not None:
            pulumi.set(__self__, "encrypted_passphrase", encrypted_passphrase)

    @_builtins.property
    @pulumi.getter(name="keyPath")
    def key_path(self) -> _builtins.str:
        """
        Path of the key file.
        """
        return pulumi.get(self, "key_path")

    @_builtins.property
    @pulumi.getter(name="userName")
    def user_name(self) -> _builtins.str:
        """
        SSH Username.
        """
        return pulumi.get(self, "user_name")

    @_builtins.property
    @pulumi.getter(name="encryptedPassphrase")
    def encrypted_passphrase(self) -> Optional[_builtins.str]:
        """
        Encrypted Passphrase . To reference a encryptedPassphrase at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a encryptedPassPhrase at the account scope, prefix 'account` to the expression: account.{identifier}
        """
        return pulumi.get(self, "encrypted_passphrase")


@pulumi.output_type
class SecretSshkeySshSshkeyReferenceCredential(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "userName":
            suggest = "user_name"
        elif key == "encryptedPassphrase":
            suggest = "encrypted_passphrase"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecretSshkeySshSshkeyReferenceCredential. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecretSshkeySshSshkeyReferenceCredential.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecretSshkeySshSshkeyReferenceCredential.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 user_name: _builtins.str,
                 encrypted_passphrase: Optional[_builtins.str] = None):
        """
        :param _builtins.str key: SSH key. To reference a key at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a key at the account scope, prefix 'account` to the expression: account.{identifier}
        :param _builtins.str user_name: SSH Username.
        :param _builtins.str encrypted_passphrase: Encrypted Passphrase. To reference a encryptedPassphrase at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a encryptedPassPhrase at the account scope, prefix 'account` to the expression: account.{identifier}
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "user_name", user_name)
        if encrypted_passphrase is not None:
            pulumi.set(__self__, "encrypted_passphrase", encrypted_passphrase)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        SSH key. To reference a key at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a key at the account scope, prefix 'account` to the expression: account.{identifier}
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="userName")
    def user_name(self) -> _builtins.str:
        """
        SSH Username.
        """
        return pulumi.get(self, "user_name")

    @_builtins.property
    @pulumi.getter(name="encryptedPassphrase")
    def encrypted_passphrase(self) -> Optional[_builtins.str]:
        """
        Encrypted Passphrase. To reference a encryptedPassphrase at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a encryptedPassPhrase at the account scope, prefix 'account` to the expression: account.{identifier}
        """
        return pulumi.get(self, "encrypted_passphrase")


@pulumi.output_type
class SecretTextAdditionalMetadata(dict):
    def __init__(__self__, *,
                 values: Optional[Sequence['outputs.SecretTextAdditionalMetadataValue']] = None):
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence['outputs.SecretTextAdditionalMetadataValue']]:
        return pulumi.get(self, "values")


@pulumi.output_type
class SecretTextAdditionalMetadataValue(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "gcpProjectId":
            suggest = "gcp_project_id"
        elif key == "kmsKeyId":
            suggest = "kms_key_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecretTextAdditionalMetadataValue. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecretTextAdditionalMetadataValue.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecretTextAdditionalMetadataValue.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 gcp_project_id: Optional[_builtins.str] = None,
                 kms_key_id: Optional[_builtins.str] = None,
                 regions: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param _builtins.str gcp_project_id: GCP Project ID (for GCP Secret Manager)
        :param _builtins.str kms_key_id: KMS Key ID (for AWS Secret Manager)
        :param _builtins.str regions: GCP region for the secret (for GCP Secret Manager)
        :param _builtins.str version: Version of the secret (for AWS/Azure Secret Manager)
        """
        if gcp_project_id is not None:
            pulumi.set(__self__, "gcp_project_id", gcp_project_id)
        if kms_key_id is not None:
            pulumi.set(__self__, "kms_key_id", kms_key_id)
        if regions is not None:
            pulumi.set(__self__, "regions", regions)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="gcpProjectId")
    def gcp_project_id(self) -> Optional[_builtins.str]:
        """
        GCP Project ID (for GCP Secret Manager)
        """
        return pulumi.get(self, "gcp_project_id")

    @_builtins.property
    @pulumi.getter(name="kmsKeyId")
    def kms_key_id(self) -> Optional[_builtins.str]:
        """
        KMS Key ID (for AWS Secret Manager)
        """
        return pulumi.get(self, "kms_key_id")

    @_builtins.property
    @pulumi.getter
    def regions(self) -> Optional[_builtins.str]:
        """
        GCP region for the secret (for GCP Secret Manager)
        """
        return pulumi.get(self, "regions")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of the secret (for AWS/Azure Secret Manager)
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class SecretWinrmKerberos(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "skipCertCheck":
            suggest = "skip_cert_check"
        elif key == "tgtGenerationMethod":
            suggest = "tgt_generation_method"
        elif key == "tgtKeyTabFilePathSpec":
            suggest = "tgt_key_tab_file_path_spec"
        elif key == "tgtPasswordSpec":
            suggest = "tgt_password_spec"
        elif key == "useNoProfile":
            suggest = "use_no_profile"
        elif key == "useSsl":
            suggest = "use_ssl"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecretWinrmKerberos. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecretWinrmKerberos.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecretWinrmKerberos.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 principal: _builtins.str,
                 realm: _builtins.str,
                 skip_cert_check: Optional[_builtins.bool] = None,
                 tgt_generation_method: Optional[_builtins.str] = None,
                 tgt_key_tab_file_path_spec: Optional['outputs.SecretWinrmKerberosTgtKeyTabFilePathSpec'] = None,
                 tgt_password_spec: Optional['outputs.SecretWinrmKerberosTgtPasswordSpec'] = None,
                 use_no_profile: Optional[_builtins.bool] = None,
                 use_ssl: Optional[_builtins.bool] = None):
        """
        :param _builtins.str principal: Kerberos principal.
        :param _builtins.str realm: Kerberos realm.
        :param _builtins.bool skip_cert_check: Skip certificate verification.
        :param _builtins.str tgt_generation_method: Method to generate TGT (Ticket Granting Ticket).
        :param 'SecretWinrmKerberosTgtKeyTabFilePathSpecArgs' tgt_key_tab_file_path_spec: TGT generation using key tab file.
        :param 'SecretWinrmKerberosTgtPasswordSpecArgs' tgt_password_spec: TGT generation using password.
        :param _builtins.bool use_no_profile: Use no profile.
        :param _builtins.bool use_ssl: Use SSL/TLS for WinRM communication.
        """
        pulumi.set(__self__, "principal", principal)
        pulumi.set(__self__, "realm", realm)
        if skip_cert_check is not None:
            pulumi.set(__self__, "skip_cert_check", skip_cert_check)
        if tgt_generation_method is not None:
            pulumi.set(__self__, "tgt_generation_method", tgt_generation_method)
        if tgt_key_tab_file_path_spec is not None:
            pulumi.set(__self__, "tgt_key_tab_file_path_spec", tgt_key_tab_file_path_spec)
        if tgt_password_spec is not None:
            pulumi.set(__self__, "tgt_password_spec", tgt_password_spec)
        if use_no_profile is not None:
            pulumi.set(__self__, "use_no_profile", use_no_profile)
        if use_ssl is not None:
            pulumi.set(__self__, "use_ssl", use_ssl)

    @_builtins.property
    @pulumi.getter
    def principal(self) -> _builtins.str:
        """
        Kerberos principal.
        """
        return pulumi.get(self, "principal")

    @_builtins.property
    @pulumi.getter
    def realm(self) -> _builtins.str:
        """
        Kerberos realm.
        """
        return pulumi.get(self, "realm")

    @_builtins.property
    @pulumi.getter(name="skipCertCheck")
    def skip_cert_check(self) -> Optional[_builtins.bool]:
        """
        Skip certificate verification.
        """
        return pulumi.get(self, "skip_cert_check")

    @_builtins.property
    @pulumi.getter(name="tgtGenerationMethod")
    def tgt_generation_method(self) -> Optional[_builtins.str]:
        """
        Method to generate TGT (Ticket Granting Ticket).
        """
        return pulumi.get(self, "tgt_generation_method")

    @_builtins.property
    @pulumi.getter(name="tgtKeyTabFilePathSpec")
    def tgt_key_tab_file_path_spec(self) -> Optional['outputs.SecretWinrmKerberosTgtKeyTabFilePathSpec']:
        """
        TGT generation using key tab file.
        """
        return pulumi.get(self, "tgt_key_tab_file_path_spec")

    @_builtins.property
    @pulumi.getter(name="tgtPasswordSpec")
    def tgt_password_spec(self) -> Optional['outputs.SecretWinrmKerberosTgtPasswordSpec']:
        """
        TGT generation using password.
        """
        return pulumi.get(self, "tgt_password_spec")

    @_builtins.property
    @pulumi.getter(name="useNoProfile")
    def use_no_profile(self) -> Optional[_builtins.bool]:
        """
        Use no profile.
        """
        return pulumi.get(self, "use_no_profile")

    @_builtins.property
    @pulumi.getter(name="useSsl")
    def use_ssl(self) -> Optional[_builtins.bool]:
        """
        Use SSL/TLS for WinRM communication.
        """
        return pulumi.get(self, "use_ssl")


@pulumi.output_type
class SecretWinrmKerberosTgtKeyTabFilePathSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "keyPath":
            suggest = "key_path"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecretWinrmKerberosTgtKeyTabFilePathSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecretWinrmKerberosTgtKeyTabFilePathSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecretWinrmKerberosTgtKeyTabFilePathSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key_path: _builtins.str):
        """
        :param _builtins.str key_path: Path to the key tab file.
        """
        pulumi.set(__self__, "key_path", key_path)

    @_builtins.property
    @pulumi.getter(name="keyPath")
    def key_path(self) -> _builtins.str:
        """
        Path to the key tab file.
        """
        return pulumi.get(self, "key_path")


@pulumi.output_type
class SecretWinrmKerberosTgtPasswordSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecretWinrmKerberosTgtPasswordSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecretWinrmKerberosTgtPasswordSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecretWinrmKerberosTgtPasswordSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account' to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account' to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")


@pulumi.output_type
class SecretWinrmNtlm(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "skipCertCheck":
            suggest = "skip_cert_check"
        elif key == "useNoProfile":
            suggest = "use_no_profile"
        elif key == "useSsl":
            suggest = "use_ssl"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SecretWinrmNtlm. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SecretWinrmNtlm.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SecretWinrmNtlm.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 domain: Optional[_builtins.str] = None,
                 skip_cert_check: Optional[_builtins.bool] = None,
                 use_no_profile: Optional[_builtins.bool] = None,
                 use_ssl: Optional[_builtins.bool] = None):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account' to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str domain: Domain name for NTLM authentication.
        :param _builtins.bool skip_cert_check: Skip certificate verification.
        :param _builtins.bool use_no_profile: Use no profile.
        :param _builtins.bool use_ssl: Use SSL/TLS for WinRM communication.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        if domain is not None:
            pulumi.set(__self__, "domain", domain)
        if skip_cert_check is not None:
            pulumi.set(__self__, "skip_cert_check", skip_cert_check)
        if use_no_profile is not None:
            pulumi.set(__self__, "use_no_profile", use_no_profile)
        if use_ssl is not None:
            pulumi.set(__self__, "use_ssl", use_ssl)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account' to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter
    def domain(self) -> Optional[_builtins.str]:
        """
        Domain name for NTLM authentication.
        """
        return pulumi.get(self, "domain")

    @_builtins.property
    @pulumi.getter(name="skipCertCheck")
    def skip_cert_check(self) -> Optional[_builtins.bool]:
        """
        Skip certificate verification.
        """
        return pulumi.get(self, "skip_cert_check")

    @_builtins.property
    @pulumi.getter(name="useNoProfile")
    def use_no_profile(self) -> Optional[_builtins.bool]:
        """
        Use no profile.
        """
        return pulumi.get(self, "use_no_profile")

    @_builtins.property
    @pulumi.getter(name="useSsl")
    def use_ssl(self) -> Optional[_builtins.bool]:
        """
        Use SSL/TLS for WinRM communication.
        """
        return pulumi.get(self, "use_ssl")


@pulumi.output_type
class ServiceGitDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "baseBranch":
            suggest = "base_branch"
        elif key == "commitMessage":
            suggest = "commit_message"
        elif key == "connectorRef":
            suggest = "connector_ref"
        elif key == "filePath":
            suggest = "file_path"
        elif key == "isHarnessCodeRepo":
            suggest = "is_harness_code_repo"
        elif key == "isNewBranch":
            suggest = "is_new_branch"
        elif key == "lastCommitId":
            suggest = "last_commit_id"
        elif key == "lastObjectId":
            suggest = "last_object_id"
        elif key == "loadFromCache":
            suggest = "load_from_cache"
        elif key == "loadFromFallbackBranch":
            suggest = "load_from_fallback_branch"
        elif key == "repoName":
            suggest = "repo_name"
        elif key == "storeType":
            suggest = "store_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ServiceGitDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ServiceGitDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ServiceGitDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 base_branch: Optional[_builtins.str] = None,
                 branch: Optional[_builtins.str] = None,
                 commit_message: Optional[_builtins.str] = None,
                 connector_ref: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 is_harness_code_repo: Optional[_builtins.bool] = None,
                 is_new_branch: Optional[_builtins.bool] = None,
                 last_commit_id: Optional[_builtins.str] = None,
                 last_object_id: Optional[_builtins.str] = None,
                 load_from_cache: Optional[_builtins.bool] = None,
                 load_from_fallback_branch: Optional[_builtins.bool] = None,
                 repo_name: Optional[_builtins.str] = None,
                 store_type: Optional[_builtins.str] = None):
        """
        :param _builtins.str base_branch: Name of the default branch (this checks out a new branch titled by branch_name).
        :param _builtins.str branch: Name of the branch.
        :param _builtins.str commit_message: Commit message used for the merge commit.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.bool is_harness_code_repo: If the repo is harness code
        :param _builtins.bool is_new_branch: If the branch being created is new
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating Pipeline.
        :param _builtins.bool load_from_cache: Load service yaml from catch
        :param _builtins.bool load_from_fallback_branch: Load service yaml from fallback branch
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str store_type: Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        if base_branch is not None:
            pulumi.set(__self__, "base_branch", base_branch)
        if branch is not None:
            pulumi.set(__self__, "branch", branch)
        if commit_message is not None:
            pulumi.set(__self__, "commit_message", commit_message)
        if connector_ref is not None:
            pulumi.set(__self__, "connector_ref", connector_ref)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if is_harness_code_repo is not None:
            pulumi.set(__self__, "is_harness_code_repo", is_harness_code_repo)
        if is_new_branch is not None:
            pulumi.set(__self__, "is_new_branch", is_new_branch)
        if last_commit_id is not None:
            pulumi.set(__self__, "last_commit_id", last_commit_id)
        if last_object_id is not None:
            pulumi.set(__self__, "last_object_id", last_object_id)
        if load_from_cache is not None:
            pulumi.set(__self__, "load_from_cache", load_from_cache)
        if load_from_fallback_branch is not None:
            pulumi.set(__self__, "load_from_fallback_branch", load_from_fallback_branch)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)
        if store_type is not None:
            pulumi.set(__self__, "store_type", store_type)

    @_builtins.property
    @pulumi.getter(name="baseBranch")
    def base_branch(self) -> Optional[_builtins.str]:
        """
        Name of the default branch (this checks out a new branch titled by branch_name).
        """
        return pulumi.get(self, "base_branch")

    @_builtins.property
    @pulumi.getter
    def branch(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch")

    @_builtins.property
    @pulumi.getter(name="commitMessage")
    def commit_message(self) -> Optional[_builtins.str]:
        """
        Commit message used for the merge commit.
        """
        return pulumi.get(self, "commit_message")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="isHarnessCodeRepo")
    def is_harness_code_repo(self) -> Optional[_builtins.bool]:
        """
        If the repo is harness code
        """
        return pulumi.get(self, "is_harness_code_repo")

    @_builtins.property
    @pulumi.getter(name="isNewBranch")
    def is_new_branch(self) -> Optional[_builtins.bool]:
        """
        If the branch being created is new
        """
        return pulumi.get(self, "is_new_branch")

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> Optional[_builtins.str]:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> Optional[_builtins.str]:
        """
        Last object identifier (for Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="loadFromCache")
    def load_from_cache(self) -> Optional[_builtins.bool]:
        """
        Load service yaml from catch
        """
        return pulumi.get(self, "load_from_cache")

    @_builtins.property
    @pulumi.getter(name="loadFromFallbackBranch")
    def load_from_fallback_branch(self) -> Optional[_builtins.bool]:
        """
        Load service yaml from fallback branch
        """
        return pulumi.get(self, "load_from_fallback_branch")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="storeType")
    def store_type(self) -> Optional[_builtins.str]:
        """
        Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        return pulumi.get(self, "store_type")


@pulumi.output_type
class ServiceNowConnectorAuth(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "authType":
            suggest = "auth_type"
        elif key == "refreshToken":
            suggest = "refresh_token"
        elif key == "usernamePassword":
            suggest = "username_password"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ServiceNowConnectorAuth. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ServiceNowConnectorAuth.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ServiceNowConnectorAuth.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 auth_type: _builtins.str,
                 adfs: Optional['outputs.ServiceNowConnectorAuthAdfs'] = None,
                 refresh_token: Optional['outputs.ServiceNowConnectorAuthRefreshToken'] = None,
                 username_password: Optional['outputs.ServiceNowConnectorAuthUsernamePassword'] = None):
        """
        :param _builtins.str auth_type: Authentication types for Jira connector
        :param 'ServiceNowConnectorAuthAdfsArgs' adfs: Authenticate using adfs client credentials with certificate.
        :param 'ServiceNowConnectorAuthRefreshTokenArgs' refresh_token: Authenticate using refresh token grant type.
        :param 'ServiceNowConnectorAuthUsernamePasswordArgs' username_password: Authenticate using username password.
        """
        pulumi.set(__self__, "auth_type", auth_type)
        if adfs is not None:
            pulumi.set(__self__, "adfs", adfs)
        if refresh_token is not None:
            pulumi.set(__self__, "refresh_token", refresh_token)
        if username_password is not None:
            pulumi.set(__self__, "username_password", username_password)

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> _builtins.str:
        """
        Authentication types for Jira connector
        """
        return pulumi.get(self, "auth_type")

    @_builtins.property
    @pulumi.getter
    def adfs(self) -> Optional['outputs.ServiceNowConnectorAuthAdfs']:
        """
        Authenticate using adfs client credentials with certificate.
        """
        return pulumi.get(self, "adfs")

    @_builtins.property
    @pulumi.getter(name="refreshToken")
    def refresh_token(self) -> Optional['outputs.ServiceNowConnectorAuthRefreshToken']:
        """
        Authenticate using refresh token grant type.
        """
        return pulumi.get(self, "refresh_token")

    @_builtins.property
    @pulumi.getter(name="usernamePassword")
    def username_password(self) -> Optional['outputs.ServiceNowConnectorAuthUsernamePassword']:
        """
        Authenticate using username password.
        """
        return pulumi.get(self, "username_password")


@pulumi.output_type
class ServiceNowConnectorAuthAdfs(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "adfsUrl":
            suggest = "adfs_url"
        elif key == "certificateRef":
            suggest = "certificate_ref"
        elif key == "clientIdRef":
            suggest = "client_id_ref"
        elif key == "privateKeyRef":
            suggest = "private_key_ref"
        elif key == "resourceIdRef":
            suggest = "resource_id_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ServiceNowConnectorAuthAdfs. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ServiceNowConnectorAuthAdfs.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ServiceNowConnectorAuthAdfs.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 adfs_url: _builtins.str,
                 certificate_ref: _builtins.str,
                 client_id_ref: _builtins.str,
                 private_key_ref: _builtins.str,
                 resource_id_ref: _builtins.str):
        """
        :param _builtins.str adfs_url: asdf URL.
        :param _builtins.str certificate_ref: Reference to a secret containing the certificate to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str client_id_ref: Reference to a secret containing the clientIdRef to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str private_key_ref: Reference to a secret containing the privateKeyRef to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str resource_id_ref: Reference to a secret containing the resourceIdRef to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "adfs_url", adfs_url)
        pulumi.set(__self__, "certificate_ref", certificate_ref)
        pulumi.set(__self__, "client_id_ref", client_id_ref)
        pulumi.set(__self__, "private_key_ref", private_key_ref)
        pulumi.set(__self__, "resource_id_ref", resource_id_ref)

    @_builtins.property
    @pulumi.getter(name="adfsUrl")
    def adfs_url(self) -> _builtins.str:
        """
        asdf URL.
        """
        return pulumi.get(self, "adfs_url")

    @_builtins.property
    @pulumi.getter(name="certificateRef")
    def certificate_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the certificate to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "certificate_ref")

    @_builtins.property
    @pulumi.getter(name="clientIdRef")
    def client_id_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the clientIdRef to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_id_ref")

    @_builtins.property
    @pulumi.getter(name="privateKeyRef")
    def private_key_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the privateKeyRef to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "private_key_ref")

    @_builtins.property
    @pulumi.getter(name="resourceIdRef")
    def resource_id_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the resourceIdRef to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "resource_id_ref")


@pulumi.output_type
class ServiceNowConnectorAuthRefreshToken(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientIdRef":
            suggest = "client_id_ref"
        elif key == "refreshTokenRef":
            suggest = "refresh_token_ref"
        elif key == "tokenUrl":
            suggest = "token_url"
        elif key == "clientSecretRef":
            suggest = "client_secret_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ServiceNowConnectorAuthRefreshToken. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ServiceNowConnectorAuthRefreshToken.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ServiceNowConnectorAuthRefreshToken.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 client_id_ref: _builtins.str,
                 refresh_token_ref: _builtins.str,
                 token_url: _builtins.str,
                 client_secret_ref: Optional[_builtins.str] = None,
                 scope: Optional[_builtins.str] = None):
        """
        :param _builtins.str client_id_ref: Reference to a secret containing the client id to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str refresh_token_ref: Reference to a secret containing the refresh token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str token_url: Token url to use for authentication.
        :param _builtins.str client_secret_ref: Reference to a secret containing the client secret to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str scope: Scope string to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "client_id_ref", client_id_ref)
        pulumi.set(__self__, "refresh_token_ref", refresh_token_ref)
        pulumi.set(__self__, "token_url", token_url)
        if client_secret_ref is not None:
            pulumi.set(__self__, "client_secret_ref", client_secret_ref)
        if scope is not None:
            pulumi.set(__self__, "scope", scope)

    @_builtins.property
    @pulumi.getter(name="clientIdRef")
    def client_id_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the client id to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_id_ref")

    @_builtins.property
    @pulumi.getter(name="refreshTokenRef")
    def refresh_token_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the refresh token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "refresh_token_ref")

    @_builtins.property
    @pulumi.getter(name="tokenUrl")
    def token_url(self) -> _builtins.str:
        """
        Token url to use for authentication.
        """
        return pulumi.get(self, "token_url")

    @_builtins.property
    @pulumi.getter(name="clientSecretRef")
    def client_secret_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the client secret to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_secret_ref")

    @_builtins.property
    @pulumi.getter
    def scope(self) -> Optional[_builtins.str]:
        """
        Scope string to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "scope")


@pulumi.output_type
class ServiceNowConnectorAuthUsernamePassword(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "passwordRef":
            suggest = "password_ref"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ServiceNowConnectorAuthUsernamePassword. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ServiceNowConnectorAuthUsernamePassword.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ServiceNowConnectorAuthUsernamePassword.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class ServiceOverridesV2GitDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "baseBranch":
            suggest = "base_branch"
        elif key == "commitMessage":
            suggest = "commit_message"
        elif key == "connectorRef":
            suggest = "connector_ref"
        elif key == "filePath":
            suggest = "file_path"
        elif key == "isHarnessCodeRepo":
            suggest = "is_harness_code_repo"
        elif key == "isNewBranch":
            suggest = "is_new_branch"
        elif key == "lastCommitId":
            suggest = "last_commit_id"
        elif key == "lastObjectId":
            suggest = "last_object_id"
        elif key == "loadFromCache":
            suggest = "load_from_cache"
        elif key == "loadFromFallbackBranch":
            suggest = "load_from_fallback_branch"
        elif key == "repoName":
            suggest = "repo_name"
        elif key == "storeType":
            suggest = "store_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ServiceOverridesV2GitDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ServiceOverridesV2GitDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ServiceOverridesV2GitDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 base_branch: Optional[_builtins.str] = None,
                 branch: Optional[_builtins.str] = None,
                 commit_message: Optional[_builtins.str] = None,
                 connector_ref: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 is_harness_code_repo: Optional[_builtins.bool] = None,
                 is_new_branch: Optional[_builtins.bool] = None,
                 last_commit_id: Optional[_builtins.str] = None,
                 last_object_id: Optional[_builtins.str] = None,
                 load_from_cache: Optional[_builtins.bool] = None,
                 load_from_fallback_branch: Optional[_builtins.bool] = None,
                 repo_name: Optional[_builtins.str] = None,
                 store_type: Optional[_builtins.str] = None):
        """
        :param _builtins.str base_branch: Name of the default branch (this checks out a new branch titled by branch_name).
        :param _builtins.str branch: Name of the branch.
        :param _builtins.str commit_message: Commit message used for the merge commit.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.bool is_harness_code_repo: If the repo is in harness code
        :param _builtins.bool is_new_branch: If the branch being created is new
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating override.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating override.
        :param _builtins.bool load_from_cache: Load service yaml from catch
        :param _builtins.bool load_from_fallback_branch: Load service yaml from fallback branch
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str store_type: Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        if base_branch is not None:
            pulumi.set(__self__, "base_branch", base_branch)
        if branch is not None:
            pulumi.set(__self__, "branch", branch)
        if commit_message is not None:
            pulumi.set(__self__, "commit_message", commit_message)
        if connector_ref is not None:
            pulumi.set(__self__, "connector_ref", connector_ref)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if is_harness_code_repo is not None:
            pulumi.set(__self__, "is_harness_code_repo", is_harness_code_repo)
        if is_new_branch is not None:
            pulumi.set(__self__, "is_new_branch", is_new_branch)
        if last_commit_id is not None:
            pulumi.set(__self__, "last_commit_id", last_commit_id)
        if last_object_id is not None:
            pulumi.set(__self__, "last_object_id", last_object_id)
        if load_from_cache is not None:
            pulumi.set(__self__, "load_from_cache", load_from_cache)
        if load_from_fallback_branch is not None:
            pulumi.set(__self__, "load_from_fallback_branch", load_from_fallback_branch)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)
        if store_type is not None:
            pulumi.set(__self__, "store_type", store_type)

    @_builtins.property
    @pulumi.getter(name="baseBranch")
    def base_branch(self) -> Optional[_builtins.str]:
        """
        Name of the default branch (this checks out a new branch titled by branch_name).
        """
        return pulumi.get(self, "base_branch")

    @_builtins.property
    @pulumi.getter
    def branch(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch")

    @_builtins.property
    @pulumi.getter(name="commitMessage")
    def commit_message(self) -> Optional[_builtins.str]:
        """
        Commit message used for the merge commit.
        """
        return pulumi.get(self, "commit_message")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="isHarnessCodeRepo")
    def is_harness_code_repo(self) -> Optional[_builtins.bool]:
        """
        If the repo is in harness code
        """
        return pulumi.get(self, "is_harness_code_repo")

    @_builtins.property
    @pulumi.getter(name="isNewBranch")
    def is_new_branch(self) -> Optional[_builtins.bool]:
        """
        If the branch being created is new
        """
        return pulumi.get(self, "is_new_branch")

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> Optional[_builtins.str]:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating override.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> Optional[_builtins.str]:
        """
        Last object identifier (for Github). To be provided only when updating override.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="loadFromCache")
    def load_from_cache(self) -> Optional[_builtins.bool]:
        """
        Load service yaml from catch
        """
        return pulumi.get(self, "load_from_cache")

    @_builtins.property
    @pulumi.getter(name="loadFromFallbackBranch")
    def load_from_fallback_branch(self) -> Optional[_builtins.bool]:
        """
        Load service yaml from fallback branch
        """
        return pulumi.get(self, "load_from_fallback_branch")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="storeType")
    def store_type(self) -> Optional[_builtins.str]:
        """
        Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        return pulumi.get(self, "store_type")


@pulumi.output_type
class SloRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "sloTarget":
            suggest = "slo_target"
        elif key == "userJourneyRefs":
            suggest = "user_journey_refs"
        elif key == "notificationRuleRefs":
            suggest = "notification_rule_refs"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SloRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SloRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SloRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 name: _builtins.str,
                 slo_target: 'outputs.SloRequestSloTarget',
                 spec: _builtins.str,
                 type: _builtins.str,
                 user_journey_refs: Sequence[_builtins.str],
                 description: Optional[_builtins.str] = None,
                 notification_rule_refs: Optional[Sequence['outputs.SloRequestNotificationRuleRef']] = None,
                 tags: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str name: Name for the SLO.
        :param 'SloRequestSloTargetArgs' slo_target: SLO Target specification.
        :param _builtins.str spec: Specification of the SLO.
        :param _builtins.str type: Type of the SLO.
        :param Sequence[_builtins.str] user_journey_refs: User journey reference list for the SLO.
        :param _builtins.str description: Description for the SLO.
        :param Sequence['SloRequestNotificationRuleRefArgs'] notification_rule_refs: Notification rule references for the SLO.
        :param Sequence[_builtins.str] tags: Tags for the SLO. comma-separated key value string pairs.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "slo_target", slo_target)
        pulumi.set(__self__, "spec", spec)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "user_journey_refs", user_journey_refs)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if notification_rule_refs is not None:
            pulumi.set(__self__, "notification_rule_refs", notification_rule_refs)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name for the SLO.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="sloTarget")
    def slo_target(self) -> 'outputs.SloRequestSloTarget':
        """
        SLO Target specification.
        """
        return pulumi.get(self, "slo_target")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> _builtins.str:
        """
        Specification of the SLO.
        """
        return pulumi.get(self, "spec")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of the SLO.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter(name="userJourneyRefs")
    def user_journey_refs(self) -> Sequence[_builtins.str]:
        """
        User journey reference list for the SLO.
        """
        return pulumi.get(self, "user_journey_refs")

    @_builtins.property
    @pulumi.getter
    def description(self) -> Optional[_builtins.str]:
        """
        Description for the SLO.
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter(name="notificationRuleRefs")
    def notification_rule_refs(self) -> Optional[Sequence['outputs.SloRequestNotificationRuleRef']]:
        """
        Notification rule references for the SLO.
        """
        return pulumi.get(self, "notification_rule_refs")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Optional[Sequence[_builtins.str]]:
        """
        Tags for the SLO. comma-separated key value string pairs.
        """
        return pulumi.get(self, "tags")


@pulumi.output_type
class SloRequestNotificationRuleRef(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "notificationRuleRef":
            suggest = "notification_rule_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SloRequestNotificationRuleRef. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SloRequestNotificationRuleRef.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SloRequestNotificationRuleRef.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 enabled: _builtins.bool,
                 notification_rule_ref: _builtins.str):
        """
        :param _builtins.bool enabled: Enable or disable notification rule reference for the SLO.
        :param _builtins.str notification_rule_ref: Notification rule reference for the SLO.
        """
        pulumi.set(__self__, "enabled", enabled)
        pulumi.set(__self__, "notification_rule_ref", notification_rule_ref)

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> _builtins.bool:
        """
        Enable or disable notification rule reference for the SLO.
        """
        return pulumi.get(self, "enabled")

    @_builtins.property
    @pulumi.getter(name="notificationRuleRef")
    def notification_rule_ref(self) -> _builtins.str:
        """
        Notification rule reference for the SLO.
        """
        return pulumi.get(self, "notification_rule_ref")


@pulumi.output_type
class SloRequestSloTarget(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "sloTargetPercentage":
            suggest = "slo_target_percentage"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SloRequestSloTarget. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SloRequestSloTarget.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SloRequestSloTarget.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 slo_target_percentage: _builtins.float,
                 spec: _builtins.str,
                 type: _builtins.str):
        """
        :param _builtins.float slo_target_percentage: Target percentage for the SLO.
        :param _builtins.str spec: Specification of the SLO Target.
        :param _builtins.str type: Type of the SLO target.
        """
        pulumi.set(__self__, "slo_target_percentage", slo_target_percentage)
        pulumi.set(__self__, "spec", spec)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="sloTargetPercentage")
    def slo_target_percentage(self) -> _builtins.float:
        """
        Target percentage for the SLO.
        """
        return pulumi.get(self, "slo_target_percentage")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> _builtins.str:
        """
        Specification of the SLO Target.
        """
        return pulumi.get(self, "spec")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of the SLO target.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class SpotConnectorPermanentToken(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "apiTokenRef":
            suggest = "api_token_ref"
        elif key == "delegateSelectors":
            suggest = "delegate_selectors"
        elif key == "executeOnDelegate":
            suggest = "execute_on_delegate"
        elif key == "spotAccountId":
            suggest = "spot_account_id"
        elif key == "spotAccountIdRef":
            suggest = "spot_account_id_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SpotConnectorPermanentToken. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SpotConnectorPermanentToken.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SpotConnectorPermanentToken.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api_token_ref: _builtins.str,
                 delegate_selectors: Optional[Sequence[_builtins.str]] = None,
                 execute_on_delegate: Optional[_builtins.bool] = None,
                 spot_account_id: Optional[_builtins.str] = None,
                 spot_account_id_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str api_token_ref: Reference to the Harness secret containing the permanent api token. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param Sequence[_builtins.str] delegate_selectors: Connect only using delegates with these tags.
        :param _builtins.bool execute_on_delegate: Execute on delegate or not.
        :param _builtins.str spot_account_id: Spot account id.
        :param _builtins.str spot_account_id_ref: Reference to the Harness secret containing the spot account id. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "api_token_ref", api_token_ref)
        if delegate_selectors is not None:
            pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        if execute_on_delegate is not None:
            pulumi.set(__self__, "execute_on_delegate", execute_on_delegate)
        if spot_account_id is not None:
            pulumi.set(__self__, "spot_account_id", spot_account_id)
        if spot_account_id_ref is not None:
            pulumi.set(__self__, "spot_account_id_ref", spot_account_id_ref)

    @_builtins.property
    @pulumi.getter(name="apiTokenRef")
    def api_token_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the permanent api token. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "api_token_ref")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Optional[Sequence[_builtins.str]]:
        """
        Connect only using delegates with these tags.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter(name="executeOnDelegate")
    def execute_on_delegate(self) -> Optional[_builtins.bool]:
        """
        Execute on delegate or not.
        """
        return pulumi.get(self, "execute_on_delegate")

    @_builtins.property
    @pulumi.getter(name="spotAccountId")
    def spot_account_id(self) -> Optional[_builtins.str]:
        """
        Spot account id.
        """
        return pulumi.get(self, "spot_account_id")

    @_builtins.property
    @pulumi.getter(name="spotAccountIdRef")
    def spot_account_id_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the Harness secret containing the spot account id. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "spot_account_id_ref")


@pulumi.output_type
class TasConnectorCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "tasManualDetails":
            suggest = "tas_manual_details"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in TasConnectorCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        TasConnectorCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        TasConnectorCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 tas_manual_details: 'outputs.TasConnectorCredentialsTasManualDetails',
                 type: _builtins.str):
        """
        :param 'TasConnectorCredentialsTasManualDetailsArgs' tas_manual_details: Authenticate to Tas using manual details.
        :param _builtins.str type: Type can be ManualConfig.
        """
        pulumi.set(__self__, "tas_manual_details", tas_manual_details)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="tasManualDetails")
    def tas_manual_details(self) -> 'outputs.TasConnectorCredentialsTasManualDetails':
        """
        Authenticate to Tas using manual details.
        """
        return pulumi.get(self, "tas_manual_details")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type can be ManualConfig.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class TasConnectorCredentialsTasManualDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "endpointUrl":
            suggest = "endpoint_url"
        elif key == "passwordRef":
            suggest = "password_ref"
        elif key == "referenceToken":
            suggest = "reference_token"
        elif key == "usernameRef":
            suggest = "username_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in TasConnectorCredentialsTasManualDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        TasConnectorCredentialsTasManualDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        TasConnectorCredentialsTasManualDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 endpoint_url: _builtins.str,
                 password_ref: _builtins.str,
                 reference_token: Optional[_builtins.str] = None,
                 username: Optional[_builtins.str] = None,
                 username_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str endpoint_url: URL of the Tas server.
        :param _builtins.str password_ref: Reference of the secret for the password. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str reference_token: Reference token for authentication.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "endpoint_url", endpoint_url)
        pulumi.set(__self__, "password_ref", password_ref)
        if reference_token is not None:
            pulumi.set(__self__, "reference_token", reference_token)
        if username is not None:
            pulumi.set(__self__, "username", username)
        if username_ref is not None:
            pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="endpointUrl")
    def endpoint_url(self) -> _builtins.str:
        """
        URL of the Tas server.
        """
        return pulumi.get(self, "endpoint_url")

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference of the secret for the password. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter(name="referenceToken")
    def reference_token(self) -> Optional[_builtins.str]:
        """
        Reference token for authentication.
        """
        return pulumi.get(self, "reference_token")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> Optional[_builtins.str]:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class TemplateFiltersFilterProperties(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "filterType":
            suggest = "filter_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in TemplateFiltersFilterProperties. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        TemplateFiltersFilterProperties.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        TemplateFiltersFilterProperties.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 filter_type: _builtins.str,
                 tags: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.str filter_type: Corresponding Entity of the filters. Currently supported types are {TemplateSetup, TemplateExecution, Template}.
        :param Sequence[_builtins.str] tags: Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        pulumi.set(__self__, "filter_type", filter_type)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @_builtins.property
    @pulumi.getter(name="filterType")
    def filter_type(self) -> _builtins.str:
        """
        Corresponding Entity of the filters. Currently supported types are {TemplateSetup, TemplateExecution, Template}.
        """
        return pulumi.get(self, "filter_type")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Optional[Sequence[_builtins.str]]:
        """
        Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        return pulumi.get(self, "tags")


@pulumi.output_type
class TemplateGitDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "baseBranch":
            suggest = "base_branch"
        elif key == "branchName":
            suggest = "branch_name"
        elif key == "commitMessage":
            suggest = "commit_message"
        elif key == "connectorRef":
            suggest = "connector_ref"
        elif key == "filePath":
            suggest = "file_path"
        elif key == "lastCommitId":
            suggest = "last_commit_id"
        elif key == "lastObjectId":
            suggest = "last_object_id"
        elif key == "repoName":
            suggest = "repo_name"
        elif key == "storeType":
            suggest = "store_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in TemplateGitDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        TemplateGitDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        TemplateGitDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 base_branch: Optional[_builtins.str] = None,
                 branch_name: Optional[_builtins.str] = None,
                 commit_message: Optional[_builtins.str] = None,
                 connector_ref: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 last_commit_id: Optional[_builtins.str] = None,
                 last_object_id: Optional[_builtins.str] = None,
                 repo_name: Optional[_builtins.str] = None,
                 store_type: Optional[_builtins.str] = None):
        """
        :param _builtins.str base_branch: Name of the default branch (this checks out a new branch titled by branch_name).
        :param _builtins.str branch_name: Name of the branch.
        :param _builtins.str commit_message: Commit message used for the merge commit.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating Pipeline.
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str store_type: Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        if base_branch is not None:
            pulumi.set(__self__, "base_branch", base_branch)
        if branch_name is not None:
            pulumi.set(__self__, "branch_name", branch_name)
        if commit_message is not None:
            pulumi.set(__self__, "commit_message", commit_message)
        if connector_ref is not None:
            pulumi.set(__self__, "connector_ref", connector_ref)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if last_commit_id is not None:
            pulumi.set(__self__, "last_commit_id", last_commit_id)
        if last_object_id is not None:
            pulumi.set(__self__, "last_object_id", last_object_id)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)
        if store_type is not None:
            pulumi.set(__self__, "store_type", store_type)

    @_builtins.property
    @pulumi.getter(name="baseBranch")
    def base_branch(self) -> Optional[_builtins.str]:
        """
        Name of the default branch (this checks out a new branch titled by branch_name).
        """
        return pulumi.get(self, "base_branch")

    @_builtins.property
    @pulumi.getter(name="branchName")
    def branch_name(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch_name")

    @_builtins.property
    @pulumi.getter(name="commitMessage")
    def commit_message(self) -> Optional[_builtins.str]:
        """
        Commit message used for the merge commit.
        """
        return pulumi.get(self, "commit_message")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for CRUD operations on the Entity. To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> Optional[_builtins.str]:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> Optional[_builtins.str]:
        """
        Last object identifier (for Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="storeType")
    def store_type(self) -> Optional[_builtins.str]:
        """
        Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        return pulumi.get(self, "store_type")


@pulumi.output_type
class TemplateGitImportDetails(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "branchName":
            suggest = "branch_name"
        elif key == "connectorRef":
            suggest = "connector_ref"
        elif key == "filePath":
            suggest = "file_path"
        elif key == "isForceImport":
            suggest = "is_force_import"
        elif key == "repoName":
            suggest = "repo_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in TemplateGitImportDetails. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        TemplateGitImportDetails.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        TemplateGitImportDetails.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 branch_name: Optional[_builtins.str] = None,
                 connector_ref: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 is_force_import: Optional[_builtins.bool] = None,
                 repo_name: Optional[_builtins.str] = None):
        """
        :param _builtins.str branch_name: Name of the branch.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for importing entity from Git To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.str repo_name: Name of the repository.
        """
        if branch_name is not None:
            pulumi.set(__self__, "branch_name", branch_name)
        if connector_ref is not None:
            pulumi.set(__self__, "connector_ref", connector_ref)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if is_force_import is not None:
            pulumi.set(__self__, "is_force_import", is_force_import)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)

    @_builtins.property
    @pulumi.getter(name="branchName")
    def branch_name(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch_name")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> Optional[_builtins.str]:
        """
        Identifier of the Harness Connector used for importing entity from Git To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="isForceImport")
    def is_force_import(self) -> Optional[_builtins.bool]:
        return pulumi.get(self, "is_force_import")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")


@pulumi.output_type
class TemplateTemplateImportRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "templateDescription":
            suggest = "template_description"
        elif key == "templateName":
            suggest = "template_name"
        elif key == "templateVersion":
            suggest = "template_version"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in TemplateTemplateImportRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        TemplateTemplateImportRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        TemplateTemplateImportRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 template_description: Optional[_builtins.str] = None,
                 template_name: Optional[_builtins.str] = None,
                 template_version: Optional[_builtins.str] = None):
        """
        :param _builtins.str template_description: Description of the template.
        :param _builtins.str template_name: Name of the template.
        :param _builtins.str template_version: Version of the template.
        """
        if template_description is not None:
            pulumi.set(__self__, "template_description", template_description)
        if template_name is not None:
            pulumi.set(__self__, "template_name", template_name)
        if template_version is not None:
            pulumi.set(__self__, "template_version", template_version)

    @_builtins.property
    @pulumi.getter(name="templateDescription")
    def template_description(self) -> Optional[_builtins.str]:
        """
        Description of the template.
        """
        return pulumi.get(self, "template_description")

    @_builtins.property
    @pulumi.getter(name="templateName")
    def template_name(self) -> Optional[_builtins.str]:
        """
        Name of the template.
        """
        return pulumi.get(self, "template_name")

    @_builtins.property
    @pulumi.getter(name="templateVersion")
    def template_version(self) -> Optional[_builtins.str]:
        """
        Version of the template.
        """
        return pulumi.get(self, "template_version")


@pulumi.output_type
class TerraformCloudConnectorCredentials(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "apiToken":
            suggest = "api_token"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in TerraformCloudConnectorCredentials. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        TerraformCloudConnectorCredentials.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        TerraformCloudConnectorCredentials.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api_token: 'outputs.TerraformCloudConnectorCredentialsApiToken'):
        """
        :param 'TerraformCloudConnectorCredentialsApiTokenArgs' api_token: API token credentials to use for authentication.
        """
        pulumi.set(__self__, "api_token", api_token)

    @_builtins.property
    @pulumi.getter(name="apiToken")
    def api_token(self) -> 'outputs.TerraformCloudConnectorCredentialsApiToken':
        """
        API token credentials to use for authentication.
        """
        return pulumi.get(self, "api_token")


@pulumi.output_type
class TerraformCloudConnectorCredentialsApiToken(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "apiTokenRef":
            suggest = "api_token_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in TerraformCloudConnectorCredentialsApiToken. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        TerraformCloudConnectorCredentialsApiToken.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        TerraformCloudConnectorCredentialsApiToken.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 api_token_ref: _builtins.str):
        """
        :param _builtins.str api_token_ref: Reference to a secret containing the API token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "api_token_ref", api_token_ref)

    @_builtins.property
    @pulumi.getter(name="apiTokenRef")
    def api_token_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the API token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "api_token_ref")


@pulumi.output_type
class UserRoleBinding(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "managedRole":
            suggest = "managed_role"
        elif key == "resourceGroupIdentifier":
            suggest = "resource_group_identifier"
        elif key == "resourceGroupName":
            suggest = "resource_group_name"
        elif key == "roleIdentifier":
            suggest = "role_identifier"
        elif key == "roleName":
            suggest = "role_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in UserRoleBinding. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        UserRoleBinding.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        UserRoleBinding.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 managed_role: Optional[_builtins.bool] = None,
                 resource_group_identifier: Optional[_builtins.str] = None,
                 resource_group_name: Optional[_builtins.str] = None,
                 role_identifier: Optional[_builtins.str] = None,
                 role_name: Optional[_builtins.str] = None):
        """
        :param _builtins.bool managed_role: Managed Role of the user.
        :param _builtins.str resource_group_identifier: Resource Group Identifier of the user.
        :param _builtins.str resource_group_name: Resource Group Name of the user.
        :param _builtins.str role_identifier: Role Identifier of the user.
        :param _builtins.str role_name: Role Name Identifier of the user.
        """
        if managed_role is not None:
            pulumi.set(__self__, "managed_role", managed_role)
        if resource_group_identifier is not None:
            pulumi.set(__self__, "resource_group_identifier", resource_group_identifier)
        if resource_group_name is not None:
            pulumi.set(__self__, "resource_group_name", resource_group_name)
        if role_identifier is not None:
            pulumi.set(__self__, "role_identifier", role_identifier)
        if role_name is not None:
            pulumi.set(__self__, "role_name", role_name)

    @_builtins.property
    @pulumi.getter(name="managedRole")
    def managed_role(self) -> Optional[_builtins.bool]:
        """
        Managed Role of the user.
        """
        return pulumi.get(self, "managed_role")

    @_builtins.property
    @pulumi.getter(name="resourceGroupIdentifier")
    def resource_group_identifier(self) -> Optional[_builtins.str]:
        """
        Resource Group Identifier of the user.
        """
        return pulumi.get(self, "resource_group_identifier")

    @_builtins.property
    @pulumi.getter(name="resourceGroupName")
    def resource_group_name(self) -> Optional[_builtins.str]:
        """
        Resource Group Name of the user.
        """
        return pulumi.get(self, "resource_group_name")

    @_builtins.property
    @pulumi.getter(name="roleIdentifier")
    def role_identifier(self) -> Optional[_builtins.str]:
        """
        Role Identifier of the user.
        """
        return pulumi.get(self, "role_identifier")

    @_builtins.property
    @pulumi.getter(name="roleName")
    def role_name(self) -> Optional[_builtins.str]:
        """
        Role Name Identifier of the user.
        """
        return pulumi.get(self, "role_name")


@pulumi.output_type
class UsergroupNotificationConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "groupEmail":
            suggest = "group_email"
        elif key == "microsoftTeamsWebhookUrl":
            suggest = "microsoft_teams_webhook_url"
        elif key == "pagerDutyKey":
            suggest = "pager_duty_key"
        elif key == "sendEmailToAllUsers":
            suggest = "send_email_to_all_users"
        elif key == "slackWebhookUrl":
            suggest = "slack_webhook_url"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in UsergroupNotificationConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        UsergroupNotificationConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        UsergroupNotificationConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 group_email: Optional[_builtins.str] = None,
                 microsoft_teams_webhook_url: Optional[_builtins.str] = None,
                 pager_duty_key: Optional[_builtins.str] = None,
                 send_email_to_all_users: Optional[_builtins.bool] = None,
                 slack_webhook_url: Optional[_builtins.str] = None,
                 type: Optional[_builtins.str] = None):
        """
        :param _builtins.str group_email: Group email.
        :param _builtins.str microsoft_teams_webhook_url: Url of Microsoft teams webhook.
        :param _builtins.str pager_duty_key: Pager duty key.
        :param _builtins.bool send_email_to_all_users: Send email to all the group members.
        :param _builtins.str slack_webhook_url: Url of slack webhook.
        :param _builtins.str type: Can be one of EMAIL, SLACK, PAGERDUTY, MSTEAMS.
        """
        if group_email is not None:
            pulumi.set(__self__, "group_email", group_email)
        if microsoft_teams_webhook_url is not None:
            pulumi.set(__self__, "microsoft_teams_webhook_url", microsoft_teams_webhook_url)
        if pager_duty_key is not None:
            pulumi.set(__self__, "pager_duty_key", pager_duty_key)
        if send_email_to_all_users is not None:
            pulumi.set(__self__, "send_email_to_all_users", send_email_to_all_users)
        if slack_webhook_url is not None:
            pulumi.set(__self__, "slack_webhook_url", slack_webhook_url)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="groupEmail")
    def group_email(self) -> Optional[_builtins.str]:
        """
        Group email.
        """
        return pulumi.get(self, "group_email")

    @_builtins.property
    @pulumi.getter(name="microsoftTeamsWebhookUrl")
    def microsoft_teams_webhook_url(self) -> Optional[_builtins.str]:
        """
        Url of Microsoft teams webhook.
        """
        return pulumi.get(self, "microsoft_teams_webhook_url")

    @_builtins.property
    @pulumi.getter(name="pagerDutyKey")
    def pager_duty_key(self) -> Optional[_builtins.str]:
        """
        Pager duty key.
        """
        return pulumi.get(self, "pager_duty_key")

    @_builtins.property
    @pulumi.getter(name="sendEmailToAllUsers")
    def send_email_to_all_users(self) -> Optional[_builtins.bool]:
        """
        Send email to all the group members.
        """
        return pulumi.get(self, "send_email_to_all_users")

    @_builtins.property
    @pulumi.getter(name="slackWebhookUrl")
    def slack_webhook_url(self) -> Optional[_builtins.str]:
        """
        Url of slack webhook.
        """
        return pulumi.get(self, "slack_webhook_url")

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[_builtins.str]:
        """
        Can be one of EMAIL, SLACK, PAGERDUTY, MSTEAMS.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class VariablesSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "fixedValue":
            suggest = "fixed_value"
        elif key == "valueType":
            suggest = "value_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in VariablesSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        VariablesSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        VariablesSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 fixed_value: _builtins.str,
                 value_type: _builtins.str):
        """
        :param _builtins.str fixed_value: FixedValue of the variable
        :param _builtins.str value_type: Type of Value of the Variable. For now only FIXED is supported
        """
        pulumi.set(__self__, "fixed_value", fixed_value)
        pulumi.set(__self__, "value_type", value_type)

    @_builtins.property
    @pulumi.getter(name="fixedValue")
    def fixed_value(self) -> _builtins.str:
        """
        FixedValue of the variable
        """
        return pulumi.get(self, "fixed_value")

    @_builtins.property
    @pulumi.getter(name="valueType")
    def value_type(self) -> _builtins.str:
        """
        Type of Value of the Variable. For now only FIXED is supported
        """
        return pulumi.get(self, "value_type")


@pulumi.output_type
class WorkspaceConnector(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "connectorRef":
            suggest = "connector_ref"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in WorkspaceConnector. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        WorkspaceConnector.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        WorkspaceConnector.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 connector_ref: _builtins.str,
                 type: _builtins.str):
        """
        :param _builtins.str connector_ref: Connector Ref is the reference to the connector
        :param _builtins.str type: Type is the connector type of the connector. Supported types: aws, azure, gcp
        """
        pulumi.set(__self__, "connector_ref", connector_ref)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> _builtins.str:
        """
        Connector Ref is the reference to the connector
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type is the connector type of the connector. Supported types: aws, azure, gcp
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class WorkspaceEnvironmentVariable(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "valueType":
            suggest = "value_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in WorkspaceEnvironmentVariable. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        WorkspaceEnvironmentVariable.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        WorkspaceEnvironmentVariable.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 value: _builtins.str,
                 value_type: _builtins.str):
        """
        :param _builtins.str key: Key is the identifier for the variable. Must be unique within the workspace.
        :param _builtins.str value: Value is the value of the variable. For string value types this field should contain the value of the variable. For secret value types this should contain a reference to a valid harness secret.
        :param _builtins.str value_type: Value type indicates the value type of the variable. Currently we support string and secret.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "value_type", value_type)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key is the identifier for the variable. Must be unique within the workspace.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        Value is the value of the variable. For string value types this field should contain the value of the variable. For secret value types this should contain a reference to a valid harness secret.
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueType")
    def value_type(self) -> _builtins.str:
        """
        Value type indicates the value type of the variable. Currently we support string and secret.
        """
        return pulumi.get(self, "value_type")


@pulumi.output_type
class WorkspaceTerraformVariable(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "valueType":
            suggest = "value_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in WorkspaceTerraformVariable. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        WorkspaceTerraformVariable.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        WorkspaceTerraformVariable.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 key: _builtins.str,
                 value: _builtins.str,
                 value_type: _builtins.str):
        """
        :param _builtins.str key: Key is the identifier for the variable. Must be unique within the workspace.
        :param _builtins.str value: Value is the value of the variable. For string value types this field should contain the value of the variable. For secret value types this should contain a reference to a valid harness secret.
        :param _builtins.str value_type: Value type indicates the value type of the variable. Currently we support string and secret.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "value_type", value_type)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key is the identifier for the variable. Must be unique within the workspace.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        Value is the value of the variable. For string value types this field should contain the value of the variable. For secret value types this should contain a reference to a valid harness secret.
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueType")
    def value_type(self) -> _builtins.str:
        """
        Value type indicates the value type of the variable. Currently we support string and secret.
        """
        return pulumi.get(self, "value_type")


@pulumi.output_type
class WorkspaceTerraformVariableFile(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "repositoryConnector":
            suggest = "repository_connector"
        elif key == "repositoryBranch":
            suggest = "repository_branch"
        elif key == "repositoryCommit":
            suggest = "repository_commit"
        elif key == "repositoryPath":
            suggest = "repository_path"
        elif key == "repositorySha":
            suggest = "repository_sha"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in WorkspaceTerraformVariableFile. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        WorkspaceTerraformVariableFile.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        WorkspaceTerraformVariableFile.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 repository: _builtins.str,
                 repository_connector: _builtins.str,
                 repository_branch: Optional[_builtins.str] = None,
                 repository_commit: Optional[_builtins.str] = None,
                 repository_path: Optional[_builtins.str] = None,
                 repository_sha: Optional[_builtins.str] = None):
        """
        :param _builtins.str repository: Repository is the name of the repository to fetch the code from.
        :param _builtins.str repository_connector: Repository connector is the reference to the connector used to fetch the variables.
        :param _builtins.str repository_branch: Repository branch is the name of the branch to fetch the variables from. This cannot be set if repository commit or sha is set
        :param _builtins.str repository_commit: Repository commit is tag to fetch the variables from. This cannot be set if repository branch or sha is set.
        :param _builtins.str repository_path: Repository path is the path in which the variables reside.
        :param _builtins.str repository_sha: Repository commit is SHA to fetch the variables from. This cannot be set if repository branch or commit is set.
        """
        pulumi.set(__self__, "repository", repository)
        pulumi.set(__self__, "repository_connector", repository_connector)
        if repository_branch is not None:
            pulumi.set(__self__, "repository_branch", repository_branch)
        if repository_commit is not None:
            pulumi.set(__self__, "repository_commit", repository_commit)
        if repository_path is not None:
            pulumi.set(__self__, "repository_path", repository_path)
        if repository_sha is not None:
            pulumi.set(__self__, "repository_sha", repository_sha)

    @_builtins.property
    @pulumi.getter
    def repository(self) -> _builtins.str:
        """
        Repository is the name of the repository to fetch the code from.
        """
        return pulumi.get(self, "repository")

    @_builtins.property
    @pulumi.getter(name="repositoryConnector")
    def repository_connector(self) -> _builtins.str:
        """
        Repository connector is the reference to the connector used to fetch the variables.
        """
        return pulumi.get(self, "repository_connector")

    @_builtins.property
    @pulumi.getter(name="repositoryBranch")
    def repository_branch(self) -> Optional[_builtins.str]:
        """
        Repository branch is the name of the branch to fetch the variables from. This cannot be set if repository commit or sha is set
        """
        return pulumi.get(self, "repository_branch")

    @_builtins.property
    @pulumi.getter(name="repositoryCommit")
    def repository_commit(self) -> Optional[_builtins.str]:
        """
        Repository commit is tag to fetch the variables from. This cannot be set if repository branch or sha is set.
        """
        return pulumi.get(self, "repository_commit")

    @_builtins.property
    @pulumi.getter(name="repositoryPath")
    def repository_path(self) -> Optional[_builtins.str]:
        """
        Repository path is the path in which the variables reside.
        """
        return pulumi.get(self, "repository_path")

    @_builtins.property
    @pulumi.getter(name="repositorySha")
    def repository_sha(self) -> Optional[_builtins.str]:
        """
        Repository commit is SHA to fetch the variables from. This cannot be set if repository branch or commit is set.
        """
        return pulumi.get(self, "repository_sha")


@pulumi.output_type
class GetAppDynamicsConnectorApiTokenResult(dict):
    def __init__(__self__, *,
                 client_id: _builtins.str,
                 client_secret_ref: _builtins.str):
        """
        :param _builtins.str client_id: The client id used for connecting to App Dynamics.
        :param _builtins.str client_secret_ref: Reference to the Harness secret containing the App Dynamics client secret. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_ref", client_secret_ref)

    @_builtins.property
    @pulumi.getter(name="clientId")
    def client_id(self) -> _builtins.str:
        """
        The client id used for connecting to App Dynamics.
        """
        return pulumi.get(self, "client_id")

    @_builtins.property
    @pulumi.getter(name="clientSecretRef")
    def client_secret_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the App Dynamics client secret. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_secret_ref")


@pulumi.output_type
class GetAppDynamicsConnectorUsernamePasswordResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GetArtifactoryConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetAwsCCConnectorCrossAccountAccessResult(dict):
    def __init__(__self__, *,
                 external_id: _builtins.str,
                 role_arn: _builtins.str):
        """
        :param _builtins.str external_id: The external id of the role to use for cross-account access. This is a random unique value to provide additional secure authentication.
        :param _builtins.str role_arn: The ARN of the role to use for cross-account access.
        """
        pulumi.set(__self__, "external_id", external_id)
        pulumi.set(__self__, "role_arn", role_arn)

    @_builtins.property
    @pulumi.getter(name="externalId")
    def external_id(self) -> _builtins.str:
        """
        The external id of the role to use for cross-account access. This is a random unique value to provide additional secure authentication.
        """
        return pulumi.get(self, "external_id")

    @_builtins.property
    @pulumi.getter(name="roleArn")
    def role_arn(self) -> _builtins.str:
        """
        The ARN of the role to use for cross-account access.
        """
        return pulumi.get(self, "role_arn")


@pulumi.output_type
class GetAwsConnectorCrossAccountAccessResult(dict):
    def __init__(__self__, *,
                 external_id: _builtins.str,
                 role_arn: _builtins.str):
        """
        :param _builtins.str external_id: If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        :param _builtins.str role_arn: The Amazon Resource Name (ARN) of the role that you want to assume. This is an IAM role in the target AWS account.
        """
        pulumi.set(__self__, "external_id", external_id)
        pulumi.set(__self__, "role_arn", role_arn)

    @_builtins.property
    @pulumi.getter(name="externalId")
    def external_id(self) -> _builtins.str:
        """
        If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        """
        return pulumi.get(self, "external_id")

    @_builtins.property
    @pulumi.getter(name="roleArn")
    def role_arn(self) -> _builtins.str:
        """
        The Amazon Resource Name (ARN) of the role that you want to assume. This is an IAM role in the target AWS account.
        """
        return pulumi.get(self, "role_arn")


@pulumi.output_type
class GetAwsConnectorEqualJitterBackoffStrategyResult(dict):
    def __init__(__self__, *,
                 base_delay: _builtins.int,
                 max_backoff_time: _builtins.int,
                 retry_count: _builtins.int):
        """
        :param _builtins.int base_delay: Base delay.
        :param _builtins.int max_backoff_time: Max BackOff Time.
        :param _builtins.int retry_count: Retry Count.
        """
        pulumi.set(__self__, "base_delay", base_delay)
        pulumi.set(__self__, "max_backoff_time", max_backoff_time)
        pulumi.set(__self__, "retry_count", retry_count)

    @_builtins.property
    @pulumi.getter(name="baseDelay")
    def base_delay(self) -> _builtins.int:
        """
        Base delay.
        """
        return pulumi.get(self, "base_delay")

    @_builtins.property
    @pulumi.getter(name="maxBackoffTime")
    def max_backoff_time(self) -> _builtins.int:
        """
        Max BackOff Time.
        """
        return pulumi.get(self, "max_backoff_time")

    @_builtins.property
    @pulumi.getter(name="retryCount")
    def retry_count(self) -> _builtins.int:
        """
        Retry Count.
        """
        return pulumi.get(self, "retry_count")


@pulumi.output_type
class GetAwsConnectorFixedDelayBackoffStrategyResult(dict):
    def __init__(__self__, *,
                 fixed_backoff: _builtins.int,
                 retry_count: _builtins.int):
        """
        :param _builtins.int fixed_backoff: Fixed Backoff.
        :param _builtins.int retry_count: Retry Count.
        """
        pulumi.set(__self__, "fixed_backoff", fixed_backoff)
        pulumi.set(__self__, "retry_count", retry_count)

    @_builtins.property
    @pulumi.getter(name="fixedBackoff")
    def fixed_backoff(self) -> _builtins.int:
        """
        Fixed Backoff.
        """
        return pulumi.get(self, "fixed_backoff")

    @_builtins.property
    @pulumi.getter(name="retryCount")
    def retry_count(self) -> _builtins.int:
        """
        Retry Count.
        """
        return pulumi.get(self, "retry_count")


@pulumi.output_type
class GetAwsConnectorFullJitterBackoffStrategyResult(dict):
    def __init__(__self__, *,
                 base_delay: _builtins.int,
                 max_backoff_time: _builtins.int,
                 retry_count: _builtins.int):
        """
        :param _builtins.int base_delay: Base delay.
        :param _builtins.int max_backoff_time: Max BackOff Time.
        :param _builtins.int retry_count: Retry Count.
        """
        pulumi.set(__self__, "base_delay", base_delay)
        pulumi.set(__self__, "max_backoff_time", max_backoff_time)
        pulumi.set(__self__, "retry_count", retry_count)

    @_builtins.property
    @pulumi.getter(name="baseDelay")
    def base_delay(self) -> _builtins.int:
        """
        Base delay.
        """
        return pulumi.get(self, "base_delay")

    @_builtins.property
    @pulumi.getter(name="maxBackoffTime")
    def max_backoff_time(self) -> _builtins.int:
        """
        Max BackOff Time.
        """
        return pulumi.get(self, "max_backoff_time")

    @_builtins.property
    @pulumi.getter(name="retryCount")
    def retry_count(self) -> _builtins.int:
        """
        Retry Count.
        """
        return pulumi.get(self, "retry_count")


@pulumi.output_type
class GetAwsConnectorInheritFromDelegateResult(dict):
    def __init__(__self__, *,
                 delegate_selectors: Sequence[_builtins.str],
                 region: Optional[_builtins.str] = None):
        """
        :param Sequence[_builtins.str] delegate_selectors: The delegates to inherit the credentials from.
        :param _builtins.str region: Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        The delegates to inherit the credentials from.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[_builtins.str]:
        """
        Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "region")


@pulumi.output_type
class GetAwsConnectorIrsaResult(dict):
    def __init__(__self__, *,
                 delegate_selectors: Sequence[_builtins.str],
                 region: Optional[_builtins.str] = None):
        """
        :param Sequence[_builtins.str] delegate_selectors: The delegates to inherit the credentials from.
        :param _builtins.str region: Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        The delegates to inherit the credentials from.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[_builtins.str]:
        """
        Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "region")


@pulumi.output_type
class GetAwsConnectorManualResult(dict):
    def __init__(__self__, *,
                 access_key: _builtins.str,
                 access_key_ref: _builtins.str,
                 delegate_selectors: Sequence[_builtins.str],
                 secret_key_ref: _builtins.str,
                 access_key_plain_text: Optional[_builtins.str] = None,
                 region: Optional[_builtins.str] = None,
                 session_token_ref: Optional[_builtins.str] = None):
        """
        :param _builtins.str access_key: AWS access key.
        :param _builtins.str access_key_ref: Reference to the Harness secret containing the aws access key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param Sequence[_builtins.str] delegate_selectors: Connect only use delegates with these tags.
        :param _builtins.str secret_key_ref: Reference to the Harness secret containing the aws secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str access_key_plain_text: The plain text AWS access key.
        :param _builtins.str region: Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str session_token_ref: Reference to the Harness secret containing the aws session token. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "access_key", access_key)
        pulumi.set(__self__, "access_key_ref", access_key_ref)
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        pulumi.set(__self__, "secret_key_ref", secret_key_ref)
        if access_key_plain_text is not None:
            pulumi.set(__self__, "access_key_plain_text", access_key_plain_text)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if session_token_ref is not None:
            pulumi.set(__self__, "session_token_ref", session_token_ref)

    @_builtins.property
    @pulumi.getter(name="accessKey")
    def access_key(self) -> _builtins.str:
        """
        AWS access key.
        """
        return pulumi.get(self, "access_key")

    @_builtins.property
    @pulumi.getter(name="accessKeyRef")
    def access_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the aws access key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "access_key_ref")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        Connect only use delegates with these tags.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter(name="secretKeyRef")
    def secret_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the aws secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "secret_key_ref")

    @_builtins.property
    @pulumi.getter(name="accessKeyPlainText")
    def access_key_plain_text(self) -> Optional[_builtins.str]:
        """
        The plain text AWS access key.
        """
        return pulumi.get(self, "access_key_plain_text")

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[_builtins.str]:
        """
        Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "region")

    @_builtins.property
    @pulumi.getter(name="sessionTokenRef")
    def session_token_ref(self) -> Optional[_builtins.str]:
        """
        Reference to the Harness secret containing the aws session token. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "session_token_ref")


@pulumi.output_type
class GetAwsConnectorOidcAuthenticationResult(dict):
    def __init__(__self__, *,
                 delegate_selectors: Sequence[_builtins.str],
                 iam_role_arn: _builtins.str,
                 region: Optional[_builtins.str] = None):
        """
        :param Sequence[_builtins.str] delegate_selectors: The delegates to inherit the credentials from.
        :param _builtins.str iam_role_arn: The IAM Role to assume the credentials from.
        :param _builtins.str region: Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        pulumi.set(__self__, "iam_role_arn", iam_role_arn)
        if region is not None:
            pulumi.set(__self__, "region", region)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        The delegates to inherit the credentials from.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter(name="iamRoleArn")
    def iam_role_arn(self) -> _builtins.str:
        """
        The IAM Role to assume the credentials from.
        """
        return pulumi.get(self, "iam_role_arn")

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[_builtins.str]:
        """
        Test Region to perform Connection test of AWS Connector To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "region")


@pulumi.output_type
class GetAwsKmsConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 assume_roles: Sequence['outputs.GetAwsKmsConnectorCredentialAssumeRoleResult'],
                 inherit_from_delegate: _builtins.bool,
                 manuals: Sequence['outputs.GetAwsKmsConnectorCredentialManualResult'],
                 oidc_authentications: Sequence['outputs.GetAwsKmsConnectorCredentialOidcAuthenticationResult']):
        """
        :param Sequence['GetAwsKmsConnectorCredentialAssumeRoleArgs'] assume_roles: Connect using STS assume role.
        :param _builtins.bool inherit_from_delegate: Inherit the credentials from from the delegate.
        :param Sequence['GetAwsKmsConnectorCredentialManualArgs'] manuals: Specify the AWS key and secret used for authenticating.
        :param Sequence['GetAwsKmsConnectorCredentialOidcAuthenticationArgs'] oidc_authentications: Authentication using OIDC.
        """
        pulumi.set(__self__, "assume_roles", assume_roles)
        pulumi.set(__self__, "inherit_from_delegate", inherit_from_delegate)
        pulumi.set(__self__, "manuals", manuals)
        pulumi.set(__self__, "oidc_authentications", oidc_authentications)

    @_builtins.property
    @pulumi.getter(name="assumeRoles")
    def assume_roles(self) -> Sequence['outputs.GetAwsKmsConnectorCredentialAssumeRoleResult']:
        """
        Connect using STS assume role.
        """
        return pulumi.get(self, "assume_roles")

    @_builtins.property
    @pulumi.getter(name="inheritFromDelegate")
    def inherit_from_delegate(self) -> _builtins.bool:
        """
        Inherit the credentials from from the delegate.
        """
        return pulumi.get(self, "inherit_from_delegate")

    @_builtins.property
    @pulumi.getter
    def manuals(self) -> Sequence['outputs.GetAwsKmsConnectorCredentialManualResult']:
        """
        Specify the AWS key and secret used for authenticating.
        """
        return pulumi.get(self, "manuals")

    @_builtins.property
    @pulumi.getter(name="oidcAuthentications")
    def oidc_authentications(self) -> Sequence['outputs.GetAwsKmsConnectorCredentialOidcAuthenticationResult']:
        """
        Authentication using OIDC.
        """
        return pulumi.get(self, "oidc_authentications")


@pulumi.output_type
class GetAwsKmsConnectorCredentialAssumeRoleResult(dict):
    def __init__(__self__, *,
                 duration: _builtins.int,
                 external_id: _builtins.str,
                 role_arn: _builtins.str):
        """
        :param _builtins.int duration: The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the client request body. The minimum value is 1 hour.
        :param _builtins.str external_id: If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        :param _builtins.str role_arn: The ARN of the role to assume.
        """
        pulumi.set(__self__, "duration", duration)
        pulumi.set(__self__, "external_id", external_id)
        pulumi.set(__self__, "role_arn", role_arn)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> _builtins.int:
        """
        The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the client request body. The minimum value is 1 hour.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter(name="externalId")
    def external_id(self) -> _builtins.str:
        """
        If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        """
        return pulumi.get(self, "external_id")

    @_builtins.property
    @pulumi.getter(name="roleArn")
    def role_arn(self) -> _builtins.str:
        """
        The ARN of the role to assume.
        """
        return pulumi.get(self, "role_arn")


@pulumi.output_type
class GetAwsKmsConnectorCredentialManualResult(dict):
    def __init__(__self__, *,
                 access_key_ref: _builtins.str,
                 secret_key_ref: _builtins.str):
        """
        :param _builtins.str access_key_ref: The reference to the Harness secret containing the AWS access key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str secret_key_ref: The reference to the Harness secret containing the AWS secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "access_key_ref", access_key_ref)
        pulumi.set(__self__, "secret_key_ref", secret_key_ref)

    @_builtins.property
    @pulumi.getter(name="accessKeyRef")
    def access_key_ref(self) -> _builtins.str:
        """
        The reference to the Harness secret containing the AWS access key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "access_key_ref")

    @_builtins.property
    @pulumi.getter(name="secretKeyRef")
    def secret_key_ref(self) -> _builtins.str:
        """
        The reference to the Harness secret containing the AWS secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "secret_key_ref")


@pulumi.output_type
class GetAwsKmsConnectorCredentialOidcAuthenticationResult(dict):
    def __init__(__self__, *,
                 iam_role_arn: _builtins.str):
        """
        :param _builtins.str iam_role_arn: The IAM role ARN to assume.
        """
        pulumi.set(__self__, "iam_role_arn", iam_role_arn)

    @_builtins.property
    @pulumi.getter(name="iamRoleArn")
    def iam_role_arn(self) -> _builtins.str:
        """
        The IAM role ARN to assume.
        """
        return pulumi.get(self, "iam_role_arn")


@pulumi.output_type
class GetAwsSecretManagerConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 assume_roles: Sequence['outputs.GetAwsSecretManagerConnectorCredentialAssumeRoleResult'],
                 inherit_from_delegate: _builtins.bool,
                 manuals: Sequence['outputs.GetAwsSecretManagerConnectorCredentialManualResult'],
                 oidc_authentications: Sequence['outputs.GetAwsSecretManagerConnectorCredentialOidcAuthenticationResult']):
        """
        :param Sequence['GetAwsSecretManagerConnectorCredentialAssumeRoleArgs'] assume_roles: Connect using STS assume role.
        :param _builtins.bool inherit_from_delegate: Inherit the credentials from from the delegate.
        :param Sequence['GetAwsSecretManagerConnectorCredentialManualArgs'] manuals: Specify the AWS key and secret used for authenticating.
        :param Sequence['GetAwsSecretManagerConnectorCredentialOidcAuthenticationArgs'] oidc_authentications: Authentication using OIDC.
        """
        pulumi.set(__self__, "assume_roles", assume_roles)
        pulumi.set(__self__, "inherit_from_delegate", inherit_from_delegate)
        pulumi.set(__self__, "manuals", manuals)
        pulumi.set(__self__, "oidc_authentications", oidc_authentications)

    @_builtins.property
    @pulumi.getter(name="assumeRoles")
    def assume_roles(self) -> Sequence['outputs.GetAwsSecretManagerConnectorCredentialAssumeRoleResult']:
        """
        Connect using STS assume role.
        """
        return pulumi.get(self, "assume_roles")

    @_builtins.property
    @pulumi.getter(name="inheritFromDelegate")
    def inherit_from_delegate(self) -> _builtins.bool:
        """
        Inherit the credentials from from the delegate.
        """
        return pulumi.get(self, "inherit_from_delegate")

    @_builtins.property
    @pulumi.getter
    def manuals(self) -> Sequence['outputs.GetAwsSecretManagerConnectorCredentialManualResult']:
        """
        Specify the AWS key and secret used for authenticating.
        """
        return pulumi.get(self, "manuals")

    @_builtins.property
    @pulumi.getter(name="oidcAuthentications")
    def oidc_authentications(self) -> Sequence['outputs.GetAwsSecretManagerConnectorCredentialOidcAuthenticationResult']:
        """
        Authentication using OIDC.
        """
        return pulumi.get(self, "oidc_authentications")


@pulumi.output_type
class GetAwsSecretManagerConnectorCredentialAssumeRoleResult(dict):
    def __init__(__self__, *,
                 duration: _builtins.int,
                 external_id: _builtins.str,
                 role_arn: _builtins.str):
        """
        :param _builtins.int duration: The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the client request body. The minimum value is 1 hour.
        :param _builtins.str external_id: If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        :param _builtins.str role_arn: The ARN of the role to assume.
        """
        pulumi.set(__self__, "duration", duration)
        pulumi.set(__self__, "external_id", external_id)
        pulumi.set(__self__, "role_arn", role_arn)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> _builtins.int:
        """
        The duration, in seconds, of the role session. The value can range from 900 seconds (15 minutes) to 3600 seconds (1 hour). By default, the value is set to 3600 seconds. An expiration can also be specified in the client request body. The minimum value is 1 hour.
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter(name="externalId")
    def external_id(self) -> _builtins.str:
        """
        If the administrator of the account to which the role belongs provided you with an external ID, then enter that value.
        """
        return pulumi.get(self, "external_id")

    @_builtins.property
    @pulumi.getter(name="roleArn")
    def role_arn(self) -> _builtins.str:
        """
        The ARN of the role to assume.
        """
        return pulumi.get(self, "role_arn")


@pulumi.output_type
class GetAwsSecretManagerConnectorCredentialManualResult(dict):
    def __init__(__self__, *,
                 access_key_ref: _builtins.str,
                 secret_key_ref: _builtins.str):
        """
        :param _builtins.str access_key_ref: The reference to the Harness secret containing the AWS access key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str secret_key_ref: The reference to the Harness secret containing the AWS secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "access_key_ref", access_key_ref)
        pulumi.set(__self__, "secret_key_ref", secret_key_ref)

    @_builtins.property
    @pulumi.getter(name="accessKeyRef")
    def access_key_ref(self) -> _builtins.str:
        """
        The reference to the Harness secret containing the AWS access key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "access_key_ref")

    @_builtins.property
    @pulumi.getter(name="secretKeyRef")
    def secret_key_ref(self) -> _builtins.str:
        """
        The reference to the Harness secret containing the AWS secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "secret_key_ref")


@pulumi.output_type
class GetAwsSecretManagerConnectorCredentialOidcAuthenticationResult(dict):
    def __init__(__self__, *,
                 iam_role_arn: _builtins.str):
        """
        :param _builtins.str iam_role_arn: The IAM role ARN to assume.
        """
        pulumi.set(__self__, "iam_role_arn", iam_role_arn)

    @_builtins.property
    @pulumi.getter(name="iamRoleArn")
    def iam_role_arn(self) -> _builtins.str:
        """
        The IAM role ARN to assume.
        """
        return pulumi.get(self, "iam_role_arn")


@pulumi.output_type
class GetAzureCloudCostConnectorBillingExportSpec2Result(dict):
    def __init__(__self__, *,
                 billing_type: _builtins.str,
                 container_name: _builtins.str,
                 directory_name: _builtins.str,
                 report_name: _builtins.str,
                 storage_account_name: _builtins.str,
                 subscription_id: _builtins.str):
        """
        :param _builtins.str billing_type: Billing type.
        :param _builtins.str container_name: Name of the container.
        :param _builtins.str directory_name: Name of the directory.
        :param _builtins.str report_name: Name of the report.
        :param _builtins.str storage_account_name: Name of the storage account.
        :param _builtins.str subscription_id: Subsription Id.
        """
        pulumi.set(__self__, "billing_type", billing_type)
        pulumi.set(__self__, "container_name", container_name)
        pulumi.set(__self__, "directory_name", directory_name)
        pulumi.set(__self__, "report_name", report_name)
        pulumi.set(__self__, "storage_account_name", storage_account_name)
        pulumi.set(__self__, "subscription_id", subscription_id)

    @_builtins.property
    @pulumi.getter(name="billingType")
    def billing_type(self) -> _builtins.str:
        """
        Billing type.
        """
        return pulumi.get(self, "billing_type")

    @_builtins.property
    @pulumi.getter(name="containerName")
    def container_name(self) -> _builtins.str:
        """
        Name of the container.
        """
        return pulumi.get(self, "container_name")

    @_builtins.property
    @pulumi.getter(name="directoryName")
    def directory_name(self) -> _builtins.str:
        """
        Name of the directory.
        """
        return pulumi.get(self, "directory_name")

    @_builtins.property
    @pulumi.getter(name="reportName")
    def report_name(self) -> _builtins.str:
        """
        Name of the report.
        """
        return pulumi.get(self, "report_name")

    @_builtins.property
    @pulumi.getter(name="storageAccountName")
    def storage_account_name(self) -> _builtins.str:
        """
        Name of the storage account.
        """
        return pulumi.get(self, "storage_account_name")

    @_builtins.property
    @pulumi.getter(name="subscriptionId")
    def subscription_id(self) -> _builtins.str:
        """
        Subsription Id.
        """
        return pulumi.get(self, "subscription_id")


@pulumi.output_type
class GetAzureCloudCostConnectorBillingExportSpecResult(dict):
    def __init__(__self__, *,
                 billing_type: _builtins.str,
                 container_name: _builtins.str,
                 directory_name: _builtins.str,
                 report_name: _builtins.str,
                 storage_account_name: _builtins.str,
                 subscription_id: _builtins.str):
        """
        :param _builtins.str billing_type: Billing type.
        :param _builtins.str container_name: Name of the container.
        :param _builtins.str directory_name: Name of the directory.
        :param _builtins.str report_name: Name of the report.
        :param _builtins.str storage_account_name: Name of the storage account.
        :param _builtins.str subscription_id: Subsription Id.
        """
        pulumi.set(__self__, "billing_type", billing_type)
        pulumi.set(__self__, "container_name", container_name)
        pulumi.set(__self__, "directory_name", directory_name)
        pulumi.set(__self__, "report_name", report_name)
        pulumi.set(__self__, "storage_account_name", storage_account_name)
        pulumi.set(__self__, "subscription_id", subscription_id)

    @_builtins.property
    @pulumi.getter(name="billingType")
    def billing_type(self) -> _builtins.str:
        """
        Billing type.
        """
        return pulumi.get(self, "billing_type")

    @_builtins.property
    @pulumi.getter(name="containerName")
    def container_name(self) -> _builtins.str:
        """
        Name of the container.
        """
        return pulumi.get(self, "container_name")

    @_builtins.property
    @pulumi.getter(name="directoryName")
    def directory_name(self) -> _builtins.str:
        """
        Name of the directory.
        """
        return pulumi.get(self, "directory_name")

    @_builtins.property
    @pulumi.getter(name="reportName")
    def report_name(self) -> _builtins.str:
        """
        Name of the report.
        """
        return pulumi.get(self, "report_name")

    @_builtins.property
    @pulumi.getter(name="storageAccountName")
    def storage_account_name(self) -> _builtins.str:
        """
        Name of the storage account.
        """
        return pulumi.get(self, "storage_account_name")

    @_builtins.property
    @pulumi.getter(name="subscriptionId")
    def subscription_id(self) -> _builtins.str:
        """
        Subsription Id.
        """
        return pulumi.get(self, "subscription_id")


@pulumi.output_type
class GetAzureCloudProviderConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 azure_inherit_from_delegate_details: Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailResult'],
                 azure_manual_details: Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureManualDetailResult'],
                 azure_oidc_specs: Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureOidcSpecResult'],
                 type: _builtins.str):
        """
        :param Sequence['GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailArgs'] azure_inherit_from_delegate_details: Authenticate to Azure Cloud Provider using details inheriting from delegate.
        :param Sequence['GetAzureCloudProviderConnectorCredentialAzureManualDetailArgs'] azure_manual_details: Authenticate to Azure Cloud Provider using manual details.
        :param Sequence['GetAzureCloudProviderConnectorCredentialAzureOidcSpecArgs'] azure_oidc_specs: Authenticate to Azure Cloud Provider using OIDC Authentication.
        :param _builtins.str type: Type can be InheritFromDelegate, ManualConfig or OidcAuthentication.
        """
        pulumi.set(__self__, "azure_inherit_from_delegate_details", azure_inherit_from_delegate_details)
        pulumi.set(__self__, "azure_manual_details", azure_manual_details)
        pulumi.set(__self__, "azure_oidc_specs", azure_oidc_specs)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="azureInheritFromDelegateDetails")
    def azure_inherit_from_delegate_details(self) -> Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailResult']:
        """
        Authenticate to Azure Cloud Provider using details inheriting from delegate.
        """
        return pulumi.get(self, "azure_inherit_from_delegate_details")

    @_builtins.property
    @pulumi.getter(name="azureManualDetails")
    def azure_manual_details(self) -> Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureManualDetailResult']:
        """
        Authenticate to Azure Cloud Provider using manual details.
        """
        return pulumi.get(self, "azure_manual_details")

    @_builtins.property
    @pulumi.getter(name="azureOidcSpecs")
    def azure_oidc_specs(self) -> Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureOidcSpecResult']:
        """
        Authenticate to Azure Cloud Provider using OIDC Authentication.
        """
        return pulumi.get(self, "azure_oidc_specs")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type can be InheritFromDelegate, ManualConfig or OidcAuthentication.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailResult(dict):
    def __init__(__self__, *,
                 auths: Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailAuthResult']):
        """
        :param Sequence['GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailAuthArgs'] auths: Auth to authenticate to Azure Cloud Provider using details inheriting from delegate.
        """
        pulumi.set(__self__, "auths", auths)

    @_builtins.property
    @pulumi.getter
    def auths(self) -> Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailAuthResult']:
        """
        Auth to authenticate to Azure Cloud Provider using details inheriting from delegate.
        """
        return pulumi.get(self, "auths")


@pulumi.output_type
class GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailAuthResult(dict):
    def __init__(__self__, *,
                 azure_msi_auth_uas: Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailAuthAzureMsiAuthUaResult'],
                 type: _builtins.str):
        """
        :param Sequence['GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailAuthAzureMsiAuthUaArgs'] azure_msi_auth_uas: Azure UserAssigned MSI auth details.
        :param _builtins.str type: Type can either be SystemAssignedManagedIdentity or UserAssignedManagedIdentity.
        """
        pulumi.set(__self__, "azure_msi_auth_uas", azure_msi_auth_uas)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="azureMsiAuthUas")
    def azure_msi_auth_uas(self) -> Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailAuthAzureMsiAuthUaResult']:
        """
        Azure UserAssigned MSI auth details.
        """
        return pulumi.get(self, "azure_msi_auth_uas")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type can either be SystemAssignedManagedIdentity or UserAssignedManagedIdentity.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetAzureCloudProviderConnectorCredentialAzureInheritFromDelegateDetailAuthAzureMsiAuthUaResult(dict):
    def __init__(__self__, *,
                 client_id: _builtins.str):
        """
        :param _builtins.str client_id: Client Id of the ManagedIdentity resource.
        """
        pulumi.set(__self__, "client_id", client_id)

    @_builtins.property
    @pulumi.getter(name="clientId")
    def client_id(self) -> _builtins.str:
        """
        Client Id of the ManagedIdentity resource.
        """
        return pulumi.get(self, "client_id")


@pulumi.output_type
class GetAzureCloudProviderConnectorCredentialAzureManualDetailResult(dict):
    def __init__(__self__, *,
                 application_id: _builtins.str,
                 auths: Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthResult'],
                 tenant_id: _builtins.str):
        """
        :param _builtins.str application_id: Application ID of the Azure App.
        :param Sequence['GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthArgs'] auths: Contains Azure auth details.
        :param _builtins.str tenant_id: The Azure Active Directory (AAD) directory ID where you created your application.
        """
        pulumi.set(__self__, "application_id", application_id)
        pulumi.set(__self__, "auths", auths)
        pulumi.set(__self__, "tenant_id", tenant_id)

    @_builtins.property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> _builtins.str:
        """
        Application ID of the Azure App.
        """
        return pulumi.get(self, "application_id")

    @_builtins.property
    @pulumi.getter
    def auths(self) -> Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthResult']:
        """
        Contains Azure auth details.
        """
        return pulumi.get(self, "auths")

    @_builtins.property
    @pulumi.getter(name="tenantId")
    def tenant_id(self) -> _builtins.str:
        """
        The Azure Active Directory (AAD) directory ID where you created your application.
        """
        return pulumi.get(self, "tenant_id")


@pulumi.output_type
class GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthResult(dict):
    def __init__(__self__, *,
                 azure_client_key_certs: Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthAzureClientKeyCertResult'],
                 azure_client_secret_keys: Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthAzureClientSecretKeyResult'],
                 type: _builtins.str):
        """
        :param Sequence['GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthAzureClientKeyCertArgs'] azure_client_key_certs: Azure client key certificate details.
        :param Sequence['GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthAzureClientSecretKeyArgs'] azure_client_secret_keys: Azure Client Secret Key details.
        :param _builtins.str type: Type can either be Certificate or Secret.
        """
        pulumi.set(__self__, "azure_client_key_certs", azure_client_key_certs)
        pulumi.set(__self__, "azure_client_secret_keys", azure_client_secret_keys)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="azureClientKeyCerts")
    def azure_client_key_certs(self) -> Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthAzureClientKeyCertResult']:
        """
        Azure client key certificate details.
        """
        return pulumi.get(self, "azure_client_key_certs")

    @_builtins.property
    @pulumi.getter(name="azureClientSecretKeys")
    def azure_client_secret_keys(self) -> Sequence['outputs.GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthAzureClientSecretKeyResult']:
        """
        Azure Client Secret Key details.
        """
        return pulumi.get(self, "azure_client_secret_keys")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type can either be Certificate or Secret.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthAzureClientKeyCertResult(dict):
    def __init__(__self__, *,
                 certificate_ref: _builtins.str):
        """
        :param _builtins.str certificate_ref: Reference of the secret for the certificate.
        """
        pulumi.set(__self__, "certificate_ref", certificate_ref)

    @_builtins.property
    @pulumi.getter(name="certificateRef")
    def certificate_ref(self) -> _builtins.str:
        """
        Reference of the secret for the certificate.
        """
        return pulumi.get(self, "certificate_ref")


@pulumi.output_type
class GetAzureCloudProviderConnectorCredentialAzureManualDetailAuthAzureClientSecretKeyResult(dict):
    def __init__(__self__, *,
                 secret_ref: _builtins.str):
        """
        :param _builtins.str secret_ref: Reference of the secret for the secret key.
        """
        pulumi.set(__self__, "secret_ref", secret_ref)

    @_builtins.property
    @pulumi.getter(name="secretRef")
    def secret_ref(self) -> _builtins.str:
        """
        Reference of the secret for the secret key.
        """
        return pulumi.get(self, "secret_ref")


@pulumi.output_type
class GetAzureCloudProviderConnectorCredentialAzureOidcSpecResult(dict):
    def __init__(__self__, *,
                 application_id: _builtins.str,
                 audience: _builtins.str,
                 tenant_id: _builtins.str):
        """
        :param _builtins.str application_id: Application ID of the Azure App.
        :param _builtins.str audience: The Azure Audience.
        :param _builtins.str tenant_id: The Azure Active Directory (AAD) directory ID where you created your application.
        """
        pulumi.set(__self__, "application_id", application_id)
        pulumi.set(__self__, "audience", audience)
        pulumi.set(__self__, "tenant_id", tenant_id)

    @_builtins.property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> _builtins.str:
        """
        Application ID of the Azure App.
        """
        return pulumi.get(self, "application_id")

    @_builtins.property
    @pulumi.getter
    def audience(self) -> _builtins.str:
        """
        The Azure Audience.
        """
        return pulumi.get(self, "audience")

    @_builtins.property
    @pulumi.getter(name="tenantId")
    def tenant_id(self) -> _builtins.str:
        """
        The Azure Active Directory (AAD) directory ID where you created your application.
        """
        return pulumi.get(self, "tenant_id")


@pulumi.output_type
class GetBitbucketConnectorApiAuthenticationResult(dict):
    def __init__(__self__, *,
                 token_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str token_ref: Personal access token for interacting with the BitBucket api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: The username used for connecting to the api.
        :param _builtins.str username_ref: The name of the Harness secret containing the username. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Personal access token for interacting with the BitBucket api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        The username used for connecting to the api.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        The name of the Harness secret containing the username. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetBitbucketConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 https: Sequence['outputs.GetBitbucketConnectorCredentialHttpResult'],
                 sshes: Sequence['outputs.GetBitbucketConnectorCredentialSshResult']):
        """
        :param Sequence['GetBitbucketConnectorCredentialHttpArgs'] https: Authenticate using Username and password over http(s) for the connection.
        :param Sequence['GetBitbucketConnectorCredentialSshArgs'] sshes: Authenticate using SSH for the connection.
        """
        pulumi.set(__self__, "https", https)
        pulumi.set(__self__, "sshes", sshes)

    @_builtins.property
    @pulumi.getter
    def https(self) -> Sequence['outputs.GetBitbucketConnectorCredentialHttpResult']:
        """
        Authenticate using Username and password over http(s) for the connection.
        """
        return pulumi.get(self, "https")

    @_builtins.property
    @pulumi.getter
    def sshes(self) -> Sequence['outputs.GetBitbucketConnectorCredentialSshResult']:
        """
        Authenticate using SSH for the connection.
        """
        return pulumi.get(self, "sshes")


@pulumi.output_type
class GetBitbucketConnectorCredentialHttpResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetBitbucketConnectorCredentialSshResult(dict):
    def __init__(__self__, *,
                 ssh_key_ref: _builtins.str):
        """
        :param _builtins.str ssh_key_ref: Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "ssh_key_ref", ssh_key_ref)

    @_builtins.property
    @pulumi.getter(name="sshKeyRef")
    def ssh_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ssh_key_ref")


@pulumi.output_type
class GetCcmFiltersFilterPropertyResult(dict):
    def __init__(__self__, *,
                 filter_type: _builtins.str,
                 tags: Sequence[_builtins.str]):
        """
        :param _builtins.str filter_type: Corresponding Entity of the filters.
        :param Sequence[_builtins.str] tags: Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        pulumi.set(__self__, "filter_type", filter_type)
        pulumi.set(__self__, "tags", tags)

    @_builtins.property
    @pulumi.getter(name="filterType")
    def filter_type(self) -> _builtins.str:
        """
        Corresponding Entity of the filters.
        """
        return pulumi.get(self, "filter_type")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Sequence[_builtins.str]:
        """
        Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        return pulumi.get(self, "tags")


@pulumi.output_type
class GetCentralNotificationChannelChannelResult(dict):
    def __init__(__self__, *,
                 headers: Sequence['outputs.GetCentralNotificationChannelChannelHeaderResult'],
                 api_key: Optional[_builtins.str] = None,
                 datadog_urls: Optional[Sequence[_builtins.str]] = None,
                 delegate_selectors: Optional[Sequence[_builtins.str]] = None,
                 email_ids: Optional[Sequence[_builtins.str]] = None,
                 execute_on_delegate: Optional[_builtins.bool] = None,
                 ms_team_keys: Optional[Sequence[_builtins.str]] = None,
                 pager_duty_integration_keys: Optional[Sequence[_builtins.str]] = None,
                 slack_webhook_urls: Optional[Sequence[_builtins.str]] = None,
                 user_groups: Optional[Sequence['outputs.GetCentralNotificationChannelChannelUserGroupResult']] = None,
                 webhook_urls: Optional[Sequence[_builtins.str]] = None):
        """
        :param Sequence['GetCentralNotificationChannelChannelHeaderArgs'] headers: Custom HTTP headers to include in webhook requests.
        :param _builtins.str api_key: API key for the webhook or integration.
        :param Sequence[_builtins.str] datadog_urls: List of Datadog webhook URLs.
        :param Sequence[_builtins.str] delegate_selectors: List of delegate selectors to use for sending notifications.
        :param Sequence[_builtins.str] email_ids: List of email addresses to notify.
        :param _builtins.bool execute_on_delegate: Whether to execute the notification logic on delegate.
        :param Sequence[_builtins.str] ms_team_keys: List of Microsoft Teams integration keys.
        :param Sequence[_builtins.str] pager_duty_integration_keys: List of PagerDuty integration keys.
        :param Sequence[_builtins.str] slack_webhook_urls: List of Slack webhook URLs to send notifications to.
        :param Sequence['GetCentralNotificationChannelChannelUserGroupArgs'] user_groups: List of user groups to notify.
        :param Sequence[_builtins.str] webhook_urls: List of generic webhook URLs.
        """
        pulumi.set(__self__, "headers", headers)
        if api_key is not None:
            pulumi.set(__self__, "api_key", api_key)
        if datadog_urls is not None:
            pulumi.set(__self__, "datadog_urls", datadog_urls)
        if delegate_selectors is not None:
            pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        if email_ids is not None:
            pulumi.set(__self__, "email_ids", email_ids)
        if execute_on_delegate is not None:
            pulumi.set(__self__, "execute_on_delegate", execute_on_delegate)
        if ms_team_keys is not None:
            pulumi.set(__self__, "ms_team_keys", ms_team_keys)
        if pager_duty_integration_keys is not None:
            pulumi.set(__self__, "pager_duty_integration_keys", pager_duty_integration_keys)
        if slack_webhook_urls is not None:
            pulumi.set(__self__, "slack_webhook_urls", slack_webhook_urls)
        if user_groups is not None:
            pulumi.set(__self__, "user_groups", user_groups)
        if webhook_urls is not None:
            pulumi.set(__self__, "webhook_urls", webhook_urls)

    @_builtins.property
    @pulumi.getter
    def headers(self) -> Sequence['outputs.GetCentralNotificationChannelChannelHeaderResult']:
        """
        Custom HTTP headers to include in webhook requests.
        """
        return pulumi.get(self, "headers")

    @_builtins.property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> Optional[_builtins.str]:
        """
        API key for the webhook or integration.
        """
        return pulumi.get(self, "api_key")

    @_builtins.property
    @pulumi.getter(name="datadogUrls")
    def datadog_urls(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Datadog webhook URLs.
        """
        return pulumi.get(self, "datadog_urls")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of delegate selectors to use for sending notifications.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter(name="emailIds")
    def email_ids(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of email addresses to notify.
        """
        return pulumi.get(self, "email_ids")

    @_builtins.property
    @pulumi.getter(name="executeOnDelegate")
    def execute_on_delegate(self) -> Optional[_builtins.bool]:
        """
        Whether to execute the notification logic on delegate.
        """
        return pulumi.get(self, "execute_on_delegate")

    @_builtins.property
    @pulumi.getter(name="msTeamKeys")
    def ms_team_keys(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Microsoft Teams integration keys.
        """
        return pulumi.get(self, "ms_team_keys")

    @_builtins.property
    @pulumi.getter(name="pagerDutyIntegrationKeys")
    def pager_duty_integration_keys(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of PagerDuty integration keys.
        """
        return pulumi.get(self, "pager_duty_integration_keys")

    @_builtins.property
    @pulumi.getter(name="slackWebhookUrls")
    def slack_webhook_urls(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of Slack webhook URLs to send notifications to.
        """
        return pulumi.get(self, "slack_webhook_urls")

    @_builtins.property
    @pulumi.getter(name="userGroups")
    def user_groups(self) -> Optional[Sequence['outputs.GetCentralNotificationChannelChannelUserGroupResult']]:
        """
        List of user groups to notify.
        """
        return pulumi.get(self, "user_groups")

    @_builtins.property
    @pulumi.getter(name="webhookUrls")
    def webhook_urls(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of generic webhook URLs.
        """
        return pulumi.get(self, "webhook_urls")


@pulumi.output_type
class GetCentralNotificationChannelChannelHeaderResult(dict):
    def __init__(__self__, *,
                 key: _builtins.str,
                 value: _builtins.str):
        """
        :param _builtins.str key: Header key name.
        :param _builtins.str value: Header value.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Header key name.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        Header value.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetCentralNotificationChannelChannelUserGroupResult(dict):
    def __init__(__self__, *,
                 identifier: Optional[_builtins.str] = None):
        """
        :param _builtins.str identifier: Identifier of the user group.
        """
        if identifier is not None:
            pulumi.set(__self__, "identifier", identifier)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> Optional[_builtins.str]:
        """
        Identifier of the user group.
        """
        return pulumi.get(self, "identifier")


@pulumi.output_type
class GetCentralNotificationRuleCustomNotificationTemplateRefResult(dict):
    def __init__(__self__, *,
                 template_ref: _builtins.str,
                 version_label: _builtins.str,
                 variables: Optional[Sequence['outputs.GetCentralNotificationRuleCustomNotificationTemplateRefVariableResult']] = None):
        pulumi.set(__self__, "template_ref", template_ref)
        pulumi.set(__self__, "version_label", version_label)
        if variables is not None:
            pulumi.set(__self__, "variables", variables)

    @_builtins.property
    @pulumi.getter(name="templateRef")
    def template_ref(self) -> _builtins.str:
        return pulumi.get(self, "template_ref")

    @_builtins.property
    @pulumi.getter(name="versionLabel")
    def version_label(self) -> _builtins.str:
        return pulumi.get(self, "version_label")

    @_builtins.property
    @pulumi.getter
    def variables(self) -> Optional[Sequence['outputs.GetCentralNotificationRuleCustomNotificationTemplateRefVariableResult']]:
        return pulumi.get(self, "variables")


@pulumi.output_type
class GetCentralNotificationRuleCustomNotificationTemplateRefVariableResult(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 value: _builtins.str,
                 type: Optional[_builtins.str] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "type")


@pulumi.output_type
class GetCentralNotificationRuleNotificationConditionResult(dict):
    def __init__(__self__, *,
                 condition_name: _builtins.str,
                 notification_event_configs: Sequence['outputs.GetCentralNotificationRuleNotificationConditionNotificationEventConfigResult']):
        pulumi.set(__self__, "condition_name", condition_name)
        pulumi.set(__self__, "notification_event_configs", notification_event_configs)

    @_builtins.property
    @pulumi.getter(name="conditionName")
    def condition_name(self) -> _builtins.str:
        return pulumi.get(self, "condition_name")

    @_builtins.property
    @pulumi.getter(name="notificationEventConfigs")
    def notification_event_configs(self) -> Sequence['outputs.GetCentralNotificationRuleNotificationConditionNotificationEventConfigResult']:
        return pulumi.get(self, "notification_event_configs")


@pulumi.output_type
class GetCentralNotificationRuleNotificationConditionNotificationEventConfigResult(dict):
    def __init__(__self__, *,
                 notification_entity: _builtins.str,
                 notification_event: _builtins.str,
                 entity_identifiers: Optional[Sequence[_builtins.str]] = None,
                 notification_event_data: Optional[Mapping[str, _builtins.str]] = None):
        pulumi.set(__self__, "notification_entity", notification_entity)
        pulumi.set(__self__, "notification_event", notification_event)
        if entity_identifiers is not None:
            pulumi.set(__self__, "entity_identifiers", entity_identifiers)
        if notification_event_data is not None:
            pulumi.set(__self__, "notification_event_data", notification_event_data)

    @_builtins.property
    @pulumi.getter(name="notificationEntity")
    def notification_entity(self) -> _builtins.str:
        return pulumi.get(self, "notification_entity")

    @_builtins.property
    @pulumi.getter(name="notificationEvent")
    def notification_event(self) -> _builtins.str:
        return pulumi.get(self, "notification_event")

    @_builtins.property
    @pulumi.getter(name="entityIdentifiers")
    def entity_identifiers(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "entity_identifiers")

    @_builtins.property
    @pulumi.getter(name="notificationEventData")
    def notification_event_data(self) -> Optional[Mapping[str, _builtins.str]]:
        return pulumi.get(self, "notification_event_data")


@pulumi.output_type
class GetConnectorAzureRepoApiAuthenticationResult(dict):
    def __init__(__self__, *,
                 token_ref: _builtins.str):
        """
        :param _builtins.str token_ref: Personal access token for interacting with the azure repo api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Personal access token for interacting with the azure repo api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GetConnectorAzureRepoCredentialResult(dict):
    def __init__(__self__, *,
                 https: Sequence['outputs.GetConnectorAzureRepoCredentialHttpResult'],
                 sshes: Sequence['outputs.GetConnectorAzureRepoCredentialSshResult']):
        """
        :param Sequence['GetConnectorAzureRepoCredentialHttpArgs'] https: Authenticate using Username and password over http(s) for the connection.
        :param Sequence['GetConnectorAzureRepoCredentialSshArgs'] sshes: Authenticate using SSH for the connection.
        """
        pulumi.set(__self__, "https", https)
        pulumi.set(__self__, "sshes", sshes)

    @_builtins.property
    @pulumi.getter
    def https(self) -> Sequence['outputs.GetConnectorAzureRepoCredentialHttpResult']:
        """
        Authenticate using Username and password over http(s) for the connection.
        """
        return pulumi.get(self, "https")

    @_builtins.property
    @pulumi.getter
    def sshes(self) -> Sequence['outputs.GetConnectorAzureRepoCredentialSshResult']:
        """
        Authenticate using SSH for the connection.
        """
        return pulumi.get(self, "sshes")


@pulumi.output_type
class GetConnectorAzureRepoCredentialHttpResult(dict):
    def __init__(__self__, *,
                 token_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str token_ref: Reference to a secret containing the personal access to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the personal access to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetConnectorAzureRepoCredentialSshResult(dict):
    def __init__(__self__, *,
                 ssh_key_ref: _builtins.str):
        """
        :param _builtins.str ssh_key_ref: Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "ssh_key_ref", ssh_key_ref)

    @_builtins.property
    @pulumi.getter(name="sshKeyRef")
    def ssh_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ssh_key_ref")


@pulumi.output_type
class GetConnectorCustomSecretManagerTemplateInputResult(dict):
    def __init__(__self__, *,
                 environment_variables: Sequence['outputs.GetConnectorCustomSecretManagerTemplateInputEnvironmentVariableResult']):
        pulumi.set(__self__, "environment_variables", environment_variables)

    @_builtins.property
    @pulumi.getter(name="environmentVariables")
    def environment_variables(self) -> Sequence['outputs.GetConnectorCustomSecretManagerTemplateInputEnvironmentVariableResult']:
        return pulumi.get(self, "environment_variables")


@pulumi.output_type
class GetConnectorCustomSecretManagerTemplateInputEnvironmentVariableResult(dict):
    def __init__(__self__, *,
                 default: _builtins.bool,
                 name: _builtins.str,
                 type: _builtins.str,
                 value: _builtins.str):
        pulumi.set(__self__, "default", default)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def default(self) -> _builtins.bool:
        return pulumi.get(self, "default")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        return pulumi.get(self, "value")


@pulumi.output_type
class GetConnectorCustomhealthsourceHeaderResult(dict):
    def __init__(__self__, *,
                 encrypted_value_ref: _builtins.str,
                 key: _builtins.str,
                 value: _builtins.str,
                 value_encrypted: _builtins.bool):
        """
        :param _builtins.str encrypted_value_ref: Reference to the Harness secret containing the encrypted value. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str key: Key.
        :param _builtins.str value: Value.
        :param _builtins.bool value_encrypted: Encrypted value.
        """
        pulumi.set(__self__, "encrypted_value_ref", encrypted_value_ref)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "value_encrypted", value_encrypted)

    @_builtins.property
    @pulumi.getter(name="encryptedValueRef")
    def encrypted_value_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the encrypted value. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "encrypted_value_ref")

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        Value.
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueEncrypted")
    def value_encrypted(self) -> _builtins.bool:
        """
        Encrypted value.
        """
        return pulumi.get(self, "value_encrypted")


@pulumi.output_type
class GetConnectorCustomhealthsourceParamResult(dict):
    def __init__(__self__, *,
                 encrypted_value_ref: _builtins.str,
                 key: _builtins.str,
                 value: _builtins.str,
                 value_encrypted: _builtins.bool):
        """
        :param _builtins.str encrypted_value_ref: Reference to the Harness secret containing the encrypted value. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str key: Key.
        :param _builtins.str value: Value.
        :param _builtins.bool value_encrypted: Encrypted value.
        """
        pulumi.set(__self__, "encrypted_value_ref", encrypted_value_ref)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "value_encrypted", value_encrypted)

    @_builtins.property
    @pulumi.getter(name="encryptedValueRef")
    def encrypted_value_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the encrypted value. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "encrypted_value_ref")

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        Value.
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueEncrypted")
    def value_encrypted(self) -> _builtins.bool:
        """
        Encrypted value.
        """
        return pulumi.get(self, "value_encrypted")


@pulumi.output_type
class GetConnectorGcpKmsManualResult(dict):
    def __init__(__self__, *,
                 credentials: _builtins.str,
                 delegate_selectors: Sequence[_builtins.str]):
        """
        :param _builtins.str credentials: Reference to the Harness secret containing the secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param Sequence[_builtins.str] delegate_selectors: The delegates to connect with.
        """
        pulumi.set(__self__, "credentials", credentials)
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)

    @_builtins.property
    @pulumi.getter
    def credentials(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "credentials")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        The delegates to connect with.
        """
        return pulumi.get(self, "delegate_selectors")


@pulumi.output_type
class GetConnectorGcpKmsOidcAuthenticationResult(dict):
    def __init__(__self__, *,
                 delegate_selectors: Sequence[_builtins.str],
                 gcp_project_id: _builtins.str,
                 provider_id: _builtins.str,
                 service_account_email: _builtins.str,
                 workload_pool_id: _builtins.str):
        """
        :param Sequence[_builtins.str] delegate_selectors: The delegates to inherit the credentials from.
        :param _builtins.str gcp_project_id: The project number of the GCP project that is used to create the workload identity..
        :param _builtins.str provider_id: The OIDC provider ID value configured in GCP.
        :param _builtins.str service_account_email: The service account linked to workload identity pool while setting GCP workload identity provider.
        :param _builtins.str workload_pool_id: The workload pool ID value created in GCP.
        """
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        pulumi.set(__self__, "gcp_project_id", gcp_project_id)
        pulumi.set(__self__, "provider_id", provider_id)
        pulumi.set(__self__, "service_account_email", service_account_email)
        pulumi.set(__self__, "workload_pool_id", workload_pool_id)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        The delegates to inherit the credentials from.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter(name="gcpProjectId")
    def gcp_project_id(self) -> _builtins.str:
        """
        The project number of the GCP project that is used to create the workload identity..
        """
        return pulumi.get(self, "gcp_project_id")

    @_builtins.property
    @pulumi.getter(name="providerId")
    def provider_id(self) -> _builtins.str:
        """
        The OIDC provider ID value configured in GCP.
        """
        return pulumi.get(self, "provider_id")

    @_builtins.property
    @pulumi.getter(name="serviceAccountEmail")
    def service_account_email(self) -> _builtins.str:
        """
        The service account linked to workload identity pool while setting GCP workload identity provider.
        """
        return pulumi.get(self, "service_account_email")

    @_builtins.property
    @pulumi.getter(name="workloadPoolId")
    def workload_pool_id(self) -> _builtins.str:
        """
        The workload pool ID value created in GCP.
        """
        return pulumi.get(self, "workload_pool_id")


@pulumi.output_type
class GetConnectorJdbcCredentialResult(dict):
    def __init__(__self__, *,
                 auth_type: _builtins.str,
                 password_ref: _builtins.str,
                 service_accounts: Sequence['outputs.GetConnectorJdbcCredentialServiceAccountResult'],
                 username: _builtins.str,
                 username_passwords: Sequence['outputs.GetConnectorJdbcCredentialUsernamePasswordResult'],
                 username_ref: _builtins.str):
        """
        :param _builtins.str auth_type: Authentication types for JDBC connector
        :param _builtins.str password_ref: The reference to the Harness secret containing the password to use for the database server. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param Sequence['GetConnectorJdbcCredentialServiceAccountArgs'] service_accounts: Authenticate using service account.
        :param _builtins.str username: The username to use for the database server.
        :param Sequence['GetConnectorJdbcCredentialUsernamePasswordArgs'] username_passwords: Authenticate using username password.
        :param _builtins.str username_ref: The reference to the Harness secret containing the username to use for the database server. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "auth_type", auth_type)
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "service_accounts", service_accounts)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_passwords", username_passwords)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> _builtins.str:
        """
        Authentication types for JDBC connector
        """
        return pulumi.get(self, "auth_type")

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        The reference to the Harness secret containing the password to use for the database server. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter(name="serviceAccounts")
    def service_accounts(self) -> Sequence['outputs.GetConnectorJdbcCredentialServiceAccountResult']:
        """
        Authenticate using service account.
        """
        return pulumi.get(self, "service_accounts")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        The username to use for the database server.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernamePasswords")
    def username_passwords(self) -> Sequence['outputs.GetConnectorJdbcCredentialUsernamePasswordResult']:
        """
        Authenticate using username password.
        """
        return pulumi.get(self, "username_passwords")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        The reference to the Harness secret containing the username to use for the database server. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetConnectorJdbcCredentialServiceAccountResult(dict):
    def __init__(__self__, *,
                 token_ref: _builtins.str):
        """
        :param _builtins.str token_ref: Reference to a secret containing the token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GetConnectorJdbcCredentialUsernamePasswordResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetConnectorPdcHostResult(dict):
    def __init__(__self__, *,
                 hostname: _builtins.str,
                 attributes: Optional[Mapping[str, _builtins.str]] = None):
        """
        :param _builtins.str hostname: hostname
        :param Mapping[str, _builtins.str] attributes: attributes for current host
        """
        pulumi.set(__self__, "hostname", hostname)
        if attributes is not None:
            pulumi.set(__self__, "attributes", attributes)

    @_builtins.property
    @pulumi.getter
    def hostname(self) -> _builtins.str:
        """
        hostname
        """
        return pulumi.get(self, "hostname")

    @_builtins.property
    @pulumi.getter
    def attributes(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        attributes for current host
        """
        return pulumi.get(self, "attributes")


@pulumi.output_type
class GetConnectorRancherBearerTokenResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 rancher_url: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to the secret containing the bearer token for the rancher cluster. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str rancher_url: The URL of the Rancher cluster.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "rancher_url", rancher_url)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the bearer token for the rancher cluster. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter(name="rancherUrl")
    def rancher_url(self) -> _builtins.str:
        """
        The URL of the Rancher cluster.
        """
        return pulumi.get(self, "rancher_url")


@pulumi.output_type
class GetDbSchemaChangelogScriptResult(dict):
    def __init__(__self__, *,
                 command: _builtins.str,
                 image: _builtins.str,
                 location: _builtins.str,
                 shell: _builtins.str,
                 toml: Optional[_builtins.str] = None):
        """
        :param _builtins.str command: Script to clone changeSets
        :param _builtins.str image: The fully-qualified name (FQN) of the image
        :param _builtins.str location: Path to changeLog file
        :param _builtins.str shell: Type of the shell. For example Sh or Bash
        :param _builtins.str toml: [Optional] For flyway migration type only
        """
        pulumi.set(__self__, "command", command)
        pulumi.set(__self__, "image", image)
        pulumi.set(__self__, "location", location)
        pulumi.set(__self__, "shell", shell)
        if toml is not None:
            pulumi.set(__self__, "toml", toml)

    @_builtins.property
    @pulumi.getter
    def command(self) -> _builtins.str:
        """
        Script to clone changeSets
        """
        return pulumi.get(self, "command")

    @_builtins.property
    @pulumi.getter
    def image(self) -> _builtins.str:
        """
        The fully-qualified name (FQN) of the image
        """
        return pulumi.get(self, "image")

    @_builtins.property
    @pulumi.getter
    def location(self) -> _builtins.str:
        """
        Path to changeLog file
        """
        return pulumi.get(self, "location")

    @_builtins.property
    @pulumi.getter
    def shell(self) -> _builtins.str:
        """
        Type of the shell. For example Sh or Bash
        """
        return pulumi.get(self, "shell")

    @_builtins.property
    @pulumi.getter
    def toml(self) -> Optional[_builtins.str]:
        """
        [Optional] For flyway migration type only
        """
        return pulumi.get(self, "toml")


@pulumi.output_type
class GetDbSchemaSchemaSourceResult(dict):
    def __init__(__self__, *,
                 archive_path: _builtins.str,
                 connector: _builtins.str,
                 location: _builtins.str,
                 repo: _builtins.str,
                 toml: Optional[_builtins.str] = None):
        """
        :param _builtins.str archive_path: If connector type is artifactory, path to the archive file which contains the changeLog
        :param _builtins.str connector: Connector to repository at which to find details about the database schema
        :param _builtins.str location: The path within the specified repository at which to find details about the database schema
        :param _builtins.str repo: If connector url is of account, which repository to connect to using the connector
        :param _builtins.str toml: [Optional] For flyway migration type only
        """
        pulumi.set(__self__, "archive_path", archive_path)
        pulumi.set(__self__, "connector", connector)
        pulumi.set(__self__, "location", location)
        pulumi.set(__self__, "repo", repo)
        if toml is not None:
            pulumi.set(__self__, "toml", toml)

    @_builtins.property
    @pulumi.getter(name="archivePath")
    def archive_path(self) -> _builtins.str:
        """
        If connector type is artifactory, path to the archive file which contains the changeLog
        """
        return pulumi.get(self, "archive_path")

    @_builtins.property
    @pulumi.getter
    def connector(self) -> _builtins.str:
        """
        Connector to repository at which to find details about the database schema
        """
        return pulumi.get(self, "connector")

    @_builtins.property
    @pulumi.getter
    def location(self) -> _builtins.str:
        """
        The path within the specified repository at which to find details about the database schema
        """
        return pulumi.get(self, "location")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        If connector url is of account, which repository to connect to using the connector
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def toml(self) -> Optional[_builtins.str]:
        """
        [Optional] For flyway migration type only
        """
        return pulumi.get(self, "toml")


@pulumi.output_type
class GetDefaultNotificationTemplateSetEventTemplateConfigurationSetResult(dict):
    def __init__(__self__, *,
                 notification_events: Sequence[_builtins.str],
                 template: 'outputs.GetDefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateResult'):
        """
        :param Sequence[_builtins.str] notification_events: List of notification events like PIPELINE_START
        :param 'GetDefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateArgs' template: Template reference configuration
        """
        pulumi.set(__self__, "notification_events", notification_events)
        pulumi.set(__self__, "template", template)

    @_builtins.property
    @pulumi.getter(name="notificationEvents")
    def notification_events(self) -> Sequence[_builtins.str]:
        """
        List of notification events like PIPELINE_START
        """
        return pulumi.get(self, "notification_events")

    @_builtins.property
    @pulumi.getter
    def template(self) -> 'outputs.GetDefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateResult':
        """
        Template reference configuration
        """
        return pulumi.get(self, "template")


@pulumi.output_type
class GetDefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateResult(dict):
    def __init__(__self__, *,
                 template_ref: _builtins.str,
                 version_label: _builtins.str,
                 variables: Optional[Sequence['outputs.GetDefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateVariableResult']] = None):
        """
        :param Sequence['GetDefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateVariableArgs'] variables: List of variables passed to the template
        """
        pulumi.set(__self__, "template_ref", template_ref)
        pulumi.set(__self__, "version_label", version_label)
        if variables is not None:
            pulumi.set(__self__, "variables", variables)

    @_builtins.property
    @pulumi.getter(name="templateRef")
    def template_ref(self) -> _builtins.str:
        return pulumi.get(self, "template_ref")

    @_builtins.property
    @pulumi.getter(name="versionLabel")
    def version_label(self) -> _builtins.str:
        return pulumi.get(self, "version_label")

    @_builtins.property
    @pulumi.getter
    def variables(self) -> Optional[Sequence['outputs.GetDefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateVariableResult']]:
        """
        List of variables passed to the template
        """
        return pulumi.get(self, "variables")


@pulumi.output_type
class GetDefaultNotificationTemplateSetEventTemplateConfigurationSetTemplateVariableResult(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 type: _builtins.str,
                 value: _builtins.str):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        return pulumi.get(self, "value")


@pulumi.output_type
class GetDockerConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 execute_on_delegate: _builtins.bool,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.bool execute_on_delegate: Execute on delegate or not.
        :param _builtins.str password_ref: The reference to the Harness secret containing the password to use for the docker registry. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: The username to use for the docker registry.
        :param _builtins.str username_ref: The reference to the Harness secret containing the username to use for the docker registry. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "execute_on_delegate", execute_on_delegate)
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="executeOnDelegate")
    def execute_on_delegate(self) -> _builtins.bool:
        """
        Execute on delegate or not.
        """
        return pulumi.get(self, "execute_on_delegate")

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        The reference to the Harness secret containing the password to use for the docker registry. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        The username to use for the docker registry.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        The reference to the Harness secret containing the username to use for the docker registry. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetElasticsearchConnectorApiTokenResult(dict):
    def __init__(__self__, *,
                 client_id: _builtins.str,
                 client_secret_ref: _builtins.str):
        """
        :param _builtins.str client_id: The client id used for connecting to ElasticSearch.
        :param _builtins.str client_secret_ref: Reference to the Harness secret containing the ElasticSearch client secret. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "client_id", client_id)
        pulumi.set(__self__, "client_secret_ref", client_secret_ref)

    @_builtins.property
    @pulumi.getter(name="clientId")
    def client_id(self) -> _builtins.str:
        """
        The client id used for connecting to ElasticSearch.
        """
        return pulumi.get(self, "client_id")

    @_builtins.property
    @pulumi.getter(name="clientSecretRef")
    def client_secret_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the ElasticSearch client secret. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_secret_ref")


@pulumi.output_type
class GetElasticsearchConnectorUsernamePasswordResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GetEnvironmentClustersMappingClusterResult(dict):
    def __init__(__self__, *,
                 agent_identifier: Optional[_builtins.str] = None,
                 identifier: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 scope: Optional[_builtins.str] = None):
        """
        :param _builtins.str agent_identifier: agent identifier of the cluster (include scope prefix)
        :param _builtins.str identifier: identifier of the cluster
        :param _builtins.str name: name of the cluster
        :param _builtins.str scope: scope at which the cluster exists in harness gitops, one of "ACCOUNT", "ORGANIZATION", "PROJECT". Scope of environment to which clusters are being mapped must be lower or equal to in hierarchy than the scope of the cluster
        """
        if agent_identifier is not None:
            pulumi.set(__self__, "agent_identifier", agent_identifier)
        if identifier is not None:
            pulumi.set(__self__, "identifier", identifier)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if scope is not None:
            pulumi.set(__self__, "scope", scope)

    @_builtins.property
    @pulumi.getter(name="agentIdentifier")
    def agent_identifier(self) -> Optional[_builtins.str]:
        """
        agent identifier of the cluster (include scope prefix)
        """
        return pulumi.get(self, "agent_identifier")

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> Optional[_builtins.str]:
        """
        identifier of the cluster
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        name of the cluster
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def scope(self) -> Optional[_builtins.str]:
        """
        scope at which the cluster exists in harness gitops, one of "ACCOUNT", "ORGANIZATION", "PROJECT". Scope of environment to which clusters are being mapped must be lower or equal to in hierarchy than the scope of the cluster
        """
        return pulumi.get(self, "scope")


@pulumi.output_type
class GetEnvironmentGitDetailsResult(dict):
    def __init__(__self__, *,
                 branch: _builtins.str,
                 load_from_fallback_branch: _builtins.bool,
                 repo_name: _builtins.str):
        """
        :param _builtins.str branch: Name of the branch.
        :param _builtins.bool load_from_fallback_branch: Load environment yaml from fallback branch
        :param _builtins.str repo_name: Repo name of remote environment
        """
        pulumi.set(__self__, "branch", branch)
        pulumi.set(__self__, "load_from_fallback_branch", load_from_fallback_branch)
        pulumi.set(__self__, "repo_name", repo_name)

    @_builtins.property
    @pulumi.getter
    def branch(self) -> _builtins.str:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch")

    @_builtins.property
    @pulumi.getter(name="loadFromFallbackBranch")
    def load_from_fallback_branch(self) -> _builtins.bool:
        """
        Load environment yaml from fallback branch
        """
        return pulumi.get(self, "load_from_fallback_branch")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> _builtins.str:
        """
        Repo name of remote environment
        """
        return pulumi.get(self, "repo_name")


@pulumi.output_type
class GetEnvironmentListEnvironmentResult(dict):
    def __init__(__self__, *,
                 identifier: _builtins.str,
                 name: _builtins.str):
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")


@pulumi.output_type
class GetFileStoreFileCreatedByResult(dict):
    def __init__(__self__, *,
                 email: _builtins.str,
                 name: _builtins.str):
        """
        :param _builtins.str email: User email
        :param _builtins.str name: User name
        """
        pulumi.set(__self__, "email", email)
        pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def email(self) -> _builtins.str:
        """
        User email
        """
        return pulumi.get(self, "email")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        User name
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetFileStoreFileLastModifiedByResult(dict):
    def __init__(__self__, *,
                 email: _builtins.str,
                 name: _builtins.str):
        """
        :param _builtins.str email: User email
        :param _builtins.str name: User name
        """
        pulumi.set(__self__, "email", email)
        pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def email(self) -> _builtins.str:
        """
        User email
        """
        return pulumi.get(self, "email")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        User name
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetFileStoreFolderCreatedByResult(dict):
    def __init__(__self__, *,
                 email: _builtins.str,
                 name: _builtins.str):
        """
        :param _builtins.str email: User email
        :param _builtins.str name: User name
        """
        pulumi.set(__self__, "email", email)
        pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def email(self) -> _builtins.str:
        """
        User email
        """
        return pulumi.get(self, "email")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        User name
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetFileStoreFolderLastModifiedByResult(dict):
    def __init__(__self__, *,
                 email: _builtins.str,
                 name: _builtins.str):
        """
        :param _builtins.str email: User email
        :param _builtins.str name: User name
        """
        pulumi.set(__self__, "email", email)
        pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def email(self) -> _builtins.str:
        """
        User email
        """
        return pulumi.get(self, "email")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        User name
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetFiltersFilterPropertyResult(dict):
    def __init__(__self__, *,
                 filter_type: _builtins.str,
                 tags: Sequence[_builtins.str]):
        """
        :param _builtins.str filter_type: Corresponding Entity of the filter. Currently supported types are {Connector, DelegateProfile, Delegate, EnvironmentGroup, FileStore, Environment}.
        :param Sequence[_builtins.str] tags: Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        pulumi.set(__self__, "filter_type", filter_type)
        pulumi.set(__self__, "tags", tags)

    @_builtins.property
    @pulumi.getter(name="filterType")
    def filter_type(self) -> _builtins.str:
        """
        Corresponding Entity of the filter. Currently supported types are {Connector, DelegateProfile, Delegate, EnvironmentGroup, FileStore, Environment}.
        """
        return pulumi.get(self, "filter_type")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Sequence[_builtins.str]:
        """
        Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        return pulumi.get(self, "tags")


@pulumi.output_type
class GetGcpCloudCostConnectorBillingExportSpecResult(dict):
    def __init__(__self__, *,
                 data_set_id: _builtins.str,
                 table_id: _builtins.str):
        """
        :param _builtins.str data_set_id: Data Set Id.
        :param _builtins.str table_id: Table Id.
        """
        pulumi.set(__self__, "data_set_id", data_set_id)
        pulumi.set(__self__, "table_id", table_id)

    @_builtins.property
    @pulumi.getter(name="dataSetId")
    def data_set_id(self) -> _builtins.str:
        """
        Data Set Id.
        """
        return pulumi.get(self, "data_set_id")

    @_builtins.property
    @pulumi.getter(name="tableId")
    def table_id(self) -> _builtins.str:
        """
        Table Id.
        """
        return pulumi.get(self, "table_id")


@pulumi.output_type
class GetGcpConnectorInheritFromDelegateResult(dict):
    def __init__(__self__, *,
                 delegate_selectors: Sequence[_builtins.str]):
        """
        :param Sequence[_builtins.str] delegate_selectors: The delegates to inherit the credentials from.
        """
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        The delegates to inherit the credentials from.
        """
        return pulumi.get(self, "delegate_selectors")


@pulumi.output_type
class GetGcpConnectorManualResult(dict):
    def __init__(__self__, *,
                 delegate_selectors: Sequence[_builtins.str],
                 secret_key_ref: _builtins.str):
        """
        :param Sequence[_builtins.str] delegate_selectors: The delegates to connect with.
        :param _builtins.str secret_key_ref: Reference to the Harness secret containing the secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        pulumi.set(__self__, "secret_key_ref", secret_key_ref)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        The delegates to connect with.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter(name="secretKeyRef")
    def secret_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the secret key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "secret_key_ref")


@pulumi.output_type
class GetGcpConnectorOidcAuthenticationResult(dict):
    def __init__(__self__, *,
                 delegate_selectors: Sequence[_builtins.str],
                 gcp_project_id: _builtins.str,
                 provider_id: _builtins.str,
                 service_account_email: _builtins.str,
                 workload_pool_id: _builtins.str):
        """
        :param Sequence[_builtins.str] delegate_selectors: The delegates to inherit the credentials from.
        :param _builtins.str gcp_project_id: The project number of the GCP project that is used to create the workload identity..
        :param _builtins.str provider_id: The OIDC provider ID value configured in GCP.
        :param _builtins.str service_account_email: The service account linked to workload identity pool while setting GCP workload identity provider.
        :param _builtins.str workload_pool_id: The workload pool ID value created in GCP.
        """
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        pulumi.set(__self__, "gcp_project_id", gcp_project_id)
        pulumi.set(__self__, "provider_id", provider_id)
        pulumi.set(__self__, "service_account_email", service_account_email)
        pulumi.set(__self__, "workload_pool_id", workload_pool_id)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        The delegates to inherit the credentials from.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter(name="gcpProjectId")
    def gcp_project_id(self) -> _builtins.str:
        """
        The project number of the GCP project that is used to create the workload identity..
        """
        return pulumi.get(self, "gcp_project_id")

    @_builtins.property
    @pulumi.getter(name="providerId")
    def provider_id(self) -> _builtins.str:
        """
        The OIDC provider ID value configured in GCP.
        """
        return pulumi.get(self, "provider_id")

    @_builtins.property
    @pulumi.getter(name="serviceAccountEmail")
    def service_account_email(self) -> _builtins.str:
        """
        The service account linked to workload identity pool while setting GCP workload identity provider.
        """
        return pulumi.get(self, "service_account_email")

    @_builtins.property
    @pulumi.getter(name="workloadPoolId")
    def workload_pool_id(self) -> _builtins.str:
        """
        The workload pool ID value created in GCP.
        """
        return pulumi.get(self, "workload_pool_id")


@pulumi.output_type
class GetGcpProjectsProjectResult(dict):
    def __init__(__self__, *,
                 id: _builtins.str,
                 name: _builtins.str):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def id(self) -> _builtins.str:
        return pulumi.get(self, "id")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")


@pulumi.output_type
class GetGcpSecretManagerConnectorOidcAuthenticationResult(dict):
    def __init__(__self__, *,
                 gcp_project_id: _builtins.str,
                 provider_id: _builtins.str,
                 service_account_email: _builtins.str,
                 workload_pool_id: _builtins.str):
        """
        :param _builtins.str gcp_project_id: The project number of the GCP project that is used to create the workload identity..
        :param _builtins.str provider_id: The OIDC provider ID value configured in GCP.
        :param _builtins.str service_account_email: The service account linked to workload identity pool while setting GCP workload identity provider.
        :param _builtins.str workload_pool_id: The workload pool ID value created in GCP.
        """
        pulumi.set(__self__, "gcp_project_id", gcp_project_id)
        pulumi.set(__self__, "provider_id", provider_id)
        pulumi.set(__self__, "service_account_email", service_account_email)
        pulumi.set(__self__, "workload_pool_id", workload_pool_id)

    @_builtins.property
    @pulumi.getter(name="gcpProjectId")
    def gcp_project_id(self) -> _builtins.str:
        """
        The project number of the GCP project that is used to create the workload identity..
        """
        return pulumi.get(self, "gcp_project_id")

    @_builtins.property
    @pulumi.getter(name="providerId")
    def provider_id(self) -> _builtins.str:
        """
        The OIDC provider ID value configured in GCP.
        """
        return pulumi.get(self, "provider_id")

    @_builtins.property
    @pulumi.getter(name="serviceAccountEmail")
    def service_account_email(self) -> _builtins.str:
        """
        The service account linked to workload identity pool while setting GCP workload identity provider.
        """
        return pulumi.get(self, "service_account_email")

    @_builtins.property
    @pulumi.getter(name="workloadPoolId")
    def workload_pool_id(self) -> _builtins.str:
        """
        The workload pool ID value created in GCP.
        """
        return pulumi.get(self, "workload_pool_id")


@pulumi.output_type
class GetGitConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 https: Sequence['outputs.GetGitConnectorCredentialHttpResult'],
                 sshes: Sequence['outputs.GetGitConnectorCredentialSshResult']):
        """
        :param Sequence['GetGitConnectorCredentialHttpArgs'] https: Authenticate using Username and password over http(s) for the connection.
        :param Sequence['GetGitConnectorCredentialSshArgs'] sshes: Authenticate using SSH for the connection.
        """
        pulumi.set(__self__, "https", https)
        pulumi.set(__self__, "sshes", sshes)

    @_builtins.property
    @pulumi.getter
    def https(self) -> Sequence['outputs.GetGitConnectorCredentialHttpResult']:
        """
        Authenticate using Username and password over http(s) for the connection.
        """
        return pulumi.get(self, "https")

    @_builtins.property
    @pulumi.getter
    def sshes(self) -> Sequence['outputs.GetGitConnectorCredentialSshResult']:
        """
        Authenticate using SSH for the connection.
        """
        return pulumi.get(self, "sshes")


@pulumi.output_type
class GetGitConnectorCredentialHttpResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetGitConnectorCredentialSshResult(dict):
    def __init__(__self__, *,
                 ssh_key_ref: _builtins.str):
        """
        :param _builtins.str ssh_key_ref: Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "ssh_key_ref", ssh_key_ref)

    @_builtins.property
    @pulumi.getter(name="sshKeyRef")
    def ssh_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ssh_key_ref")


@pulumi.output_type
class GetGithubConnectorApiAuthenticationResult(dict):
    def __init__(__self__, *,
                 github_apps: Sequence['outputs.GetGithubConnectorApiAuthenticationGithubAppResult'],
                 token_ref: _builtins.str):
        """
        :param Sequence['GetGithubConnectorApiAuthenticationGithubAppArgs'] github_apps: Configuration for using the github app for interacting with the github api.
        :param _builtins.str token_ref: Personal access token for interacting with the github api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "github_apps", github_apps)
        pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter(name="githubApps")
    def github_apps(self) -> Sequence['outputs.GetGithubConnectorApiAuthenticationGithubAppResult']:
        """
        Configuration for using the github app for interacting with the github api.
        """
        return pulumi.get(self, "github_apps")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Personal access token for interacting with the github api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GetGithubConnectorApiAuthenticationGithubAppResult(dict):
    def __init__(__self__, *,
                 application_id: _builtins.str,
                 application_id_ref: _builtins.str,
                 installation_id: _builtins.str,
                 installation_id_ref: _builtins.str,
                 private_key_ref: _builtins.str):
        """
        :param _builtins.str application_id: Enter the GitHub App ID from the GitHub App General tab.
        :param _builtins.str application_id_ref: Reference to the secret containing application id To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str installation_id: Enter the Installation ID located in the URL of the installed GitHub App.
        :param _builtins.str installation_id_ref: Reference to the secret containing installation id. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str private_key_ref: Reference to the secret containing the private key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "application_id", application_id)
        pulumi.set(__self__, "application_id_ref", application_id_ref)
        pulumi.set(__self__, "installation_id", installation_id)
        pulumi.set(__self__, "installation_id_ref", installation_id_ref)
        pulumi.set(__self__, "private_key_ref", private_key_ref)

    @_builtins.property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> _builtins.str:
        """
        Enter the GitHub App ID from the GitHub App General tab.
        """
        return pulumi.get(self, "application_id")

    @_builtins.property
    @pulumi.getter(name="applicationIdRef")
    def application_id_ref(self) -> _builtins.str:
        """
        Reference to the secret containing application id To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "application_id_ref")

    @_builtins.property
    @pulumi.getter(name="installationId")
    def installation_id(self) -> _builtins.str:
        """
        Enter the Installation ID located in the URL of the installed GitHub App.
        """
        return pulumi.get(self, "installation_id")

    @_builtins.property
    @pulumi.getter(name="installationIdRef")
    def installation_id_ref(self) -> _builtins.str:
        """
        Reference to the secret containing installation id. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "installation_id_ref")

    @_builtins.property
    @pulumi.getter(name="privateKeyRef")
    def private_key_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the private key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "private_key_ref")


@pulumi.output_type
class GetGithubConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 https: Sequence['outputs.GetGithubConnectorCredentialHttpResult'],
                 sshes: Sequence['outputs.GetGithubConnectorCredentialSshResult']):
        """
        :param Sequence['GetGithubConnectorCredentialHttpArgs'] https: Authenticate using Username and password over http(s) for the connection.
        :param Sequence['GetGithubConnectorCredentialSshArgs'] sshes: Authenticate using SSH for the connection.
        """
        pulumi.set(__self__, "https", https)
        pulumi.set(__self__, "sshes", sshes)

    @_builtins.property
    @pulumi.getter
    def https(self) -> Sequence['outputs.GetGithubConnectorCredentialHttpResult']:
        """
        Authenticate using Username and password over http(s) for the connection.
        """
        return pulumi.get(self, "https")

    @_builtins.property
    @pulumi.getter
    def sshes(self) -> Sequence['outputs.GetGithubConnectorCredentialSshResult']:
        """
        Authenticate using SSH for the connection.
        """
        return pulumi.get(self, "sshes")


@pulumi.output_type
class GetGithubConnectorCredentialHttpResult(dict):
    def __init__(__self__, *,
                 anonymouses: Sequence['outputs.GetGithubConnectorCredentialHttpAnonymouseResult'],
                 github_apps: Sequence['outputs.GetGithubConnectorCredentialHttpGithubAppResult'],
                 token_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param Sequence['GetGithubConnectorCredentialHttpAnonymouseArgs'] anonymouses: Configuration for using the github http anonymous for interacting with the github api.
        :param Sequence['GetGithubConnectorCredentialHttpGithubAppArgs'] github_apps: Configuration for using the github app for interacting with the github api.
        :param _builtins.str token_ref: Reference to a secret containing the personal access to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "anonymouses", anonymouses)
        pulumi.set(__self__, "github_apps", github_apps)
        pulumi.set(__self__, "token_ref", token_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter
    def anonymouses(self) -> Sequence['outputs.GetGithubConnectorCredentialHttpAnonymouseResult']:
        """
        Configuration for using the github http anonymous for interacting with the github api.
        """
        return pulumi.get(self, "anonymouses")

    @_builtins.property
    @pulumi.getter(name="githubApps")
    def github_apps(self) -> Sequence['outputs.GetGithubConnectorCredentialHttpGithubAppResult']:
        """
        Configuration for using the github app for interacting with the github api.
        """
        return pulumi.get(self, "github_apps")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the personal access to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetGithubConnectorCredentialHttpAnonymouseResult(dict):
    def __init__(__self__):
        pass


@pulumi.output_type
class GetGithubConnectorCredentialHttpGithubAppResult(dict):
    def __init__(__self__, *,
                 application_id: _builtins.str,
                 application_id_ref: _builtins.str,
                 installation_id: _builtins.str,
                 installation_id_ref: _builtins.str,
                 private_key_ref: _builtins.str):
        """
        :param _builtins.str application_id: Enter the GitHub App ID from the GitHub App General tab.
        :param _builtins.str application_id_ref: Reference to the secret containing application id To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str installation_id: Enter the Installation ID located in the URL of the installed GitHub App.
        :param _builtins.str installation_id_ref: Reference to the secret containing installation id. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str private_key_ref: Reference to the secret containing the private key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "application_id", application_id)
        pulumi.set(__self__, "application_id_ref", application_id_ref)
        pulumi.set(__self__, "installation_id", installation_id)
        pulumi.set(__self__, "installation_id_ref", installation_id_ref)
        pulumi.set(__self__, "private_key_ref", private_key_ref)

    @_builtins.property
    @pulumi.getter(name="applicationId")
    def application_id(self) -> _builtins.str:
        """
        Enter the GitHub App ID from the GitHub App General tab.
        """
        return pulumi.get(self, "application_id")

    @_builtins.property
    @pulumi.getter(name="applicationIdRef")
    def application_id_ref(self) -> _builtins.str:
        """
        Reference to the secret containing application id To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "application_id_ref")

    @_builtins.property
    @pulumi.getter(name="installationId")
    def installation_id(self) -> _builtins.str:
        """
        Enter the Installation ID located in the URL of the installed GitHub App.
        """
        return pulumi.get(self, "installation_id")

    @_builtins.property
    @pulumi.getter(name="installationIdRef")
    def installation_id_ref(self) -> _builtins.str:
        """
        Reference to the secret containing installation id. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "installation_id_ref")

    @_builtins.property
    @pulumi.getter(name="privateKeyRef")
    def private_key_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the private key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "private_key_ref")


@pulumi.output_type
class GetGithubConnectorCredentialSshResult(dict):
    def __init__(__self__, *,
                 ssh_key_ref: _builtins.str):
        """
        :param _builtins.str ssh_key_ref: Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "ssh_key_ref", ssh_key_ref)

    @_builtins.property
    @pulumi.getter(name="sshKeyRef")
    def ssh_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ssh_key_ref")


@pulumi.output_type
class GetGitlabConnectorApiAuthenticationResult(dict):
    def __init__(__self__, *,
                 token_ref: _builtins.str):
        """
        :param _builtins.str token_ref: Personal access token for interacting with the gitlab api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Personal access token for interacting with the gitlab api. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GetGitlabConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 https: Sequence['outputs.GetGitlabConnectorCredentialHttpResult'],
                 sshes: Sequence['outputs.GetGitlabConnectorCredentialSshResult']):
        """
        :param Sequence['GetGitlabConnectorCredentialHttpArgs'] https: Authenticate using Username and password over http(s) for the connection.
        :param Sequence['GetGitlabConnectorCredentialSshArgs'] sshes: Authenticate using SSH for the connection.
        """
        pulumi.set(__self__, "https", https)
        pulumi.set(__self__, "sshes", sshes)

    @_builtins.property
    @pulumi.getter
    def https(self) -> Sequence['outputs.GetGitlabConnectorCredentialHttpResult']:
        """
        Authenticate using Username and password over http(s) for the connection.
        """
        return pulumi.get(self, "https")

    @_builtins.property
    @pulumi.getter
    def sshes(self) -> Sequence['outputs.GetGitlabConnectorCredentialSshResult']:
        """
        Authenticate using SSH for the connection.
        """
        return pulumi.get(self, "sshes")


@pulumi.output_type
class GetGitlabConnectorCredentialHttpResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 token_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str token_ref: Reference to a secret containing the personal access to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "token_ref", token_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the personal access to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetGitlabConnectorCredentialSshResult(dict):
    def __init__(__self__, *,
                 ssh_key_ref: _builtins.str):
        """
        :param _builtins.str ssh_key_ref: Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "ssh_key_ref", ssh_key_ref)

    @_builtins.property
    @pulumi.getter(name="sshKeyRef")
    def ssh_key_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the ssh key. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ssh_key_ref")


@pulumi.output_type
class GetGitopsAgentDeployYamlArgocdSettingsResult(dict):
    def __init__(__self__, *,
                 enable_helm_path_traversal: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool enable_helm_path_traversal: Controls the Environment variable HELM*SECRETS*VALUES*ALLOW*PATH_TRAVERSAL to allow or deny dot-dot-slash values file paths. Disabled by default for security reasons. This config is pushed as an env variable to the repo-server.
        """
        if enable_helm_path_traversal is not None:
            pulumi.set(__self__, "enable_helm_path_traversal", enable_helm_path_traversal)

    @_builtins.property
    @pulumi.getter(name="enableHelmPathTraversal")
    def enable_helm_path_traversal(self) -> Optional[_builtins.bool]:
        """
        Controls the Environment variable HELM*SECRETS*VALUES*ALLOW*PATH_TRAVERSAL to allow or deny dot-dot-slash values file paths. Disabled by default for security reasons. This config is pushed as an env variable to the repo-server.
        """
        return pulumi.get(self, "enable_helm_path_traversal")


@pulumi.output_type
class GetGitopsAgentDeployYamlProxyResult(dict):
    def __init__(__self__, *,
                 http: Optional[_builtins.str] = None,
                 https: Optional[_builtins.str] = None,
                 password: Optional[_builtins.str] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param _builtins.str http: HTTP proxy settings for the GitOps agent.
        :param _builtins.str https: HTTPS proxy settings for the GitOps agent.
        :param _builtins.str password: Password for the proxy.
        :param _builtins.str username: Username for the proxy.
        """
        if http is not None:
            pulumi.set(__self__, "http", http)
        if https is not None:
            pulumi.set(__self__, "https", https)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter
    def http(self) -> Optional[_builtins.str]:
        """
        HTTP proxy settings for the GitOps agent.
        """
        return pulumi.get(self, "http")

    @_builtins.property
    @pulumi.getter
    def https(self) -> Optional[_builtins.str]:
        """
        HTTPS proxy settings for the GitOps agent.
        """
        return pulumi.get(self, "https")

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[_builtins.str]:
        """
        Password for the proxy.
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for the proxy.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GetGitopsAgentMetadataResult(dict):
    def __init__(__self__, *,
                 high_availability: _builtins.bool,
                 namespace: _builtins.str,
                 is_namespaced: Optional[_builtins.bool] = None):
        """
        :param _builtins.bool high_availability: Indicates if the agent is deployed in HA mode.
        :param _builtins.str namespace: The kubernetes namespace where the agent should be installed.
        :param _builtins.bool is_namespaced: Indicates if the agent is namespaced.
        """
        pulumi.set(__self__, "high_availability", high_availability)
        pulumi.set(__self__, "namespace", namespace)
        if is_namespaced is not None:
            pulumi.set(__self__, "is_namespaced", is_namespaced)

    @_builtins.property
    @pulumi.getter(name="highAvailability")
    def high_availability(self) -> _builtins.bool:
        """
        Indicates if the agent is deployed in HA mode.
        """
        return pulumi.get(self, "high_availability")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> _builtins.str:
        """
        The kubernetes namespace where the agent should be installed.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter(name="isNamespaced")
    def is_namespaced(self) -> Optional[_builtins.bool]:
        """
        Indicates if the agent is namespaced.
        """
        return pulumi.get(self, "is_namespaced")


@pulumi.output_type
class GetGitopsAgentOperatorYamlProxyResult(dict):
    def __init__(__self__, *,
                 http: Optional[_builtins.str] = None,
                 https: Optional[_builtins.str] = None,
                 password: Optional[_builtins.str] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param _builtins.str http: HTTP proxy settings for the GitOps agent.
        :param _builtins.str https: HTTPS proxy settings for the GitOps agent.
        :param _builtins.str password: Password for the proxy.
        :param _builtins.str username: Username for the proxy.
        """
        if http is not None:
            pulumi.set(__self__, "http", http)
        if https is not None:
            pulumi.set(__self__, "https", https)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter
    def http(self) -> Optional[_builtins.str]:
        """
        HTTP proxy settings for the GitOps agent.
        """
        return pulumi.get(self, "http")

    @_builtins.property
    @pulumi.getter
    def https(self) -> Optional[_builtins.str]:
        """
        HTTPS proxy settings for the GitOps agent.
        """
        return pulumi.get(self, "https")

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[_builtins.str]:
        """
        Password for the proxy.
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username for the proxy.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GetGitopsApplicationsApplicationResult(dict):
    def __init__(__self__, *,
                 specs: Sequence['outputs.GetGitopsApplicationsApplicationSpecResult'],
                 metadatas: Optional[Sequence['outputs.GetGitopsApplicationsApplicationMetadataResult']] = None):
        """
        :param Sequence['GetGitopsApplicationsApplicationSpecArgs'] specs: Specifications of the GitOps application. This includes the repository URL, application definition, source, destination and sync policy.
        :param Sequence['GetGitopsApplicationsApplicationMetadataArgs'] metadatas: Metadata corresponding to the resources. This includes all the objects a user must create.
        """
        pulumi.set(__self__, "specs", specs)
        if metadatas is not None:
            pulumi.set(__self__, "metadatas", metadatas)

    @_builtins.property
    @pulumi.getter
    def specs(self) -> Sequence['outputs.GetGitopsApplicationsApplicationSpecResult']:
        """
        Specifications of the GitOps application. This includes the repository URL, application definition, source, destination and sync policy.
        """
        return pulumi.get(self, "specs")

    @_builtins.property
    @pulumi.getter
    def metadatas(self) -> Optional[Sequence['outputs.GetGitopsApplicationsApplicationMetadataResult']]:
        """
        Metadata corresponding to the resources. This includes all the objects a user must create.
        """
        return pulumi.get(self, "metadatas")


@pulumi.output_type
class GetGitopsApplicationsApplicationMetadataResult(dict):
    def __init__(__self__, *,
                 annotations: Mapping[str, _builtins.str],
                 cluster_name: _builtins.str,
                 finalizers: Sequence[_builtins.str],
                 generate_name: _builtins.str,
                 generation: _builtins.str,
                 labels: Mapping[str, _builtins.str],
                 name: _builtins.str,
                 namespace: _builtins.str,
                 owner_references: Sequence['outputs.GetGitopsApplicationsApplicationMetadataOwnerReferenceResult'],
                 uid: _builtins.str):
        """
        :param Mapping[str, _builtins.str] annotations: Annotations are unstructured key value pairs corresponding to a resource. External tools set these to store and retrieve arbitrary metadata.
        :param _builtins.str cluster_name: Name of the cluster corresponding to the object. API server ignores this if set in any create or update request.
        :param Sequence[_builtins.str] finalizers: Before the object is removed from the register, it must be empty. Each element serves as a unique identifier for the component that is accountable for removing that entry from the list. Entries in this list can only be removed if the object's deletionTimestamp is not null. The processing and removal of finalizers can happen in any sequence. No order is enforced as it may block the finalizers. Finalizers is a shared field that can be reordered by any actor with authority. If the finalizer list is processed in order, this could result in a scenario where the component in charge of the list's first finalizer is waiting for a signal (generated by a field value, an external system, or another) produced by a component in charge of the list's later finalizer.
        :param _builtins.str generate_name: An optional prefix that the server will only apply if the Name field is empty to create a unique name. The name returned to the client will differ from the name passed if this field is used. A unique suffix will be added to this value as well. The supplied value must adhere to the same validation guidelines as the Name field and may be reduced by the suffix length necessary to ensure that it is unique on the server. The server will NOT return a 409 if this field is supplied and the created name already exists; instead, it will either return 201 Created or 500 with Reason ServerTimeout, indicating that a unique name could not be found in the allotted time and the client should try again later.
        :param _builtins.str generation: A sequence number representing a specific generation of the desired state. This is a read-only value populated by the system.
        :param Mapping[str, _builtins.str] labels: Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services.
        :param _builtins.str name: Name must be unique within a namespace. It is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Name cannot be updated.
        :param _builtins.str namespace: Namespace of the GitOps application. An empty namespace is equivalent to the namespace of the GitOps agent.
        :param Sequence['GetGitopsApplicationsApplicationMetadataOwnerReferenceArgs'] owner_references: List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.
        :param _builtins.str uid: UID is the unique identifier in time and space value for this object. It is generated by the server on successful creation of a resource and is not allowed to change on PUT operations.
        """
        pulumi.set(__self__, "annotations", annotations)
        pulumi.set(__self__, "cluster_name", cluster_name)
        pulumi.set(__self__, "finalizers", finalizers)
        pulumi.set(__self__, "generate_name", generate_name)
        pulumi.set(__self__, "generation", generation)
        pulumi.set(__self__, "labels", labels)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "namespace", namespace)
        pulumi.set(__self__, "owner_references", owner_references)
        pulumi.set(__self__, "uid", uid)

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Mapping[str, _builtins.str]:
        """
        Annotations are unstructured key value pairs corresponding to a resource. External tools set these to store and retrieve arbitrary metadata.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter(name="clusterName")
    def cluster_name(self) -> _builtins.str:
        """
        Name of the cluster corresponding to the object. API server ignores this if set in any create or update request.
        """
        return pulumi.get(self, "cluster_name")

    @_builtins.property
    @pulumi.getter
    def finalizers(self) -> Sequence[_builtins.str]:
        """
        Before the object is removed from the register, it must be empty. Each element serves as a unique identifier for the component that is accountable for removing that entry from the list. Entries in this list can only be removed if the object's deletionTimestamp is not null. The processing and removal of finalizers can happen in any sequence. No order is enforced as it may block the finalizers. Finalizers is a shared field that can be reordered by any actor with authority. If the finalizer list is processed in order, this could result in a scenario where the component in charge of the list's first finalizer is waiting for a signal (generated by a field value, an external system, or another) produced by a component in charge of the list's later finalizer.
        """
        return pulumi.get(self, "finalizers")

    @_builtins.property
    @pulumi.getter(name="generateName")
    def generate_name(self) -> _builtins.str:
        """
        An optional prefix that the server will only apply if the Name field is empty to create a unique name. The name returned to the client will differ from the name passed if this field is used. A unique suffix will be added to this value as well. The supplied value must adhere to the same validation guidelines as the Name field and may be reduced by the suffix length necessary to ensure that it is unique on the server. The server will NOT return a 409 if this field is supplied and the created name already exists; instead, it will either return 201 Created or 500 with Reason ServerTimeout, indicating that a unique name could not be found in the allotted time and the client should try again later.
        """
        return pulumi.get(self, "generate_name")

    @_builtins.property
    @pulumi.getter
    def generation(self) -> _builtins.str:
        """
        A sequence number representing a specific generation of the desired state. This is a read-only value populated by the system.
        """
        return pulumi.get(self, "generation")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Mapping[str, _builtins.str]:
        """
        Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name must be unique within a namespace. It is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Name cannot be updated.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> _builtins.str:
        """
        Namespace of the GitOps application. An empty namespace is equivalent to the namespace of the GitOps agent.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter(name="ownerReferences")
    def owner_references(self) -> Sequence['outputs.GetGitopsApplicationsApplicationMetadataOwnerReferenceResult']:
        """
        List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.
        """
        return pulumi.get(self, "owner_references")

    @_builtins.property
    @pulumi.getter
    def uid(self) -> _builtins.str:
        """
        UID is the unique identifier in time and space value for this object. It is generated by the server on successful creation of a resource and is not allowed to change on PUT operations.
        """
        return pulumi.get(self, "uid")


@pulumi.output_type
class GetGitopsApplicationsApplicationMetadataOwnerReferenceResult(dict):
    def __init__(__self__, *,
                 api_version: _builtins.str,
                 block_owner_deletion: _builtins.bool,
                 controller: _builtins.bool,
                 kind: _builtins.str,
                 name: _builtins.str,
                 uid: _builtins.str):
        """
        :param _builtins.str api_version: API version of the referent.
        :param _builtins.bool block_owner_deletion: If true, AND if the owner has the "foregroundDeletion" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs "delete" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.
        :param _builtins.bool controller: Indicates if the reference points to the managing controller.
        :param _builtins.str kind: Kind of the referent.
        :param _builtins.str name: Name of the referent.
        :param _builtins.str uid: UID of the referent.
        """
        pulumi.set(__self__, "api_version", api_version)
        pulumi.set(__self__, "block_owner_deletion", block_owner_deletion)
        pulumi.set(__self__, "controller", controller)
        pulumi.set(__self__, "kind", kind)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "uid", uid)

    @_builtins.property
    @pulumi.getter(name="apiVersion")
    def api_version(self) -> _builtins.str:
        """
        API version of the referent.
        """
        return pulumi.get(self, "api_version")

    @_builtins.property
    @pulumi.getter(name="blockOwnerDeletion")
    def block_owner_deletion(self) -> _builtins.bool:
        """
        If true, AND if the owner has the "foregroundDeletion" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs "delete" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.
        """
        return pulumi.get(self, "block_owner_deletion")

    @_builtins.property
    @pulumi.getter
    def controller(self) -> _builtins.bool:
        """
        Indicates if the reference points to the managing controller.
        """
        return pulumi.get(self, "controller")

    @_builtins.property
    @pulumi.getter
    def kind(self) -> _builtins.str:
        """
        Kind of the referent.
        """
        return pulumi.get(self, "kind")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the referent.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def uid(self) -> _builtins.str:
        """
        UID of the referent.
        """
        return pulumi.get(self, "uid")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecResult(dict):
    def __init__(__self__, *,
                 destinations: Sequence['outputs.GetGitopsApplicationsApplicationSpecDestinationResult'],
                 sources: Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceResult'],
                 sync_policies: Sequence['outputs.GetGitopsApplicationsApplicationSpecSyncPolicyResult'],
                 project: Optional[_builtins.str] = None,
                 source: Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceResult']] = None):
        """
        :param Sequence['GetGitopsApplicationsApplicationSpecDestinationArgs'] destinations: Information about the GitOps application's destination.
        :param Sequence['GetGitopsApplicationsApplicationSpecSourceArgs'] sources: List of sources for the GitOps application. Multi Source support
        :param Sequence['GetGitopsApplicationsApplicationSpecSyncPolicyArgs'] sync_policies: Controls when a sync will be performed in response to updates in git.
        :param _builtins.str project: The ArgoCD project name corresponding to this GitOps application. Value must match mappings of ArgoCD projects to harness project.
        :param Sequence['GetGitopsApplicationsApplicationSpecSourceArgs'] source: Contains all information about the source of a GitOps application.
        """
        pulumi.set(__self__, "destinations", destinations)
        pulumi.set(__self__, "sources", sources)
        pulumi.set(__self__, "sync_policies", sync_policies)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if source is not None:
            pulumi.set(__self__, "source", source)

    @_builtins.property
    @pulumi.getter
    def destinations(self) -> Sequence['outputs.GetGitopsApplicationsApplicationSpecDestinationResult']:
        """
        Information about the GitOps application's destination.
        """
        return pulumi.get(self, "destinations")

    @_builtins.property
    @pulumi.getter
    def sources(self) -> Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceResult']:
        """
        List of sources for the GitOps application. Multi Source support
        """
        return pulumi.get(self, "sources")

    @_builtins.property
    @pulumi.getter(name="syncPolicies")
    def sync_policies(self) -> Sequence['outputs.GetGitopsApplicationsApplicationSpecSyncPolicyResult']:
        """
        Controls when a sync will be performed in response to updates in git.
        """
        return pulumi.get(self, "sync_policies")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The ArgoCD project name corresponding to this GitOps application. Value must match mappings of ArgoCD projects to harness project.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceResult']]:
        """
        Contains all information about the source of a GitOps application.
        """
        return pulumi.get(self, "source")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecDestinationResult(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 namespace: _builtins.str,
                 server: _builtins.str):
        """
        :param _builtins.str name: URL of the target cluster and must be set to the kubernetes control plane API.
        :param _builtins.str namespace: Target namespace of the GitOps application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        :param _builtins.str server: URL of the target cluster server for the GitOps application.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "namespace", namespace)
        pulumi.set(__self__, "server", server)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        URL of the target cluster and must be set to the kubernetes control plane API.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespace(self) -> _builtins.str:
        """
        Target namespace of the GitOps application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace.
        """
        return pulumi.get(self, "namespace")

    @_builtins.property
    @pulumi.getter
    def server(self) -> _builtins.str:
        """
        URL of the target cluster server for the GitOps application.
        """
        return pulumi.get(self, "server")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourceResult(dict):
    def __init__(__self__, *,
                 chart: _builtins.str,
                 directories: Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceDirectoryResult'],
                 helms: Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceHelmResult'],
                 ksonnets: Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceKsonnetResult'],
                 kustomizes: Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceKustomizeResult'],
                 path: _builtins.str,
                 plugins: Sequence['outputs.GetGitopsApplicationsApplicationSpecSourcePluginResult'],
                 ref: _builtins.str,
                 repo_url: _builtins.str,
                 target_revision: _builtins.str):
        """
        :param _builtins.str chart: Helm chart name, and must be specified for the GitOps applications sourced from a helm repo.
        :param Sequence['GetGitopsApplicationsApplicationSpecSourceDirectoryArgs'] directories: Options for applications of type plain YAML or Jsonnet.
        :param Sequence['GetGitopsApplicationsApplicationSpecSourceHelmArgs'] helms: Holds helm specific options.
        :param Sequence['GetGitopsApplicationsApplicationSpecSourceKsonnetArgs'] ksonnets: Ksonnet specific options.
        :param Sequence['GetGitopsApplicationsApplicationSpecSourceKustomizeArgs'] kustomizes: Options specific to a GitOps application source specific to Kustomize.
        :param _builtins.str path: Directory path within the git repository, and is only valid for the GitOps applications sourced from git.
        :param Sequence['GetGitopsApplicationsApplicationSpecSourcePluginArgs'] plugins: Options specific to config management plugins.
        :param _builtins.str ref: Reference name to be used in other source spec, used for multi-source applications.
        :param _builtins.str repo_url: URL to the repository (git or helm) that contains the GitOps application manifests.
        :param _builtins.str target_revision: Revision of the source to sync the GitOps application to. In case of git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag of the chart's version.
        """
        pulumi.set(__self__, "chart", chart)
        pulumi.set(__self__, "directories", directories)
        pulumi.set(__self__, "helms", helms)
        pulumi.set(__self__, "ksonnets", ksonnets)
        pulumi.set(__self__, "kustomizes", kustomizes)
        pulumi.set(__self__, "path", path)
        pulumi.set(__self__, "plugins", plugins)
        pulumi.set(__self__, "ref", ref)
        pulumi.set(__self__, "repo_url", repo_url)
        pulumi.set(__self__, "target_revision", target_revision)

    @_builtins.property
    @pulumi.getter
    def chart(self) -> _builtins.str:
        """
        Helm chart name, and must be specified for the GitOps applications sourced from a helm repo.
        """
        return pulumi.get(self, "chart")

    @_builtins.property
    @pulumi.getter
    def directories(self) -> Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceDirectoryResult']:
        """
        Options for applications of type plain YAML or Jsonnet.
        """
        return pulumi.get(self, "directories")

    @_builtins.property
    @pulumi.getter
    def helms(self) -> Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceHelmResult']:
        """
        Holds helm specific options.
        """
        return pulumi.get(self, "helms")

    @_builtins.property
    @pulumi.getter
    def ksonnets(self) -> Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceKsonnetResult']:
        """
        Ksonnet specific options.
        """
        return pulumi.get(self, "ksonnets")

    @_builtins.property
    @pulumi.getter
    def kustomizes(self) -> Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceKustomizeResult']:
        """
        Options specific to a GitOps application source specific to Kustomize.
        """
        return pulumi.get(self, "kustomizes")

    @_builtins.property
    @pulumi.getter
    def path(self) -> _builtins.str:
        """
        Directory path within the git repository, and is only valid for the GitOps applications sourced from git.
        """
        return pulumi.get(self, "path")

    @_builtins.property
    @pulumi.getter
    def plugins(self) -> Sequence['outputs.GetGitopsApplicationsApplicationSpecSourcePluginResult']:
        """
        Options specific to config management plugins.
        """
        return pulumi.get(self, "plugins")

    @_builtins.property
    @pulumi.getter
    def ref(self) -> _builtins.str:
        """
        Reference name to be used in other source spec, used for multi-source applications.
        """
        return pulumi.get(self, "ref")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> _builtins.str:
        """
        URL to the repository (git or helm) that contains the GitOps application manifests.
        """
        return pulumi.get(self, "repo_url")

    @_builtins.property
    @pulumi.getter(name="targetRevision")
    def target_revision(self) -> _builtins.str:
        """
        Revision of the source to sync the GitOps application to. In case of git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag of the chart's version.
        """
        return pulumi.get(self, "target_revision")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourceDirectoryResult(dict):
    def __init__(__self__, *,
                 exclude: Optional[_builtins.str] = None,
                 include: Optional[_builtins.str] = None,
                 jsonnets: Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetResult']] = None,
                 recurse: Optional[_builtins.bool] = None):
        """
        :param _builtins.str exclude: Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation.
        :param _builtins.str include: Glob pattern to match paths against that should be explicitly included during manifest generation.
        :param Sequence['GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetArgs'] jsonnets: Options specific to applications of type Jsonnet.
        :param _builtins.bool recurse: Indicates to scan a directory recursively for manifests.
        """
        if exclude is not None:
            pulumi.set(__self__, "exclude", exclude)
        if include is not None:
            pulumi.set(__self__, "include", include)
        if jsonnets is not None:
            pulumi.set(__self__, "jsonnets", jsonnets)
        if recurse is not None:
            pulumi.set(__self__, "recurse", recurse)

    @_builtins.property
    @pulumi.getter
    def exclude(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly excluded from being used during manifest generation.
        """
        return pulumi.get(self, "exclude")

    @_builtins.property
    @pulumi.getter
    def include(self) -> Optional[_builtins.str]:
        """
        Glob pattern to match paths against that should be explicitly included during manifest generation.
        """
        return pulumi.get(self, "include")

    @_builtins.property
    @pulumi.getter
    def jsonnets(self) -> Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetResult']]:
        """
        Options specific to applications of type Jsonnet.
        """
        return pulumi.get(self, "jsonnets")

    @_builtins.property
    @pulumi.getter
    def recurse(self) -> Optional[_builtins.bool]:
        """
        Indicates to scan a directory recursively for manifests.
        """
        return pulumi.get(self, "recurse")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetResult(dict):
    def __init__(__self__, *,
                 ext_vars: Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetExtVarResult']] = None,
                 libs: Optional[Sequence[_builtins.str]] = None,
                 tlas: Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetTlaResult']] = None):
        """
        :param Sequence['GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetExtVarArgs'] ext_vars: List of jsonnet external variables.
        :param Sequence[_builtins.str] libs: Additional library search dirs.
        :param Sequence['GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetTlaArgs'] tlas: List of jsonnet top-level arguments(TLAS).
        """
        if ext_vars is not None:
            pulumi.set(__self__, "ext_vars", ext_vars)
        if libs is not None:
            pulumi.set(__self__, "libs", libs)
        if tlas is not None:
            pulumi.set(__self__, "tlas", tlas)

    @_builtins.property
    @pulumi.getter(name="extVars")
    def ext_vars(self) -> Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetExtVarResult']]:
        """
        List of jsonnet external variables.
        """
        return pulumi.get(self, "ext_vars")

    @_builtins.property
    @pulumi.getter
    def libs(self) -> Optional[Sequence[_builtins.str]]:
        """
        Additional library search dirs.
        """
        return pulumi.get(self, "libs")

    @_builtins.property
    @pulumi.getter
    def tlas(self) -> Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetTlaResult']]:
        """
        List of jsonnet top-level arguments(TLAS).
        """
        return pulumi.get(self, "tlas")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetExtVarResult(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Code of the external variables of jsonnet application.
        :param _builtins.str name: Name of the external variables of jsonnet application.
        :param _builtins.str value: Value of the external variables of jsonnet application.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Code of the external variables of jsonnet application.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the external variables of jsonnet application.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the external variables of jsonnet application.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourceDirectoryJsonnetTlaResult(dict):
    def __init__(__self__, *,
                 code: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool code: Code of the TLAS of the jsonnet application.
        :param _builtins.str name: Name of the TLAS of the jsonnet application.
        :param _builtins.str value: Value of the TLAS of the jsonnet application.
        """
        if code is not None:
            pulumi.set(__self__, "code", code)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def code(self) -> Optional[_builtins.bool]:
        """
        Code of the TLAS of the jsonnet application.
        """
        return pulumi.get(self, "code")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the TLAS of the jsonnet application.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the TLAS of the jsonnet application.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourceHelmResult(dict):
    def __init__(__self__, *,
                 file_parameters: Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceHelmFileParameterResult']] = None,
                 ignore_missing_value_files: Optional[_builtins.bool] = None,
                 parameters: Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceHelmParameterResult']] = None,
                 pass_credentials: Optional[_builtins.bool] = None,
                 release_name: Optional[_builtins.str] = None,
                 skip_crds: Optional[_builtins.bool] = None,
                 skip_schema_validation: Optional[_builtins.bool] = None,
                 skip_tests: Optional[_builtins.bool] = None,
                 value_files: Optional[Sequence[_builtins.str]] = None,
                 values: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Sequence['GetGitopsApplicationsApplicationSpecSourceHelmFileParameterArgs'] file_parameters: File parameters to the helm template.
        :param _builtins.bool ignore_missing_value_files: Prevents 'helm template' from failing when value_files do not exist locally.
        :param Sequence['GetGitopsApplicationsApplicationSpecSourceHelmParameterArgs'] parameters: List of helm parameters which are passed to the helm template command upon manifest generation.
        :param _builtins.bool pass_credentials: Indicates if to pass credentials to all domains (helm's --pass-credentials)
        :param _builtins.str release_name: Helm release name to use. If omitted it will use the GitOps application name.
        :param _builtins.bool skip_crds: Indicates if to skip CRDs during helm template. Corresponds to helm --skip-crds
        :param _builtins.bool skip_schema_validation: Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        :param _builtins.bool skip_tests: Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        :param Sequence[_builtins.str] value_files: List of helm value files to use when generating a template.
        :param _builtins.str values: Helm values to be passed to helm template, typically defined as a block.
        :param _builtins.str version: Helm version to use for templating (either "2" or "3")
        """
        if file_parameters is not None:
            pulumi.set(__self__, "file_parameters", file_parameters)
        if ignore_missing_value_files is not None:
            pulumi.set(__self__, "ignore_missing_value_files", ignore_missing_value_files)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)
        if pass_credentials is not None:
            pulumi.set(__self__, "pass_credentials", pass_credentials)
        if release_name is not None:
            pulumi.set(__self__, "release_name", release_name)
        if skip_crds is not None:
            pulumi.set(__self__, "skip_crds", skip_crds)
        if skip_schema_validation is not None:
            pulumi.set(__self__, "skip_schema_validation", skip_schema_validation)
        if skip_tests is not None:
            pulumi.set(__self__, "skip_tests", skip_tests)
        if value_files is not None:
            pulumi.set(__self__, "value_files", value_files)
        if values is not None:
            pulumi.set(__self__, "values", values)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="fileParameters")
    def file_parameters(self) -> Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceHelmFileParameterResult']]:
        """
        File parameters to the helm template.
        """
        return pulumi.get(self, "file_parameters")

    @_builtins.property
    @pulumi.getter(name="ignoreMissingValueFiles")
    def ignore_missing_value_files(self) -> Optional[_builtins.bool]:
        """
        Prevents 'helm template' from failing when value_files do not exist locally.
        """
        return pulumi.get(self, "ignore_missing_value_files")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceHelmParameterResult']]:
        """
        List of helm parameters which are passed to the helm template command upon manifest generation.
        """
        return pulumi.get(self, "parameters")

    @_builtins.property
    @pulumi.getter(name="passCredentials")
    def pass_credentials(self) -> Optional[_builtins.bool]:
        """
        Indicates if to pass credentials to all domains (helm's --pass-credentials)
        """
        return pulumi.get(self, "pass_credentials")

    @_builtins.property
    @pulumi.getter(name="releaseName")
    def release_name(self) -> Optional[_builtins.str]:
        """
        Helm release name to use. If omitted it will use the GitOps application name.
        """
        return pulumi.get(self, "release_name")

    @_builtins.property
    @pulumi.getter(name="skipCrds")
    def skip_crds(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip CRDs during helm template. Corresponds to helm --skip-crds
        """
        return pulumi.get(self, "skip_crds")

    @_builtins.property
    @pulumi.getter(name="skipSchemaValidation")
    def skip_schema_validation(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip schema validation during helm template. Corresponds to helm --skip-schema-validation
        """
        return pulumi.get(self, "skip_schema_validation")

    @_builtins.property
    @pulumi.getter(name="skipTests")
    def skip_tests(self) -> Optional[_builtins.bool]:
        """
        Indicates if to skip tests during helm template. Corresponds to helm --skip-tests
        """
        return pulumi.get(self, "skip_tests")

    @_builtins.property
    @pulumi.getter(name="valueFiles")
    def value_files(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of helm value files to use when generating a template.
        """
        return pulumi.get(self, "value_files")

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[_builtins.str]:
        """
        Helm values to be passed to helm template, typically defined as a block.
        """
        return pulumi.get(self, "values")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Helm version to use for templating (either "2" or "3")
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourceHelmFileParameterResult(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 path: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the helm parameter.
        :param _builtins.str path: Path to the file containing the values of the helm parameter.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if path is not None:
            pulumi.set(__self__, "path", path)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def path(self) -> Optional[_builtins.str]:
        """
        Path to the file containing the values of the helm parameter.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourceHelmParameterResult(dict):
    def __init__(__self__, *,
                 force_string: Optional[_builtins.bool] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.bool force_string: Indicates if helm should interpret booleans and numbers as strings.
        :param _builtins.str name: Name of the helm parameter.
        :param _builtins.str value: Value of the Helm parameter.
        """
        if force_string is not None:
            pulumi.set(__self__, "force_string", force_string)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter(name="forceString")
    def force_string(self) -> Optional[_builtins.bool]:
        """
        Indicates if helm should interpret booleans and numbers as strings.
        """
        return pulumi.get(self, "force_string")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the helm parameter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the Helm parameter.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourceKsonnetResult(dict):
    def __init__(__self__, *,
                 environment: Optional[_builtins.str] = None,
                 parameters: Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceKsonnetParameterResult']] = None):
        """
        :param _builtins.str environment: Ksonnet application environment name.
        :param Sequence['GetGitopsApplicationsApplicationSpecSourceKsonnetParameterArgs'] parameters: List of ksonnet component parameter override values.
        """
        if environment is not None:
            pulumi.set(__self__, "environment", environment)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @_builtins.property
    @pulumi.getter
    def environment(self) -> Optional[_builtins.str]:
        """
        Ksonnet application environment name.
        """
        return pulumi.get(self, "environment")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourceKsonnetParameterResult']]:
        """
        List of ksonnet component parameter override values.
        """
        return pulumi.get(self, "parameters")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourceKsonnetParameterResult(dict):
    def __init__(__self__, *,
                 component: Optional[_builtins.str] = None,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str component: Component of the parameter of the ksonnet application.
        :param _builtins.str name: Name of the parameter of the ksonnet application.
        :param _builtins.str value: Value of the parameter of the ksonnet application.
        """
        if component is not None:
            pulumi.set(__self__, "component", component)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def component(self) -> Optional[_builtins.str]:
        """
        Component of the parameter of the ksonnet application.
        """
        return pulumi.get(self, "component")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the parameter of the ksonnet application.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the parameter of the ksonnet application.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourceKustomizeResult(dict):
    def __init__(__self__, *,
                 common_annotations: Optional[Mapping[str, _builtins.str]] = None,
                 common_labels: Optional[Mapping[str, _builtins.str]] = None,
                 force_common_annotations: Optional[_builtins.bool] = None,
                 force_common_labels: Optional[_builtins.bool] = None,
                 images: Optional[Sequence[_builtins.str]] = None,
                 name_prefix: Optional[_builtins.str] = None,
                 name_suffix: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param Mapping[str, _builtins.str] common_annotations: List of additional annotations to add to rendered manifests.
        :param Mapping[str, _builtins.str] common_labels: List of additional labels to add to rendered manifests.
        :param _builtins.bool force_common_annotations: Indicates if to force applying common annotations to resources for kustomize apps.
        :param _builtins.bool force_common_labels: Indicates if to force apply common labels to resources for kustomize apps.
        :param Sequence[_builtins.str] images: List of kustomize image override specifications.
        :param _builtins.str name_prefix: Prefix prepended to resources for kustomize apps.
        :param _builtins.str name_suffix: Suffix appended to resources for kustomize apps.
        :param _builtins.str version: Version of kustomize to use for rendering manifests.
        """
        if common_annotations is not None:
            pulumi.set(__self__, "common_annotations", common_annotations)
        if common_labels is not None:
            pulumi.set(__self__, "common_labels", common_labels)
        if force_common_annotations is not None:
            pulumi.set(__self__, "force_common_annotations", force_common_annotations)
        if force_common_labels is not None:
            pulumi.set(__self__, "force_common_labels", force_common_labels)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if name_prefix is not None:
            pulumi.set(__self__, "name_prefix", name_prefix)
        if name_suffix is not None:
            pulumi.set(__self__, "name_suffix", name_suffix)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="commonAnnotations")
    def common_annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional annotations to add to rendered manifests.
        """
        return pulumi.get(self, "common_annotations")

    @_builtins.property
    @pulumi.getter(name="commonLabels")
    def common_labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        List of additional labels to add to rendered manifests.
        """
        return pulumi.get(self, "common_labels")

    @_builtins.property
    @pulumi.getter(name="forceCommonAnnotations")
    def force_common_annotations(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force applying common annotations to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_annotations")

    @_builtins.property
    @pulumi.getter(name="forceCommonLabels")
    def force_common_labels(self) -> Optional[_builtins.bool]:
        """
        Indicates if to force apply common labels to resources for kustomize apps.
        """
        return pulumi.get(self, "force_common_labels")

    @_builtins.property
    @pulumi.getter
    def images(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of kustomize image override specifications.
        """
        return pulumi.get(self, "images")

    @_builtins.property
    @pulumi.getter(name="namePrefix")
    def name_prefix(self) -> Optional[_builtins.str]:
        """
        Prefix prepended to resources for kustomize apps.
        """
        return pulumi.get(self, "name_prefix")

    @_builtins.property
    @pulumi.getter(name="nameSuffix")
    def name_suffix(self) -> Optional[_builtins.str]:
        """
        Suffix appended to resources for kustomize apps.
        """
        return pulumi.get(self, "name_suffix")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of kustomize to use for rendering manifests.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourcePluginResult(dict):
    def __init__(__self__, *,
                 envs: Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourcePluginEnvResult']] = None,
                 name: Optional[_builtins.str] = None):
        """
        :param Sequence['GetGitopsApplicationsApplicationSpecSourcePluginEnvArgs'] envs: Entry in the GitOps application's environment.
        :param _builtins.str name: Name of the plugin.
        """
        if envs is not None:
            pulumi.set(__self__, "envs", envs)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def envs(self) -> Optional[Sequence['outputs.GetGitopsApplicationsApplicationSpecSourcePluginEnvResult']]:
        """
        Entry in the GitOps application's environment.
        """
        return pulumi.get(self, "envs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the plugin.
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSourcePluginEnvResult(dict):
    def __init__(__self__, *,
                 name: Optional[_builtins.str] = None,
                 value: Optional[_builtins.str] = None):
        """
        :param _builtins.str name: Name of the variable, usually expressed in uppercase.
        :param _builtins.str value: Value of the variable.
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the variable, usually expressed in uppercase.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> Optional[_builtins.str]:
        """
        Value of the variable.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSyncPolicyResult(dict):
    def __init__(__self__, *,
                 automateds: Sequence['outputs.GetGitopsApplicationsApplicationSpecSyncPolicyAutomatedResult'],
                 retries: Sequence['outputs.GetGitopsApplicationsApplicationSpecSyncPolicyRetryResult'],
                 sync_options: Sequence[_builtins.str]):
        """
        :param Sequence['GetGitopsApplicationsApplicationSpecSyncPolicyAutomatedArgs'] automateds: Controls the behavior of an automated sync.
        :param Sequence['GetGitopsApplicationsApplicationSpecSyncPolicyRetryArgs'] retries: Contains information about the strategy to apply when a sync failed.
        :param Sequence[_builtins.str] sync_options: Options allow you to specify whole app sync-options.
        """
        pulumi.set(__self__, "automateds", automateds)
        pulumi.set(__self__, "retries", retries)
        pulumi.set(__self__, "sync_options", sync_options)

    @_builtins.property
    @pulumi.getter
    def automateds(self) -> Sequence['outputs.GetGitopsApplicationsApplicationSpecSyncPolicyAutomatedResult']:
        """
        Controls the behavior of an automated sync.
        """
        return pulumi.get(self, "automateds")

    @_builtins.property
    @pulumi.getter
    def retries(self) -> Sequence['outputs.GetGitopsApplicationsApplicationSpecSyncPolicyRetryResult']:
        """
        Contains information about the strategy to apply when a sync failed.
        """
        return pulumi.get(self, "retries")

    @_builtins.property
    @pulumi.getter(name="syncOptions")
    def sync_options(self) -> Sequence[_builtins.str]:
        """
        Options allow you to specify whole app sync-options.
        """
        return pulumi.get(self, "sync_options")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSyncPolicyAutomatedResult(dict):
    def __init__(__self__, *,
                 allow_empty: _builtins.bool,
                 prune: _builtins.bool,
                 self_heal: _builtins.bool):
        """
        :param _builtins.bool allow_empty: Indicates to allows apps to have zero live resources (default: false).
        :param _builtins.bool prune: Indicates whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false).
        :param _builtins.bool self_heal: Indicates whether to revert resources back to their desired state upon modification in the cluster (default: false).
        """
        pulumi.set(__self__, "allow_empty", allow_empty)
        pulumi.set(__self__, "prune", prune)
        pulumi.set(__self__, "self_heal", self_heal)

    @_builtins.property
    @pulumi.getter(name="allowEmpty")
    def allow_empty(self) -> _builtins.bool:
        """
        Indicates to allows apps to have zero live resources (default: false).
        """
        return pulumi.get(self, "allow_empty")

    @_builtins.property
    @pulumi.getter
    def prune(self) -> _builtins.bool:
        """
        Indicates whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false).
        """
        return pulumi.get(self, "prune")

    @_builtins.property
    @pulumi.getter(name="selfHeal")
    def self_heal(self) -> _builtins.bool:
        """
        Indicates whether to revert resources back to their desired state upon modification in the cluster (default: false).
        """
        return pulumi.get(self, "self_heal")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSyncPolicyRetryResult(dict):
    def __init__(__self__, *,
                 backoffs: Sequence['outputs.GetGitopsApplicationsApplicationSpecSyncPolicyRetryBackoffResult'],
                 limit: _builtins.str):
        """
        :param Sequence['GetGitopsApplicationsApplicationSpecSyncPolicyRetryBackoffArgs'] backoffs: Backoff strategy to use on subsequent retries for failing syncs.
        :param _builtins.str limit: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        pulumi.set(__self__, "backoffs", backoffs)
        pulumi.set(__self__, "limit", limit)

    @_builtins.property
    @pulumi.getter
    def backoffs(self) -> Sequence['outputs.GetGitopsApplicationsApplicationSpecSyncPolicyRetryBackoffResult']:
        """
        Backoff strategy to use on subsequent retries for failing syncs.
        """
        return pulumi.get(self, "backoffs")

    @_builtins.property
    @pulumi.getter
    def limit(self) -> _builtins.str:
        """
        Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
        """
        return pulumi.get(self, "limit")


@pulumi.output_type
class GetGitopsApplicationsApplicationSpecSyncPolicyRetryBackoffResult(dict):
    def __init__(__self__, *,
                 duration: _builtins.str,
                 factor: _builtins.str,
                 max_duration: _builtins.str):
        """
        :param _builtins.str duration: Amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h").
        :param _builtins.str factor: Factor to multiply the base duration after each failed retry.
        :param _builtins.str max_duration: Maximum amount of time allowed of the backoff strategy.
        """
        pulumi.set(__self__, "duration", duration)
        pulumi.set(__self__, "factor", factor)
        pulumi.set(__self__, "max_duration", max_duration)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> _builtins.str:
        """
        Amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h").
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter
    def factor(self) -> _builtins.str:
        """
        Factor to multiply the base duration after each failed retry.
        """
        return pulumi.get(self, "factor")

    @_builtins.property
    @pulumi.getter(name="maxDuration")
    def max_duration(self) -> _builtins.str:
        """
        Maximum amount of time allowed of the backoff strategy.
        """
        return pulumi.get(self, "max_duration")


@pulumi.output_type
class GetGitopsClusterRequestResult(dict):
    def __init__(__self__, *,
                 tags: Sequence[_builtins.str],
                 clusters: Optional[Sequence['outputs.GetGitopsClusterRequestClusterResult']] = None,
                 updated_fields: Optional[Sequence[_builtins.str]] = None,
                 upsert: Optional[_builtins.bool] = None):
        """
        :param Sequence[_builtins.str] tags: Tags for the GitOps cluster. These can be used to search or filter the GitOps agents.
        :param Sequence['GetGitopsClusterRequestClusterArgs'] clusters: GitOps cluster details.
        :param Sequence[_builtins.str] updated_fields: Fields which are updated.
        :param _builtins.bool upsert: Indicates if the GitOps cluster should be updated if existing and inserted if not.
        """
        pulumi.set(__self__, "tags", tags)
        if clusters is not None:
            pulumi.set(__self__, "clusters", clusters)
        if updated_fields is not None:
            pulumi.set(__self__, "updated_fields", updated_fields)
        if upsert is not None:
            pulumi.set(__self__, "upsert", upsert)

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Sequence[_builtins.str]:
        """
        Tags for the GitOps cluster. These can be used to search or filter the GitOps agents.
        """
        return pulumi.get(self, "tags")

    @_builtins.property
    @pulumi.getter
    def clusters(self) -> Optional[Sequence['outputs.GetGitopsClusterRequestClusterResult']]:
        """
        GitOps cluster details.
        """
        return pulumi.get(self, "clusters")

    @_builtins.property
    @pulumi.getter(name="updatedFields")
    def updated_fields(self) -> Optional[Sequence[_builtins.str]]:
        """
        Fields which are updated.
        """
        return pulumi.get(self, "updated_fields")

    @_builtins.property
    @pulumi.getter
    def upsert(self) -> Optional[_builtins.bool]:
        """
        Indicates if the GitOps cluster should be updated if existing and inserted if not.
        """
        return pulumi.get(self, "upsert")


@pulumi.output_type
class GetGitopsClusterRequestClusterResult(dict):
    def __init__(__self__, *,
                 infos: Sequence['outputs.GetGitopsClusterRequestClusterInfoResult'],
                 annotations: Optional[Mapping[str, _builtins.str]] = None,
                 cluster_resources: Optional[_builtins.bool] = None,
                 configs: Optional[Sequence['outputs.GetGitopsClusterRequestClusterConfigResult']] = None,
                 labels: Optional[Mapping[str, _builtins.str]] = None,
                 name: Optional[_builtins.str] = None,
                 namespaces: Optional[Sequence[_builtins.str]] = None,
                 project: Optional[_builtins.str] = None,
                 refresh_requested_ats: Optional[Sequence['outputs.GetGitopsClusterRequestClusterRefreshRequestedAtResult']] = None,
                 server: Optional[_builtins.str] = None,
                 shard: Optional[_builtins.str] = None):
        """
        :param Sequence['GetGitopsClusterRequestClusterInfoArgs'] infos: Information about cluster cache and state.
        :param Mapping[str, _builtins.str] annotations: Annotations for cluster secret metadata.
        :param _builtins.bool cluster_resources: Indicates if cluster level resources should be managed. This setting is used only if cluster is connected in a namespaced mode.
        :param Sequence['GetGitopsClusterRequestClusterConfigArgs'] configs: GitOps cluster config.
        :param Mapping[str, _builtins.str] labels: Labels for cluster secret metadata.
        :param _builtins.str name: Name of the cluster. If omitted, the server address will be used.
        :param Sequence[_builtins.str] namespaces: List of namespaces which are accessible in that cluster. Cluster level resources will be ignored if namespace list is not empty.
        :param _builtins.str project: The ArgoCD project name corresponding to this GitOps cluster. An empty string means that the GitOps cluster belongs to the default project created by Harness.
        :param Sequence['GetGitopsClusterRequestClusterRefreshRequestedAtArgs'] refresh_requested_ats: Time when cluster cache refresh has been requested.
        :param _builtins.str server: API server URL of the kubernetes cluster.
        :param _builtins.str shard: Shard number to be managed by a specific application controller pod. Calculated on the fly by the application controller if not specified.
        """
        pulumi.set(__self__, "infos", infos)
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if cluster_resources is not None:
            pulumi.set(__self__, "cluster_resources", cluster_resources)
        if configs is not None:
            pulumi.set(__self__, "configs", configs)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if namespaces is not None:
            pulumi.set(__self__, "namespaces", namespaces)
        if project is not None:
            pulumi.set(__self__, "project", project)
        if refresh_requested_ats is not None:
            pulumi.set(__self__, "refresh_requested_ats", refresh_requested_ats)
        if server is not None:
            pulumi.set(__self__, "server", server)
        if shard is not None:
            pulumi.set(__self__, "shard", shard)

    @_builtins.property
    @pulumi.getter
    def infos(self) -> Sequence['outputs.GetGitopsClusterRequestClusterInfoResult']:
        """
        Information about cluster cache and state.
        """
        return pulumi.get(self, "infos")

    @_builtins.property
    @pulumi.getter
    def annotations(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Annotations for cluster secret metadata.
        """
        return pulumi.get(self, "annotations")

    @_builtins.property
    @pulumi.getter(name="clusterResources")
    def cluster_resources(self) -> Optional[_builtins.bool]:
        """
        Indicates if cluster level resources should be managed. This setting is used only if cluster is connected in a namespaced mode.
        """
        return pulumi.get(self, "cluster_resources")

    @_builtins.property
    @pulumi.getter
    def configs(self) -> Optional[Sequence['outputs.GetGitopsClusterRequestClusterConfigResult']]:
        """
        GitOps cluster config.
        """
        return pulumi.get(self, "configs")

    @_builtins.property
    @pulumi.getter
    def labels(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Labels for cluster secret metadata.
        """
        return pulumi.get(self, "labels")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        Name of the cluster. If omitted, the server address will be used.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def namespaces(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of namespaces which are accessible in that cluster. Cluster level resources will be ignored if namespace list is not empty.
        """
        return pulumi.get(self, "namespaces")

    @_builtins.property
    @pulumi.getter
    def project(self) -> Optional[_builtins.str]:
        """
        The ArgoCD project name corresponding to this GitOps cluster. An empty string means that the GitOps cluster belongs to the default project created by Harness.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="refreshRequestedAts")
    def refresh_requested_ats(self) -> Optional[Sequence['outputs.GetGitopsClusterRequestClusterRefreshRequestedAtResult']]:
        """
        Time when cluster cache refresh has been requested.
        """
        return pulumi.get(self, "refresh_requested_ats")

    @_builtins.property
    @pulumi.getter
    def server(self) -> Optional[_builtins.str]:
        """
        API server URL of the kubernetes cluster.
        """
        return pulumi.get(self, "server")

    @_builtins.property
    @pulumi.getter
    def shard(self) -> Optional[_builtins.str]:
        """
        Shard number to be managed by a specific application controller pod. Calculated on the fly by the application controller if not specified.
        """
        return pulumi.get(self, "shard")


@pulumi.output_type
class GetGitopsClusterRequestClusterConfigResult(dict):
    def __init__(__self__, *,
                 aws_cluster_name: Optional[_builtins.str] = None,
                 bearer_token: Optional[_builtins.str] = None,
                 cluster_connection_type: Optional[_builtins.str] = None,
                 disable_compression: Optional[_builtins.bool] = None,
                 exec_provider_configs: Optional[Sequence['outputs.GetGitopsClusterRequestClusterConfigExecProviderConfigResult']] = None,
                 password: Optional[_builtins.str] = None,
                 proxy_url: Optional[_builtins.str] = None,
                 role_arn: Optional[_builtins.str] = None,
                 tls_client_configs: Optional[Sequence['outputs.GetGitopsClusterRequestClusterConfigTlsClientConfigResult']] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param _builtins.str aws_cluster_name: AWS Cluster name. If set then AWS CLI EKS token command will be used to access cluster.
        :param _builtins.str bearer_token: Bearer authentication token the cluster.
        :param _builtins.str cluster_connection_type: Identifies the authentication method used to connect to the cluster.
        :param _builtins.bool disable_compression: DisableCompression bypasses automatic GZip compression requests to to the cluster's API server. Corresponds to running kubectl with --disable-compression
        :param Sequence['GetGitopsClusterRequestClusterConfigExecProviderConfigArgs'] exec_provider_configs: Configuration for an exec provider.
        :param _builtins.str password: Password of the server of the cluster.
        :param _builtins.str proxy_url: The URL to the proxy to be used for all requests send to the cluster's API server
        :param _builtins.str role_arn: Optional role ARN. If set then used for AWS IAM Authenticator.
        :param Sequence['GetGitopsClusterRequestClusterConfigTlsClientConfigArgs'] tls_client_configs: Settings to enable transport layer security.
        :param _builtins.str username: Username of the server of the cluster.
        """
        if aws_cluster_name is not None:
            pulumi.set(__self__, "aws_cluster_name", aws_cluster_name)
        if bearer_token is not None:
            pulumi.set(__self__, "bearer_token", bearer_token)
        if cluster_connection_type is not None:
            pulumi.set(__self__, "cluster_connection_type", cluster_connection_type)
        if disable_compression is not None:
            pulumi.set(__self__, "disable_compression", disable_compression)
        if exec_provider_configs is not None:
            pulumi.set(__self__, "exec_provider_configs", exec_provider_configs)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if proxy_url is not None:
            pulumi.set(__self__, "proxy_url", proxy_url)
        if role_arn is not None:
            pulumi.set(__self__, "role_arn", role_arn)
        if tls_client_configs is not None:
            pulumi.set(__self__, "tls_client_configs", tls_client_configs)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="awsClusterName")
    def aws_cluster_name(self) -> Optional[_builtins.str]:
        """
        AWS Cluster name. If set then AWS CLI EKS token command will be used to access cluster.
        """
        return pulumi.get(self, "aws_cluster_name")

    @_builtins.property
    @pulumi.getter(name="bearerToken")
    def bearer_token(self) -> Optional[_builtins.str]:
        """
        Bearer authentication token the cluster.
        """
        return pulumi.get(self, "bearer_token")

    @_builtins.property
    @pulumi.getter(name="clusterConnectionType")
    def cluster_connection_type(self) -> Optional[_builtins.str]:
        """
        Identifies the authentication method used to connect to the cluster.
        """
        return pulumi.get(self, "cluster_connection_type")

    @_builtins.property
    @pulumi.getter(name="disableCompression")
    def disable_compression(self) -> Optional[_builtins.bool]:
        """
        DisableCompression bypasses automatic GZip compression requests to to the cluster's API server. Corresponds to running kubectl with --disable-compression
        """
        return pulumi.get(self, "disable_compression")

    @_builtins.property
    @pulumi.getter(name="execProviderConfigs")
    def exec_provider_configs(self) -> Optional[Sequence['outputs.GetGitopsClusterRequestClusterConfigExecProviderConfigResult']]:
        """
        Configuration for an exec provider.
        """
        return pulumi.get(self, "exec_provider_configs")

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[_builtins.str]:
        """
        Password of the server of the cluster.
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter(name="proxyUrl")
    def proxy_url(self) -> Optional[_builtins.str]:
        """
        The URL to the proxy to be used for all requests send to the cluster's API server
        """
        return pulumi.get(self, "proxy_url")

    @_builtins.property
    @pulumi.getter(name="roleARN")
    def role_arn(self) -> Optional[_builtins.str]:
        """
        Optional role ARN. If set then used for AWS IAM Authenticator.
        """
        return pulumi.get(self, "role_arn")

    @_builtins.property
    @pulumi.getter(name="tlsClientConfigs")
    def tls_client_configs(self) -> Optional[Sequence['outputs.GetGitopsClusterRequestClusterConfigTlsClientConfigResult']]:
        """
        Settings to enable transport layer security.
        """
        return pulumi.get(self, "tls_client_configs")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        Username of the server of the cluster.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GetGitopsClusterRequestClusterConfigExecProviderConfigResult(dict):
    def __init__(__self__, *,
                 api_version: Optional[_builtins.str] = None,
                 args: Optional[Sequence[_builtins.str]] = None,
                 command: Optional[_builtins.str] = None,
                 env: Optional[Mapping[str, _builtins.str]] = None,
                 install_hint: Optional[_builtins.str] = None):
        """
        :param _builtins.str api_version: Preferred input version of the ExecInfo.
        :param Sequence[_builtins.str] args: Arguments to pass to the command when executing it.
        :param _builtins.str command: Command to execute.
        :param Mapping[str, _builtins.str] env: Additional environment variables to expose to the process.
        :param _builtins.str install_hint: Message displayed when the executable is not found.
        """
        if api_version is not None:
            pulumi.set(__self__, "api_version", api_version)
        if args is not None:
            pulumi.set(__self__, "args", args)
        if command is not None:
            pulumi.set(__self__, "command", command)
        if env is not None:
            pulumi.set(__self__, "env", env)
        if install_hint is not None:
            pulumi.set(__self__, "install_hint", install_hint)

    @_builtins.property
    @pulumi.getter(name="apiVersion")
    def api_version(self) -> Optional[_builtins.str]:
        """
        Preferred input version of the ExecInfo.
        """
        return pulumi.get(self, "api_version")

    @_builtins.property
    @pulumi.getter
    def args(self) -> Optional[Sequence[_builtins.str]]:
        """
        Arguments to pass to the command when executing it.
        """
        return pulumi.get(self, "args")

    @_builtins.property
    @pulumi.getter
    def command(self) -> Optional[_builtins.str]:
        """
        Command to execute.
        """
        return pulumi.get(self, "command")

    @_builtins.property
    @pulumi.getter
    def env(self) -> Optional[Mapping[str, _builtins.str]]:
        """
        Additional environment variables to expose to the process.
        """
        return pulumi.get(self, "env")

    @_builtins.property
    @pulumi.getter(name="installHint")
    def install_hint(self) -> Optional[_builtins.str]:
        """
        Message displayed when the executable is not found.
        """
        return pulumi.get(self, "install_hint")


@pulumi.output_type
class GetGitopsClusterRequestClusterConfigTlsClientConfigResult(dict):
    def __init__(__self__, *,
                 ca_data: Optional[_builtins.str] = None,
                 cert_data: Optional[_builtins.str] = None,
                 insecure: Optional[_builtins.bool] = None,
                 key_data: Optional[_builtins.str] = None,
                 server_name: Optional[_builtins.str] = None):
        """
        :param _builtins.str ca_data: CA data holds PEM-encoded bytes (typically read from a root certificates bundle). Use this if you are using self-signed certificates. CAData takes precedence over CAFile. The value should be base64 encoded.
        :param _builtins.str cert_data: Certificate data holds PEM-encoded bytes (typically read from a client certificate file). CertData takes precedence over CertFile. Use this if you are using mTLS. The value should be base64 encoded.
        :param _builtins.bool insecure: Indicates if the TLS connection to the cluster should be insecure.
        :param _builtins.str key_data: Key data holds PEM-encoded bytes (typically read from a client certificate key file). KeyData takes precedence over KeyFile. Use this if you are using mTLS. The value should be base64 encoded.
        :param _builtins.str server_name: Server name for SNI in the client to check server certificates against. If ServerName is empty, the hostname used to contact the server is used.
        """
        if ca_data is not None:
            pulumi.set(__self__, "ca_data", ca_data)
        if cert_data is not None:
            pulumi.set(__self__, "cert_data", cert_data)
        if insecure is not None:
            pulumi.set(__self__, "insecure", insecure)
        if key_data is not None:
            pulumi.set(__self__, "key_data", key_data)
        if server_name is not None:
            pulumi.set(__self__, "server_name", server_name)

    @_builtins.property
    @pulumi.getter(name="caData")
    def ca_data(self) -> Optional[_builtins.str]:
        """
        CA data holds PEM-encoded bytes (typically read from a root certificates bundle). Use this if you are using self-signed certificates. CAData takes precedence over CAFile. The value should be base64 encoded.
        """
        return pulumi.get(self, "ca_data")

    @_builtins.property
    @pulumi.getter(name="certData")
    def cert_data(self) -> Optional[_builtins.str]:
        """
        Certificate data holds PEM-encoded bytes (typically read from a client certificate file). CertData takes precedence over CertFile. Use this if you are using mTLS. The value should be base64 encoded.
        """
        return pulumi.get(self, "cert_data")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> Optional[_builtins.bool]:
        """
        Indicates if the TLS connection to the cluster should be insecure.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="keyData")
    def key_data(self) -> Optional[_builtins.str]:
        """
        Key data holds PEM-encoded bytes (typically read from a client certificate key file). KeyData takes precedence over KeyFile. Use this if you are using mTLS. The value should be base64 encoded.
        """
        return pulumi.get(self, "key_data")

    @_builtins.property
    @pulumi.getter(name="serverName")
    def server_name(self) -> Optional[_builtins.str]:
        """
        Server name for SNI in the client to check server certificates against. If ServerName is empty, the hostname used to contact the server is used.
        """
        return pulumi.get(self, "server_name")


@pulumi.output_type
class GetGitopsClusterRequestClusterInfoResult(dict):
    def __init__(__self__, *,
                 cache_infos: Sequence['outputs.GetGitopsClusterRequestClusterInfoCacheInfoResult'],
                 connection_states: Sequence['outputs.GetGitopsClusterRequestClusterInfoConnectionStateResult'],
                 server_version: _builtins.str,
                 api_versions: Optional[Sequence[_builtins.str]] = None,
                 applications_count: Optional[_builtins.str] = None):
        """
        :param Sequence['GetGitopsClusterRequestClusterInfoCacheInfoArgs'] cache_infos: Information about the cluster cache.
        :param Sequence['GetGitopsClusterRequestClusterInfoConnectionStateArgs'] connection_states: Information about the connection to the cluster.
        :param _builtins.str server_version: Kubernetes version of the cluster.
        :param Sequence[_builtins.str] api_versions: List of API versions supported by the cluster.
        :param _builtins.str applications_count: Number of applications managed by Argo CD on the cluster.
        """
        pulumi.set(__self__, "cache_infos", cache_infos)
        pulumi.set(__self__, "connection_states", connection_states)
        pulumi.set(__self__, "server_version", server_version)
        if api_versions is not None:
            pulumi.set(__self__, "api_versions", api_versions)
        if applications_count is not None:
            pulumi.set(__self__, "applications_count", applications_count)

    @_builtins.property
    @pulumi.getter(name="cacheInfos")
    def cache_infos(self) -> Sequence['outputs.GetGitopsClusterRequestClusterInfoCacheInfoResult']:
        """
        Information about the cluster cache.
        """
        return pulumi.get(self, "cache_infos")

    @_builtins.property
    @pulumi.getter(name="connectionStates")
    def connection_states(self) -> Sequence['outputs.GetGitopsClusterRequestClusterInfoConnectionStateResult']:
        """
        Information about the connection to the cluster.
        """
        return pulumi.get(self, "connection_states")

    @_builtins.property
    @pulumi.getter(name="serverVersion")
    def server_version(self) -> _builtins.str:
        """
        Kubernetes version of the cluster.
        """
        return pulumi.get(self, "server_version")

    @_builtins.property
    @pulumi.getter(name="apiVersions")
    def api_versions(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of API versions supported by the cluster.
        """
        return pulumi.get(self, "api_versions")

    @_builtins.property
    @pulumi.getter(name="applicationsCount")
    def applications_count(self) -> Optional[_builtins.str]:
        """
        Number of applications managed by Argo CD on the cluster.
        """
        return pulumi.get(self, "applications_count")


@pulumi.output_type
class GetGitopsClusterRequestClusterInfoCacheInfoResult(dict):
    def __init__(__self__, *,
                 apis_count: Optional[_builtins.str] = None,
                 last_cache_sync_time: Optional[_builtins.str] = None,
                 resources_count: Optional[_builtins.str] = None):
        """
        :param _builtins.str apis_count: Number of observed kubernetes API count.
        :param _builtins.str last_cache_sync_time: Time of most recent cache synchronization.
        :param _builtins.str resources_count: Number of observed kubernetes resources.
        """
        if apis_count is not None:
            pulumi.set(__self__, "apis_count", apis_count)
        if last_cache_sync_time is not None:
            pulumi.set(__self__, "last_cache_sync_time", last_cache_sync_time)
        if resources_count is not None:
            pulumi.set(__self__, "resources_count", resources_count)

    @_builtins.property
    @pulumi.getter(name="apisCount")
    def apis_count(self) -> Optional[_builtins.str]:
        """
        Number of observed kubernetes API count.
        """
        return pulumi.get(self, "apis_count")

    @_builtins.property
    @pulumi.getter(name="lastCacheSyncTime")
    def last_cache_sync_time(self) -> Optional[_builtins.str]:
        """
        Time of most recent cache synchronization.
        """
        return pulumi.get(self, "last_cache_sync_time")

    @_builtins.property
    @pulumi.getter(name="resourcesCount")
    def resources_count(self) -> Optional[_builtins.str]:
        """
        Number of observed kubernetes resources.
        """
        return pulumi.get(self, "resources_count")


@pulumi.output_type
class GetGitopsClusterRequestClusterInfoConnectionStateResult(dict):
    def __init__(__self__, *,
                 message: _builtins.str,
                 status: _builtins.str,
                 attempted_ats: Optional[Sequence['outputs.GetGitopsClusterRequestClusterInfoConnectionStateAttemptedAtResult']] = None):
        """
        :param _builtins.str message: Information about the connection status.
        :param _builtins.str status: Current status indicator of the connection.
        :param Sequence['GetGitopsClusterRequestClusterInfoConnectionStateAttemptedAtArgs'] attempted_ats: Time when cluster cache refresh has been requested.
        """
        pulumi.set(__self__, "message", message)
        pulumi.set(__self__, "status", status)
        if attempted_ats is not None:
            pulumi.set(__self__, "attempted_ats", attempted_ats)

    @_builtins.property
    @pulumi.getter
    def message(self) -> _builtins.str:
        """
        Information about the connection status.
        """
        return pulumi.get(self, "message")

    @_builtins.property
    @pulumi.getter
    def status(self) -> _builtins.str:
        """
        Current status indicator of the connection.
        """
        return pulumi.get(self, "status")

    @_builtins.property
    @pulumi.getter(name="attemptedAts")
    def attempted_ats(self) -> Optional[Sequence['outputs.GetGitopsClusterRequestClusterInfoConnectionStateAttemptedAtResult']]:
        """
        Time when cluster cache refresh has been requested.
        """
        return pulumi.get(self, "attempted_ats")


@pulumi.output_type
class GetGitopsClusterRequestClusterInfoConnectionStateAttemptedAtResult(dict):
    def __init__(__self__, *,
                 nanos: Optional[_builtins.int] = None,
                 seconds: Optional[_builtins.str] = None):
        """
        :param _builtins.int nanos: Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive. This field may be limited in precision depending on context.
        :param _builtins.str seconds: Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
        """
        if nanos is not None:
            pulumi.set(__self__, "nanos", nanos)
        if seconds is not None:
            pulumi.set(__self__, "seconds", seconds)

    @_builtins.property
    @pulumi.getter
    def nanos(self) -> Optional[_builtins.int]:
        """
        Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive. This field may be limited in precision depending on context.
        """
        return pulumi.get(self, "nanos")

    @_builtins.property
    @pulumi.getter
    def seconds(self) -> Optional[_builtins.str]:
        """
        Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
        """
        return pulumi.get(self, "seconds")


@pulumi.output_type
class GetGitopsClusterRequestClusterRefreshRequestedAtResult(dict):
    def __init__(__self__, *,
                 nanos: Optional[_builtins.int] = None,
                 seconds: Optional[_builtins.str] = None):
        """
        :param _builtins.int nanos: Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive. This field may be limited in precision depending on context.
        :param _builtins.str seconds: Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
        """
        if nanos is not None:
            pulumi.set(__self__, "nanos", nanos)
        if seconds is not None:
            pulumi.set(__self__, "seconds", seconds)

    @_builtins.property
    @pulumi.getter
    def nanos(self) -> Optional[_builtins.int]:
        """
        Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive. This field may be limited in precision depending on context.
        """
        return pulumi.get(self, "nanos")

    @_builtins.property
    @pulumi.getter
    def seconds(self) -> Optional[_builtins.str]:
        """
        Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
        """
        return pulumi.get(self, "seconds")


@pulumi.output_type
class GetGitopsGnupgRequestResult(dict):
    def __init__(__self__, *,
                 publickeys: Optional[Sequence['outputs.GetGitopsGnupgRequestPublickeyResult']] = None,
                 upsert: Optional[_builtins.bool] = None):
        """
        :param Sequence['GetGitopsGnupgRequestPublickeyArgs'] publickeys: Public key details.
        :param _builtins.bool upsert: Indicates if the GnuPG Key should be inserted if not present or updated if present.
        """
        if publickeys is not None:
            pulumi.set(__self__, "publickeys", publickeys)
        if upsert is not None:
            pulumi.set(__self__, "upsert", upsert)

    @_builtins.property
    @pulumi.getter
    def publickeys(self) -> Optional[Sequence['outputs.GetGitopsGnupgRequestPublickeyResult']]:
        """
        Public key details.
        """
        return pulumi.get(self, "publickeys")

    @_builtins.property
    @pulumi.getter
    def upsert(self) -> Optional[_builtins.bool]:
        """
        Indicates if the GnuPG Key should be inserted if not present or updated if present.
        """
        return pulumi.get(self, "upsert")


@pulumi.output_type
class GetGitopsGnupgRequestPublickeyResult(dict):
    def __init__(__self__, *,
                 fingerprint: Optional[_builtins.str] = None,
                 key_data: Optional[_builtins.str] = None,
                 key_id: Optional[_builtins.str] = None,
                 owner: Optional[_builtins.str] = None,
                 sub_type: Optional[_builtins.str] = None,
                 trust: Optional[_builtins.str] = None):
        """
        :param _builtins.str fingerprint: Fingerprint is the fingerprint of the key
        :param _builtins.str key_data: KeyData holds the raw key data, in base64 encoded format.
        :param _builtins.str key_id: KeyID specifies the key ID, in hexadecimal string format.
        :param _builtins.str owner: Owner holds the owner identification, e.g. a name and e-mail address
        :param _builtins.str sub_type: SubType holds the key's sub type
        :param _builtins.str trust: Trust holds the level of trust assigned to this key
        """
        if fingerprint is not None:
            pulumi.set(__self__, "fingerprint", fingerprint)
        if key_data is not None:
            pulumi.set(__self__, "key_data", key_data)
        if key_id is not None:
            pulumi.set(__self__, "key_id", key_id)
        if owner is not None:
            pulumi.set(__self__, "owner", owner)
        if sub_type is not None:
            pulumi.set(__self__, "sub_type", sub_type)
        if trust is not None:
            pulumi.set(__self__, "trust", trust)

    @_builtins.property
    @pulumi.getter
    def fingerprint(self) -> Optional[_builtins.str]:
        """
        Fingerprint is the fingerprint of the key
        """
        return pulumi.get(self, "fingerprint")

    @_builtins.property
    @pulumi.getter(name="keyData")
    def key_data(self) -> Optional[_builtins.str]:
        """
        KeyData holds the raw key data, in base64 encoded format.
        """
        return pulumi.get(self, "key_data")

    @_builtins.property
    @pulumi.getter(name="keyId")
    def key_id(self) -> Optional[_builtins.str]:
        """
        KeyID specifies the key ID, in hexadecimal string format.
        """
        return pulumi.get(self, "key_id")

    @_builtins.property
    @pulumi.getter
    def owner(self) -> Optional[_builtins.str]:
        """
        Owner holds the owner identification, e.g. a name and e-mail address
        """
        return pulumi.get(self, "owner")

    @_builtins.property
    @pulumi.getter(name="subType")
    def sub_type(self) -> Optional[_builtins.str]:
        """
        SubType holds the key's sub type
        """
        return pulumi.get(self, "sub_type")

    @_builtins.property
    @pulumi.getter
    def trust(self) -> Optional[_builtins.str]:
        """
        Trust holds the level of trust assigned to this key
        """
        return pulumi.get(self, "trust")


@pulumi.output_type
class GetGitopsRepoCredCredResult(dict):
    def __init__(__self__, *,
                 enable_oci: _builtins.bool,
                 github_app_enterprise_base_url: _builtins.str,
                 github_app_id: _builtins.str,
                 github_app_installation_id: _builtins.str,
                 github_app_private_key: _builtins.str,
                 password: _builtins.str,
                 ssh_private_key: _builtins.str,
                 tls_client_cert_data: _builtins.str,
                 tls_client_cert_key: _builtins.str,
                 type: _builtins.str,
                 url: _builtins.str,
                 username: _builtins.str):
        """
        :param _builtins.bool enable_oci: Specifies whether helm-oci support should be enabled for this repo.
        :param _builtins.str github_app_enterprise_base_url: Specifies the GitHub API URL for GitHub app authentication.
        :param _builtins.str github_app_id: Specifies the Github App ID of the app used to access the repo for GitHub app authentication.
        :param _builtins.str github_app_installation_id: Specifies the ID of the installed GitHub App for GitHub app authentication.
        :param _builtins.str github_app_private_key: github*app*private_key specifies the private key PEM data for authentication via GitHub app.
        :param _builtins.str password: Password or PAT to be used for authenticating the remote repository.
        :param _builtins.str ssh_private_key: SSH Key in PEM format for authenticating the repository. Used only for Git repository.
        :param _builtins.str tls_client_cert_data: Certificate in PEM format for authenticating at the repo server. This is used for mTLS.
        :param _builtins.str tls_client_cert_key: Private key in PEM format for authenticating at the repo server. This is used for mTLS.
        :param _builtins.str type: Type specifies the type of the repoCreds.Can be either 'git' or 'helm. 'git' is assumed if empty or absent
        :param _builtins.str url: URL of the remote repository. Make sure you pass at least an org, this will not work if you just provide the host, for eg. "https://github.com"
        :param _builtins.str username: Username to be used for authenticating the remote repository.
        """
        pulumi.set(__self__, "enable_oci", enable_oci)
        pulumi.set(__self__, "github_app_enterprise_base_url", github_app_enterprise_base_url)
        pulumi.set(__self__, "github_app_id", github_app_id)
        pulumi.set(__self__, "github_app_installation_id", github_app_installation_id)
        pulumi.set(__self__, "github_app_private_key", github_app_private_key)
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "ssh_private_key", ssh_private_key)
        pulumi.set(__self__, "tls_client_cert_data", tls_client_cert_data)
        pulumi.set(__self__, "tls_client_cert_key", tls_client_cert_key)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "url", url)
        pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="enableOci")
    def enable_oci(self) -> _builtins.bool:
        """
        Specifies whether helm-oci support should be enabled for this repo.
        """
        return pulumi.get(self, "enable_oci")

    @_builtins.property
    @pulumi.getter(name="githubAppEnterpriseBaseUrl")
    def github_app_enterprise_base_url(self) -> _builtins.str:
        """
        Specifies the GitHub API URL for GitHub app authentication.
        """
        return pulumi.get(self, "github_app_enterprise_base_url")

    @_builtins.property
    @pulumi.getter(name="githubAppId")
    def github_app_id(self) -> _builtins.str:
        """
        Specifies the Github App ID of the app used to access the repo for GitHub app authentication.
        """
        return pulumi.get(self, "github_app_id")

    @_builtins.property
    @pulumi.getter(name="githubAppInstallationId")
    def github_app_installation_id(self) -> _builtins.str:
        """
        Specifies the ID of the installed GitHub App for GitHub app authentication.
        """
        return pulumi.get(self, "github_app_installation_id")

    @_builtins.property
    @pulumi.getter(name="githubAppPrivateKey")
    def github_app_private_key(self) -> _builtins.str:
        """
        github*app*private_key specifies the private key PEM data for authentication via GitHub app.
        """
        return pulumi.get(self, "github_app_private_key")

    @_builtins.property
    @pulumi.getter
    def password(self) -> _builtins.str:
        """
        Password or PAT to be used for authenticating the remote repository.
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter(name="sshPrivateKey")
    def ssh_private_key(self) -> _builtins.str:
        """
        SSH Key in PEM format for authenticating the repository. Used only for Git repository.
        """
        return pulumi.get(self, "ssh_private_key")

    @_builtins.property
    @pulumi.getter(name="tlsClientCertData")
    def tls_client_cert_data(self) -> _builtins.str:
        """
        Certificate in PEM format for authenticating at the repo server. This is used for mTLS.
        """
        return pulumi.get(self, "tls_client_cert_data")

    @_builtins.property
    @pulumi.getter(name="tlsClientCertKey")
    def tls_client_cert_key(self) -> _builtins.str:
        """
        Private key in PEM format for authenticating at the repo server. This is used for mTLS.
        """
        return pulumi.get(self, "tls_client_cert_key")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type specifies the type of the repoCreds.Can be either 'git' or 'helm. 'git' is assumed if empty or absent
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def url(self) -> _builtins.str:
        """
        URL of the remote repository. Make sure you pass at least an org, this will not work if you just provide the host, for eg. "https://github.com"
        """
        return pulumi.get(self, "url")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to be used for authenticating the remote repository.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GetGitopsRepositoryRepoResult(dict):
    def __init__(__self__, *,
                 connection_type: _builtins.str,
                 enable_lfs: _builtins.bool,
                 enable_oci: _builtins.bool,
                 github_app_enterprise_base_url: _builtins.str,
                 github_app_id: _builtins.str,
                 github_app_installation_id: _builtins.str,
                 github_app_private_key: _builtins.str,
                 inherited_creds: _builtins.bool,
                 insecure: _builtins.bool,
                 insecure_ignore_host_key: _builtins.bool,
                 name: _builtins.str,
                 password: _builtins.str,
                 project: _builtins.str,
                 proxy: _builtins.str,
                 repo: _builtins.str,
                 ssh_private_key: _builtins.str,
                 tls_client_cert_data: _builtins.str,
                 tls_client_cert_key: _builtins.str,
                 type_: _builtins.str,
                 username: _builtins.str):
        """
        :param _builtins.str connection_type: Identifies the authentication method used to connect to the repository. Possible values: "HTTPS" "SSH" "GITHUB" "HTTPS_ANONYMOUS_CONNECTION_TYPE"
        :param _builtins.bool enable_lfs: Indicates if git-lfs support must be enabled for this repo. This is valid only for Git repositories.
        :param _builtins.bool enable_oci: Indicates if helm-oci support must be enabled for this repo.
        :param _builtins.str github_app_enterprise_base_url: Base URL of GitHub Enterprise installation. If left empty, this defaults to https://api.github.com.
        :param _builtins.str github_app_id: Id of the GitHub app used to access the repo.
        :param _builtins.str github_app_installation_id: Installation id of the GitHub app used to access the repo.
        :param _builtins.str github_app_private_key: GitHub app private key PEM data.
        :param _builtins.bool inherited_creds: Indicates if the credentials were inherited from a repository credential.
        :param _builtins.bool insecure: Indicates if the connection to the repository ignores any errors when verifying TLS certificates or SSH host keys.
        :param _builtins.bool insecure_ignore_host_key: Indicates if InsecureIgnoreHostKey should be used. Insecure is favored used only for git repos. Deprecated.
        :param _builtins.str name: Name to be used for this repo. Only used with Helm repos.
        :param _builtins.str password: Password or PAT to be used for authenticating the remote repository.
        :param _builtins.str project: The ArgoCD project name corresponding to this GitOps repository. An empty string means that the GitOps repository belongs to the default project created by Harness.
        :param _builtins.str proxy: The HTTP/HTTPS proxy used to access the repo.
        :param _builtins.str repo: URL to the remote repository.
        :param _builtins.str ssh_private_key: SSH Key in PEM format for authenticating the repository. Used only for Git repository.
        :param _builtins.str tls_client_cert_data: Certificate in PEM format for authenticating at the repo server. This is used for mTLS. The value should be base64 encoded.
        :param _builtins.str tls_client_cert_key: Private key in PEM format for authenticating at the repo server. This is used for mTLS. The value should be base64 encoded.
        :param _builtins.str type_: Type specifies the type of the repo. Can be either "git" or "helm. "git" is assumed if empty or absent.
        :param _builtins.str username: Username to be used for authenticating the remote repository.
        """
        pulumi.set(__self__, "connection_type", connection_type)
        pulumi.set(__self__, "enable_lfs", enable_lfs)
        pulumi.set(__self__, "enable_oci", enable_oci)
        pulumi.set(__self__, "github_app_enterprise_base_url", github_app_enterprise_base_url)
        pulumi.set(__self__, "github_app_id", github_app_id)
        pulumi.set(__self__, "github_app_installation_id", github_app_installation_id)
        pulumi.set(__self__, "github_app_private_key", github_app_private_key)
        pulumi.set(__self__, "inherited_creds", inherited_creds)
        pulumi.set(__self__, "insecure", insecure)
        pulumi.set(__self__, "insecure_ignore_host_key", insecure_ignore_host_key)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "proxy", proxy)
        pulumi.set(__self__, "repo", repo)
        pulumi.set(__self__, "ssh_private_key", ssh_private_key)
        pulumi.set(__self__, "tls_client_cert_data", tls_client_cert_data)
        pulumi.set(__self__, "tls_client_cert_key", tls_client_cert_key)
        pulumi.set(__self__, "type_", type_)
        pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter(name="connectionType")
    def connection_type(self) -> _builtins.str:
        """
        Identifies the authentication method used to connect to the repository. Possible values: "HTTPS" "SSH" "GITHUB" "HTTPS_ANONYMOUS_CONNECTION_TYPE"
        """
        return pulumi.get(self, "connection_type")

    @_builtins.property
    @pulumi.getter(name="enableLfs")
    def enable_lfs(self) -> _builtins.bool:
        """
        Indicates if git-lfs support must be enabled for this repo. This is valid only for Git repositories.
        """
        return pulumi.get(self, "enable_lfs")

    @_builtins.property
    @pulumi.getter(name="enableOci")
    def enable_oci(self) -> _builtins.bool:
        """
        Indicates if helm-oci support must be enabled for this repo.
        """
        return pulumi.get(self, "enable_oci")

    @_builtins.property
    @pulumi.getter(name="githubAppEnterpriseBaseUrl")
    def github_app_enterprise_base_url(self) -> _builtins.str:
        """
        Base URL of GitHub Enterprise installation. If left empty, this defaults to https://api.github.com.
        """
        return pulumi.get(self, "github_app_enterprise_base_url")

    @_builtins.property
    @pulumi.getter(name="githubAppId")
    def github_app_id(self) -> _builtins.str:
        """
        Id of the GitHub app used to access the repo.
        """
        return pulumi.get(self, "github_app_id")

    @_builtins.property
    @pulumi.getter(name="githubAppInstallationId")
    def github_app_installation_id(self) -> _builtins.str:
        """
        Installation id of the GitHub app used to access the repo.
        """
        return pulumi.get(self, "github_app_installation_id")

    @_builtins.property
    @pulumi.getter(name="githubAppPrivateKey")
    def github_app_private_key(self) -> _builtins.str:
        """
        GitHub app private key PEM data.
        """
        return pulumi.get(self, "github_app_private_key")

    @_builtins.property
    @pulumi.getter(name="inheritedCreds")
    def inherited_creds(self) -> _builtins.bool:
        """
        Indicates if the credentials were inherited from a repository credential.
        """
        return pulumi.get(self, "inherited_creds")

    @_builtins.property
    @pulumi.getter
    def insecure(self) -> _builtins.bool:
        """
        Indicates if the connection to the repository ignores any errors when verifying TLS certificates or SSH host keys.
        """
        return pulumi.get(self, "insecure")

    @_builtins.property
    @pulumi.getter(name="insecureIgnoreHostKey")
    def insecure_ignore_host_key(self) -> _builtins.bool:
        """
        Indicates if InsecureIgnoreHostKey should be used. Insecure is favored used only for git repos. Deprecated.
        """
        return pulumi.get(self, "insecure_ignore_host_key")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name to be used for this repo. Only used with Helm repos.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def password(self) -> _builtins.str:
        """
        Password or PAT to be used for authenticating the remote repository.
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        The ArgoCD project name corresponding to this GitOps repository. An empty string means that the GitOps repository belongs to the default project created by Harness.
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def proxy(self) -> _builtins.str:
        """
        The HTTP/HTTPS proxy used to access the repo.
        """
        return pulumi.get(self, "proxy")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> _builtins.str:
        """
        URL to the remote repository.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter(name="sshPrivateKey")
    def ssh_private_key(self) -> _builtins.str:
        """
        SSH Key in PEM format for authenticating the repository. Used only for Git repository.
        """
        return pulumi.get(self, "ssh_private_key")

    @_builtins.property
    @pulumi.getter(name="tlsClientCertData")
    def tls_client_cert_data(self) -> _builtins.str:
        """
        Certificate in PEM format for authenticating at the repo server. This is used for mTLS. The value should be base64 encoded.
        """
        return pulumi.get(self, "tls_client_cert_data")

    @_builtins.property
    @pulumi.getter(name="tlsClientCertKey")
    def tls_client_cert_key(self) -> _builtins.str:
        """
        Private key in PEM format for authenticating at the repo server. This is used for mTLS. The value should be base64 encoded.
        """
        return pulumi.get(self, "tls_client_cert_key")

    @_builtins.property
    @pulumi.getter
    def type_(self) -> _builtins.str:
        """
        Type specifies the type of the repo. Can be either "git" or "helm. "git" is assumed if empty or absent.
        """
        return pulumi.get(self, "type_")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to be used for authenticating the remote repository.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GetHarRegistryConfigResult(dict):
    def __init__(__self__, *,
                 type: _builtins.str,
                 auth_type: Optional[_builtins.str] = None,
                 auths: Optional[Sequence['outputs.GetHarRegistryConfigAuthResult']] = None,
                 source: Optional[_builtins.str] = None,
                 upstream_proxies: Optional[Sequence[_builtins.str]] = None,
                 url: Optional[_builtins.str] = None):
        """
        :param _builtins.str type: Type of registry (VIRTUAL or UPSTREAM)
        :param _builtins.str auth_type: Type of authentication for UPSTREAM registry type (UserPassword, Anonymous)
        :param Sequence['GetHarRegistryConfigAuthArgs'] auths: Authentication configuration for UPSTREAM registry type
        :param _builtins.str source: Upstream source
        :param Sequence[_builtins.str] upstream_proxies: List of upstream proxies for VIRTUAL registry type
        :param _builtins.str url: URL of the upstream (required if type=UPSTREAM & package_type=HELM)
        """
        pulumi.set(__self__, "type", type)
        if auth_type is not None:
            pulumi.set(__self__, "auth_type", auth_type)
        if auths is not None:
            pulumi.set(__self__, "auths", auths)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if upstream_proxies is not None:
            pulumi.set(__self__, "upstream_proxies", upstream_proxies)
        if url is not None:
            pulumi.set(__self__, "url", url)

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of registry (VIRTUAL or UPSTREAM)
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> Optional[_builtins.str]:
        """
        Type of authentication for UPSTREAM registry type (UserPassword, Anonymous)
        """
        return pulumi.get(self, "auth_type")

    @_builtins.property
    @pulumi.getter
    def auths(self) -> Optional[Sequence['outputs.GetHarRegistryConfigAuthResult']]:
        """
        Authentication configuration for UPSTREAM registry type
        """
        return pulumi.get(self, "auths")

    @_builtins.property
    @pulumi.getter
    def source(self) -> Optional[_builtins.str]:
        """
        Upstream source
        """
        return pulumi.get(self, "source")

    @_builtins.property
    @pulumi.getter(name="upstreamProxies")
    def upstream_proxies(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of upstream proxies for VIRTUAL registry type
        """
        return pulumi.get(self, "upstream_proxies")

    @_builtins.property
    @pulumi.getter
    def url(self) -> Optional[_builtins.str]:
        """
        URL of the upstream (required if type=UPSTREAM & package_type=HELM)
        """
        return pulumi.get(self, "url")


@pulumi.output_type
class GetHarRegistryConfigAuthResult(dict):
    def __init__(__self__, *,
                 auth_type: _builtins.str,
                 access_key: Optional[_builtins.str] = None,
                 access_key_identifier: Optional[_builtins.str] = None,
                 access_key_secret_path: Optional[_builtins.str] = None,
                 secret_identifier: Optional[_builtins.str] = None,
                 secret_key_identifier: Optional[_builtins.str] = None,
                 secret_key_secret_path: Optional[_builtins.str] = None,
                 secret_space_path: Optional[_builtins.str] = None,
                 user_name: Optional[_builtins.str] = None):
        """
        :param _builtins.str auth_type: Type of authentication (UserPassword, Anonymous)
        :param _builtins.str secret_identifier: Secret identifier for UserPassword auth type
        :param _builtins.str secret_space_path: Secret space path for UserPassword auth type
        :param _builtins.str user_name: User name for UserPassword auth type
        """
        pulumi.set(__self__, "auth_type", auth_type)
        if access_key is not None:
            pulumi.set(__self__, "access_key", access_key)
        if access_key_identifier is not None:
            pulumi.set(__self__, "access_key_identifier", access_key_identifier)
        if access_key_secret_path is not None:
            pulumi.set(__self__, "access_key_secret_path", access_key_secret_path)
        if secret_identifier is not None:
            pulumi.set(__self__, "secret_identifier", secret_identifier)
        if secret_key_identifier is not None:
            pulumi.set(__self__, "secret_key_identifier", secret_key_identifier)
        if secret_key_secret_path is not None:
            pulumi.set(__self__, "secret_key_secret_path", secret_key_secret_path)
        if secret_space_path is not None:
            pulumi.set(__self__, "secret_space_path", secret_space_path)
        if user_name is not None:
            pulumi.set(__self__, "user_name", user_name)

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> _builtins.str:
        """
        Type of authentication (UserPassword, Anonymous)
        """
        return pulumi.get(self, "auth_type")

    @_builtins.property
    @pulumi.getter(name="accessKey")
    def access_key(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "access_key")

    @_builtins.property
    @pulumi.getter(name="accessKeyIdentifier")
    def access_key_identifier(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "access_key_identifier")

    @_builtins.property
    @pulumi.getter(name="accessKeySecretPath")
    def access_key_secret_path(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "access_key_secret_path")

    @_builtins.property
    @pulumi.getter(name="secretIdentifier")
    def secret_identifier(self) -> Optional[_builtins.str]:
        """
        Secret identifier for UserPassword auth type
        """
        return pulumi.get(self, "secret_identifier")

    @_builtins.property
    @pulumi.getter(name="secretKeyIdentifier")
    def secret_key_identifier(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "secret_key_identifier")

    @_builtins.property
    @pulumi.getter(name="secretKeySecretPath")
    def secret_key_secret_path(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "secret_key_secret_path")

    @_builtins.property
    @pulumi.getter(name="secretSpacePath")
    def secret_space_path(self) -> Optional[_builtins.str]:
        """
        Secret space path for UserPassword auth type
        """
        return pulumi.get(self, "secret_space_path")

    @_builtins.property
    @pulumi.getter(name="userName")
    def user_name(self) -> Optional[_builtins.str]:
        """
        User name for UserPassword auth type
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetHelmConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetIdpCatalogEntityGitDetailResult(dict):
    def __init__(__self__, *,
                 base_branch: _builtins.str,
                 branch_name: _builtins.str,
                 commit_message: _builtins.str,
                 connector_ref: _builtins.str,
                 file_path: _builtins.str,
                 is_harness_code_repo: _builtins.bool,
                 last_commit_id: _builtins.str,
                 last_object_id: _builtins.str,
                 repo_name: _builtins.str,
                 store_type: _builtins.str):
        """
        :param _builtins.str base_branch: Name of the default branch (this checks out a new branch titled by branch_name).
        :param _builtins.str branch_name: Name of the branch.
        :param _builtins.str commit_message: Commit message used for the merge commit.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for importing entity from Git To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.bool is_harness_code_repo: If the repo is a Harness Code repo
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating Pipeline.
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str store_type: Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        pulumi.set(__self__, "base_branch", base_branch)
        pulumi.set(__self__, "branch_name", branch_name)
        pulumi.set(__self__, "commit_message", commit_message)
        pulumi.set(__self__, "connector_ref", connector_ref)
        pulumi.set(__self__, "file_path", file_path)
        pulumi.set(__self__, "is_harness_code_repo", is_harness_code_repo)
        pulumi.set(__self__, "last_commit_id", last_commit_id)
        pulumi.set(__self__, "last_object_id", last_object_id)
        pulumi.set(__self__, "repo_name", repo_name)
        pulumi.set(__self__, "store_type", store_type)

    @_builtins.property
    @pulumi.getter(name="baseBranch")
    def base_branch(self) -> _builtins.str:
        """
        Name of the default branch (this checks out a new branch titled by branch_name).
        """
        return pulumi.get(self, "base_branch")

    @_builtins.property
    @pulumi.getter(name="branchName")
    def branch_name(self) -> _builtins.str:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch_name")

    @_builtins.property
    @pulumi.getter(name="commitMessage")
    def commit_message(self) -> _builtins.str:
        """
        Commit message used for the merge commit.
        """
        return pulumi.get(self, "commit_message")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> _builtins.str:
        """
        Identifier of the Harness Connector used for importing entity from Git To reference a connector at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a connector at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> _builtins.str:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="isHarnessCodeRepo")
    def is_harness_code_repo(self) -> _builtins.bool:
        """
        If the repo is a Harness Code repo
        """
        return pulumi.get(self, "is_harness_code_repo")

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> _builtins.str:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> _builtins.str:
        """
        Last object identifier (for Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> _builtins.str:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="storeType")
    def store_type(self) -> _builtins.str:
        """
        Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        return pulumi.get(self, "store_type")


@pulumi.output_type
class GetInfraModuleTestingMetadataResult(dict):
    def __init__(__self__, *,
                 account: _builtins.str,
                 org: _builtins.str,
                 pipelines: Sequence[_builtins.str],
                 project: _builtins.str,
                 provider_connector: _builtins.str,
                 provisioner_type: _builtins.str,
                 provisioner_version: _builtins.str,
                 release_pipeline: _builtins.str):
        """
        :param _builtins.str account: Account is the internal customer account ID
        :param _builtins.str org: Organization identifier
        :param Sequence[_builtins.str] pipelines: Pipelines where the testing is enabled
        :param _builtins.str project: Project identifier
        :param _builtins.str provider_connector: Provider connector for testing purposes
        :param _builtins.str provisioner_type: Provisioner type for testing purposes
        :param _builtins.str provisioner_version: Provisioner version for testing purposes
        :param _builtins.str release_pipeline: Release pipeline
        """
        pulumi.set(__self__, "account", account)
        pulumi.set(__self__, "org", org)
        pulumi.set(__self__, "pipelines", pipelines)
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "provider_connector", provider_connector)
        pulumi.set(__self__, "provisioner_type", provisioner_type)
        pulumi.set(__self__, "provisioner_version", provisioner_version)
        pulumi.set(__self__, "release_pipeline", release_pipeline)

    @_builtins.property
    @pulumi.getter
    def account(self) -> _builtins.str:
        """
        Account is the internal customer account ID
        """
        return pulumi.get(self, "account")

    @_builtins.property
    @pulumi.getter
    def org(self) -> _builtins.str:
        """
        Organization identifier
        """
        return pulumi.get(self, "org")

    @_builtins.property
    @pulumi.getter
    def pipelines(self) -> Sequence[_builtins.str]:
        """
        Pipelines where the testing is enabled
        """
        return pulumi.get(self, "pipelines")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project identifier
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="providerConnector")
    def provider_connector(self) -> _builtins.str:
        """
        Provider connector for testing purposes
        """
        return pulumi.get(self, "provider_connector")

    @_builtins.property
    @pulumi.getter(name="provisionerType")
    def provisioner_type(self) -> _builtins.str:
        """
        Provisioner type for testing purposes
        """
        return pulumi.get(self, "provisioner_type")

    @_builtins.property
    @pulumi.getter(name="provisionerVersion")
    def provisioner_version(self) -> _builtins.str:
        """
        Provisioner version for testing purposes
        """
        return pulumi.get(self, "provisioner_version")

    @_builtins.property
    @pulumi.getter(name="releasePipeline")
    def release_pipeline(self) -> _builtins.str:
        """
        Release pipeline
        """
        return pulumi.get(self, "release_pipeline")


@pulumi.output_type
class GetInfraModuleTestingTestingMetadataResult(dict):
    def __init__(__self__, *,
                 account: _builtins.str,
                 org: _builtins.str,
                 pipelines: Sequence[_builtins.str],
                 project: _builtins.str,
                 provider_connector: _builtins.str,
                 provisioner_type: _builtins.str,
                 provisioner_version: _builtins.str,
                 release_pipeline: _builtins.str):
        """
        :param _builtins.str account: Account is the internal customer account ID
        :param _builtins.str org: Organization identifier
        :param Sequence[_builtins.str] pipelines: Pipelines where the testing is enabled
        :param _builtins.str project: Project identifier
        :param _builtins.str provider_connector: Provider connector for testing purposes
        :param _builtins.str provisioner_type: Provisioner type for testing purposes
        :param _builtins.str provisioner_version: Provisioner version for testing purposes
        :param _builtins.str release_pipeline: Release pipeline
        """
        pulumi.set(__self__, "account", account)
        pulumi.set(__self__, "org", org)
        pulumi.set(__self__, "pipelines", pipelines)
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "provider_connector", provider_connector)
        pulumi.set(__self__, "provisioner_type", provisioner_type)
        pulumi.set(__self__, "provisioner_version", provisioner_version)
        pulumi.set(__self__, "release_pipeline", release_pipeline)

    @_builtins.property
    @pulumi.getter
    def account(self) -> _builtins.str:
        """
        Account is the internal customer account ID
        """
        return pulumi.get(self, "account")

    @_builtins.property
    @pulumi.getter
    def org(self) -> _builtins.str:
        """
        Organization identifier
        """
        return pulumi.get(self, "org")

    @_builtins.property
    @pulumi.getter
    def pipelines(self) -> Sequence[_builtins.str]:
        """
        Pipelines where the testing is enabled
        """
        return pulumi.get(self, "pipelines")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project identifier
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter(name="providerConnector")
    def provider_connector(self) -> _builtins.str:
        """
        Provider connector for testing purposes
        """
        return pulumi.get(self, "provider_connector")

    @_builtins.property
    @pulumi.getter(name="provisionerType")
    def provisioner_type(self) -> _builtins.str:
        """
        Provisioner type for testing purposes
        """
        return pulumi.get(self, "provisioner_type")

    @_builtins.property
    @pulumi.getter(name="provisionerVersion")
    def provisioner_version(self) -> _builtins.str:
        """
        Provisioner version for testing purposes
        """
        return pulumi.get(self, "provisioner_version")

    @_builtins.property
    @pulumi.getter(name="releasePipeline")
    def release_pipeline(self) -> _builtins.str:
        """
        Release pipeline
        """
        return pulumi.get(self, "release_pipeline")


@pulumi.output_type
class GetInfraModulesModuleResult(dict):
    def __init__(__self__, *,
                 account: _builtins.str,
                 created: _builtins.int,
                 description: _builtins.str,
                 id: _builtins.str,
                 name: _builtins.str,
                 org: _builtins.str,
                 project: _builtins.str,
                 repository: _builtins.str,
                 repository_branch: _builtins.str,
                 repository_commit: _builtins.str,
                 repository_connector: _builtins.str,
                 repository_path: _builtins.str,
                 repository_url: _builtins.str,
                 synced: _builtins.int,
                 system: _builtins.str,
                 tags: _builtins.str,
                 testing_enabled: _builtins.bool,
                 updated: _builtins.int):
        """
        :param _builtins.str account: Account that owns the module
        :param _builtins.int created: Timestamp when the module was created
        :param _builtins.str description: Description of the module
        :param _builtins.str id: Identifier of the module
        :param _builtins.str name: Name of the module
        :param _builtins.str org: Organization that owns the module
        :param _builtins.str project: Project that owns the module
        :param _builtins.str repository: Repository where the module is stored
        :param _builtins.str repository_branch: Repository branch
        :param _builtins.str repository_commit: Repository commit
        :param _builtins.str repository_connector: Repository connector reference
        :param _builtins.str repository_path: Path within repository
        :param _builtins.str repository_url: Repository URL
        :param _builtins.int synced: Timestamp when the module was last synced
        :param _builtins.str system: Provider of the module
        :param _builtins.str tags: Tags associated with the module
        :param _builtins.bool testing_enabled: Whether testing is enabled for the module
        :param _builtins.int updated: Timestamp when the module was last modified
        """
        pulumi.set(__self__, "account", account)
        pulumi.set(__self__, "created", created)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "org", org)
        pulumi.set(__self__, "project", project)
        pulumi.set(__self__, "repository", repository)
        pulumi.set(__self__, "repository_branch", repository_branch)
        pulumi.set(__self__, "repository_commit", repository_commit)
        pulumi.set(__self__, "repository_connector", repository_connector)
        pulumi.set(__self__, "repository_path", repository_path)
        pulumi.set(__self__, "repository_url", repository_url)
        pulumi.set(__self__, "synced", synced)
        pulumi.set(__self__, "system", system)
        pulumi.set(__self__, "tags", tags)
        pulumi.set(__self__, "testing_enabled", testing_enabled)
        pulumi.set(__self__, "updated", updated)

    @_builtins.property
    @pulumi.getter
    def account(self) -> _builtins.str:
        """
        Account that owns the module
        """
        return pulumi.get(self, "account")

    @_builtins.property
    @pulumi.getter
    def created(self) -> _builtins.int:
        """
        Timestamp when the module was created
        """
        return pulumi.get(self, "created")

    @_builtins.property
    @pulumi.getter
    def description(self) -> _builtins.str:
        """
        Description of the module
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter
    def id(self) -> _builtins.str:
        """
        Identifier of the module
        """
        return pulumi.get(self, "id")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the module
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def org(self) -> _builtins.str:
        """
        Organization that owns the module
        """
        return pulumi.get(self, "org")

    @_builtins.property
    @pulumi.getter
    def project(self) -> _builtins.str:
        """
        Project that owns the module
        """
        return pulumi.get(self, "project")

    @_builtins.property
    @pulumi.getter
    def repository(self) -> _builtins.str:
        """
        Repository where the module is stored
        """
        return pulumi.get(self, "repository")

    @_builtins.property
    @pulumi.getter(name="repositoryBranch")
    def repository_branch(self) -> _builtins.str:
        """
        Repository branch
        """
        return pulumi.get(self, "repository_branch")

    @_builtins.property
    @pulumi.getter(name="repositoryCommit")
    def repository_commit(self) -> _builtins.str:
        """
        Repository commit
        """
        return pulumi.get(self, "repository_commit")

    @_builtins.property
    @pulumi.getter(name="repositoryConnector")
    def repository_connector(self) -> _builtins.str:
        """
        Repository connector reference
        """
        return pulumi.get(self, "repository_connector")

    @_builtins.property
    @pulumi.getter(name="repositoryPath")
    def repository_path(self) -> _builtins.str:
        """
        Path within repository
        """
        return pulumi.get(self, "repository_path")

    @_builtins.property
    @pulumi.getter(name="repositoryUrl")
    def repository_url(self) -> _builtins.str:
        """
        Repository URL
        """
        return pulumi.get(self, "repository_url")

    @_builtins.property
    @pulumi.getter
    def synced(self) -> _builtins.int:
        """
        Timestamp when the module was last synced
        """
        return pulumi.get(self, "synced")

    @_builtins.property
    @pulumi.getter
    def system(self) -> _builtins.str:
        """
        Provider of the module
        """
        return pulumi.get(self, "system")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> _builtins.str:
        """
        Tags associated with the module
        """
        return pulumi.get(self, "tags")

    @_builtins.property
    @pulumi.getter(name="testingEnabled")
    def testing_enabled(self) -> _builtins.bool:
        """
        Whether testing is enabled for the module
        """
        return pulumi.get(self, "testing_enabled")

    @_builtins.property
    @pulumi.getter
    def updated(self) -> _builtins.int:
        """
        Timestamp when the module was last modified
        """
        return pulumi.get(self, "updated")


@pulumi.output_type
class GetInfraVariableSetConnectorResult(dict):
    def __init__(__self__, *,
                 connector_ref: _builtins.str,
                 type: _builtins.str):
        """
        :param _builtins.str connector_ref: Connector Ref is the reference to the connector
        :param _builtins.str type: Type is the connector type of the connector. Supported types: aws, azure, gcp
        """
        pulumi.set(__self__, "connector_ref", connector_ref)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> _builtins.str:
        """
        Connector Ref is the reference to the connector
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type is the connector type of the connector. Supported types: aws, azure, gcp
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetInfraVariableSetEnvironmentVariableResult(dict):
    def __init__(__self__, *,
                 key: _builtins.str,
                 value: _builtins.str,
                 value_type: _builtins.str):
        """
        :param _builtins.str key: Key is the identifier for the variable. Must be unique within the Variable Set.
        :param _builtins.str value: Value is the value of the variable. For string value types this field should contain the value of the variable. For secret value types this should contain a reference to a valid harness secret.
        :param _builtins.str value_type: Value type indicates the value type of the variable. Currently we support string and secret.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "value_type", value_type)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key is the identifier for the variable. Must be unique within the Variable Set.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        Value is the value of the variable. For string value types this field should contain the value of the variable. For secret value types this should contain a reference to a valid harness secret.
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueType")
    def value_type(self) -> _builtins.str:
        """
        Value type indicates the value type of the variable. Currently we support string and secret.
        """
        return pulumi.get(self, "value_type")


@pulumi.output_type
class GetInfraVariableSetTerraformVariableResult(dict):
    def __init__(__self__, *,
                 key: _builtins.str,
                 value: _builtins.str,
                 value_type: _builtins.str):
        """
        :param _builtins.str key: Key is the identifier for the variable. Must be unique within the Variable Set.
        :param _builtins.str value: Value is the value of the variable. For string value types this field should contain the value of the variable. For secret value types this should contain a reference to a valid harness secret.
        :param _builtins.str value_type: Value type indicates the value type of the variable. Currently we support string and secret.
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "value_type", value_type)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key is the identifier for the variable. Must be unique within the Variable Set.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        Value is the value of the variable. For string value types this field should contain the value of the variable. For secret value types this should contain a reference to a valid harness secret.
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueType")
    def value_type(self) -> _builtins.str:
        """
        Value type indicates the value type of the variable. Currently we support string and secret.
        """
        return pulumi.get(self, "value_type")


@pulumi.output_type
class GetInfraVariableSetTerraformVariableFileResult(dict):
    def __init__(__self__, *,
                 repository: _builtins.str,
                 repository_connector: _builtins.str,
                 repository_branch: Optional[_builtins.str] = None,
                 repository_commit: Optional[_builtins.str] = None,
                 repository_path: Optional[_builtins.str] = None,
                 repository_sha: Optional[_builtins.str] = None):
        """
        :param _builtins.str repository: Repository is the name of the repository to fetch the code from.
        :param _builtins.str repository_connector: Repository connector is the reference to the connector used to fetch the variables.
        :param _builtins.str repository_branch: Repository branch is the name of the branch to fetch the variables from. This cannot be set if repository commit or sha is set
        :param _builtins.str repository_commit: Repository commit is tag to fetch the variables from. This cannot be set if repository branch or sha is set.
        :param _builtins.str repository_path: Repository path is the path in which the variables reside.
        :param _builtins.str repository_sha: Repository commit is SHA to fetch the variables from. This cannot be set if repository branch or commit is set.
        """
        pulumi.set(__self__, "repository", repository)
        pulumi.set(__self__, "repository_connector", repository_connector)
        if repository_branch is not None:
            pulumi.set(__self__, "repository_branch", repository_branch)
        if repository_commit is not None:
            pulumi.set(__self__, "repository_commit", repository_commit)
        if repository_path is not None:
            pulumi.set(__self__, "repository_path", repository_path)
        if repository_sha is not None:
            pulumi.set(__self__, "repository_sha", repository_sha)

    @_builtins.property
    @pulumi.getter
    def repository(self) -> _builtins.str:
        """
        Repository is the name of the repository to fetch the code from.
        """
        return pulumi.get(self, "repository")

    @_builtins.property
    @pulumi.getter(name="repositoryConnector")
    def repository_connector(self) -> _builtins.str:
        """
        Repository connector is the reference to the connector used to fetch the variables.
        """
        return pulumi.get(self, "repository_connector")

    @_builtins.property
    @pulumi.getter(name="repositoryBranch")
    def repository_branch(self) -> Optional[_builtins.str]:
        """
        Repository branch is the name of the branch to fetch the variables from. This cannot be set if repository commit or sha is set
        """
        return pulumi.get(self, "repository_branch")

    @_builtins.property
    @pulumi.getter(name="repositoryCommit")
    def repository_commit(self) -> Optional[_builtins.str]:
        """
        Repository commit is tag to fetch the variables from. This cannot be set if repository branch or sha is set.
        """
        return pulumi.get(self, "repository_commit")

    @_builtins.property
    @pulumi.getter(name="repositoryPath")
    def repository_path(self) -> Optional[_builtins.str]:
        """
        Repository path is the path in which the variables reside.
        """
        return pulumi.get(self, "repository_path")

    @_builtins.property
    @pulumi.getter(name="repositorySha")
    def repository_sha(self) -> Optional[_builtins.str]:
        """
        Repository commit is SHA to fetch the variables from. This cannot be set if repository branch or commit is set.
        """
        return pulumi.get(self, "repository_sha")


@pulumi.output_type
class GetInfrastructureGitDetailsResult(dict):
    def __init__(__self__, *,
                 branch: _builtins.str,
                 load_from_cache: _builtins.str,
                 load_from_fallback_branch: _builtins.bool,
                 repo_name: _builtins.str):
        """
        :param _builtins.str branch: Name of the branch.
        :param _builtins.str load_from_cache: If the Entity is to be fetched from cache
        :param _builtins.bool load_from_fallback_branch: Load Infrastructure yaml from fallback branch
        :param _builtins.str repo_name: Repo name of remote Infrastructure
        """
        pulumi.set(__self__, "branch", branch)
        pulumi.set(__self__, "load_from_cache", load_from_cache)
        pulumi.set(__self__, "load_from_fallback_branch", load_from_fallback_branch)
        pulumi.set(__self__, "repo_name", repo_name)

    @_builtins.property
    @pulumi.getter
    def branch(self) -> _builtins.str:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch")

    @_builtins.property
    @pulumi.getter(name="loadFromCache")
    def load_from_cache(self) -> _builtins.str:
        """
        If the Entity is to be fetched from cache
        """
        return pulumi.get(self, "load_from_cache")

    @_builtins.property
    @pulumi.getter(name="loadFromFallbackBranch")
    def load_from_fallback_branch(self) -> _builtins.bool:
        """
        Load Infrastructure yaml from fallback branch
        """
        return pulumi.get(self, "load_from_fallback_branch")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> _builtins.str:
        """
        Repo name of remote Infrastructure
        """
        return pulumi.get(self, "repo_name")


@pulumi.output_type
class GetInputSetGitDetailsResult(dict):
    def __init__(__self__, *,
                 base_branch: _builtins.str,
                 branch_name: _builtins.str,
                 commit_message: _builtins.str,
                 connector_ref: _builtins.str,
                 file_path: _builtins.str,
                 last_commit_id: _builtins.str,
                 last_object_id: _builtins.str,
                 parent_entity_connector_ref: _builtins.str,
                 parent_entity_repo_name: _builtins.str,
                 repo_name: _builtins.str,
                 store_type: _builtins.str):
        """
        :param _builtins.str base_branch: Name of the default branch (this checks out a new branch titled by branch_name).
        :param _builtins.str branch_name: Name of the branch.
        :param _builtins.str commit_message: Commit message used for the merge commit.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for CRUD operations on the Entity.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating Pipeline.
        :param _builtins.str parent_entity_connector_ref: Connector reference for Parent Entity (Pipeline).
        :param _builtins.str parent_entity_repo_name: Repository name for Parent Entity (Pipeline).
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str store_type: Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        pulumi.set(__self__, "base_branch", base_branch)
        pulumi.set(__self__, "branch_name", branch_name)
        pulumi.set(__self__, "commit_message", commit_message)
        pulumi.set(__self__, "connector_ref", connector_ref)
        pulumi.set(__self__, "file_path", file_path)
        pulumi.set(__self__, "last_commit_id", last_commit_id)
        pulumi.set(__self__, "last_object_id", last_object_id)
        pulumi.set(__self__, "parent_entity_connector_ref", parent_entity_connector_ref)
        pulumi.set(__self__, "parent_entity_repo_name", parent_entity_repo_name)
        pulumi.set(__self__, "repo_name", repo_name)
        pulumi.set(__self__, "store_type", store_type)

    @_builtins.property
    @pulumi.getter(name="baseBranch")
    def base_branch(self) -> _builtins.str:
        """
        Name of the default branch (this checks out a new branch titled by branch_name).
        """
        return pulumi.get(self, "base_branch")

    @_builtins.property
    @pulumi.getter(name="branchName")
    def branch_name(self) -> _builtins.str:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch_name")

    @_builtins.property
    @pulumi.getter(name="commitMessage")
    def commit_message(self) -> _builtins.str:
        """
        Commit message used for the merge commit.
        """
        return pulumi.get(self, "commit_message")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> _builtins.str:
        """
        Identifier of the Harness Connector used for CRUD operations on the Entity.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> _builtins.str:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> _builtins.str:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> _builtins.str:
        """
        Last object identifier (for Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="parentEntityConnectorRef")
    def parent_entity_connector_ref(self) -> _builtins.str:
        """
        Connector reference for Parent Entity (Pipeline).
        """
        return pulumi.get(self, "parent_entity_connector_ref")

    @_builtins.property
    @pulumi.getter(name="parentEntityRepoName")
    def parent_entity_repo_name(self) -> _builtins.str:
        """
        Repository name for Parent Entity (Pipeline).
        """
        return pulumi.get(self, "parent_entity_repo_name")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> _builtins.str:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="storeType")
    def store_type(self) -> _builtins.str:
        """
        Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        return pulumi.get(self, "store_type")


@pulumi.output_type
class GetJenkinsConnectorAuthResult(dict):
    def __init__(__self__, *,
                 jenkins_bearer_tokens: Sequence['outputs.GetJenkinsConnectorAuthJenkinsBearerTokenResult'],
                 jenkins_user_name_passwords: Sequence['outputs.GetJenkinsConnectorAuthJenkinsUserNamePasswordResult'],
                 type: _builtins.str):
        """
        :param Sequence['GetJenkinsConnectorAuthJenkinsBearerTokenArgs'] jenkins_bearer_tokens: Authenticate to App Dynamics using bearer token.
        :param Sequence['GetJenkinsConnectorAuthJenkinsUserNamePasswordArgs'] jenkins_user_name_passwords: Authenticate to App Dynamics using user name and password.
        :param _builtins.str type: Can be one of UsernamePassword, Anonymous, BearerToken
        """
        pulumi.set(__self__, "jenkins_bearer_tokens", jenkins_bearer_tokens)
        pulumi.set(__self__, "jenkins_user_name_passwords", jenkins_user_name_passwords)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="jenkinsBearerTokens")
    def jenkins_bearer_tokens(self) -> Sequence['outputs.GetJenkinsConnectorAuthJenkinsBearerTokenResult']:
        """
        Authenticate to App Dynamics using bearer token.
        """
        return pulumi.get(self, "jenkins_bearer_tokens")

    @_builtins.property
    @pulumi.getter(name="jenkinsUserNamePasswords")
    def jenkins_user_name_passwords(self) -> Sequence['outputs.GetJenkinsConnectorAuthJenkinsUserNamePasswordResult']:
        """
        Authenticate to App Dynamics using user name and password.
        """
        return pulumi.get(self, "jenkins_user_name_passwords")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Can be one of UsernamePassword, Anonymous, BearerToken
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetJenkinsConnectorAuthJenkinsBearerTokenResult(dict):
    def __init__(__self__, *,
                 token_ref: _builtins.str):
        """
        :param _builtins.str token_ref: Reference of the token. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "token_ref", token_ref)

    @_builtins.property
    @pulumi.getter(name="tokenRef")
    def token_ref(self) -> _builtins.str:
        """
        Reference of the token. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "token_ref")


@pulumi.output_type
class GetJenkinsConnectorAuthJenkinsUserNamePasswordResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Username reference to use for authentication.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Username reference to use for authentication.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetJiraConnectorAuthResult(dict):
    def __init__(__self__, *,
                 auth_type: _builtins.str,
                 personal_access_tokens: Sequence['outputs.GetJiraConnectorAuthPersonalAccessTokenResult'],
                 username_passwords: Sequence['outputs.GetJiraConnectorAuthUsernamePasswordResult']):
        """
        :param _builtins.str auth_type: Authentication types for Jira connector
        :param Sequence['GetJiraConnectorAuthPersonalAccessTokenArgs'] personal_access_tokens: Authenticate using personal access token.
        :param Sequence['GetJiraConnectorAuthUsernamePasswordArgs'] username_passwords: Authenticate using username password.
        """
        pulumi.set(__self__, "auth_type", auth_type)
        pulumi.set(__self__, "personal_access_tokens", personal_access_tokens)
        pulumi.set(__self__, "username_passwords", username_passwords)

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> _builtins.str:
        """
        Authentication types for Jira connector
        """
        return pulumi.get(self, "auth_type")

    @_builtins.property
    @pulumi.getter(name="personalAccessTokens")
    def personal_access_tokens(self) -> Sequence['outputs.GetJiraConnectorAuthPersonalAccessTokenResult']:
        """
        Authenticate using personal access token.
        """
        return pulumi.get(self, "personal_access_tokens")

    @_builtins.property
    @pulumi.getter(name="usernamePasswords")
    def username_passwords(self) -> Sequence['outputs.GetJiraConnectorAuthUsernamePasswordResult']:
        """
        Authenticate using username password.
        """
        return pulumi.get(self, "username_passwords")


@pulumi.output_type
class GetJiraConnectorAuthPersonalAccessTokenResult(dict):
    def __init__(__self__, *,
                 pat_ref: _builtins.str):
        """
        :param _builtins.str pat_ref: Reference to a secret containing the personal access token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "pat_ref", pat_ref)

    @_builtins.property
    @pulumi.getter(name="patRef")
    def pat_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the personal access token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "pat_ref")


@pulumi.output_type
class GetJiraConnectorAuthUsernamePasswordResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetKubernetesConnectorClientKeyCertResult(dict):
    def __init__(__self__, *,
                 ca_cert_ref: _builtins.str,
                 client_cert_ref: _builtins.str,
                 client_key_algorithm: _builtins.str,
                 client_key_passphrase_ref: _builtins.str,
                 client_key_ref: _builtins.str,
                 master_url: _builtins.str):
        """
        :param _builtins.str ca_cert_ref: Reference to the secret containing the CA certificate for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str client_cert_ref: Reference to the secret containing the client certificate for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str client_key_algorithm: The algorithm used to generate the client key for the connector. Valid values are RSA, EC
        :param _builtins.str client_key_passphrase_ref: Reference to the secret containing the client key passphrase for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str client_key_ref: Reference to the secret containing the client key for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str master_url: The URL of the Kubernetes cluster.
        """
        pulumi.set(__self__, "ca_cert_ref", ca_cert_ref)
        pulumi.set(__self__, "client_cert_ref", client_cert_ref)
        pulumi.set(__self__, "client_key_algorithm", client_key_algorithm)
        pulumi.set(__self__, "client_key_passphrase_ref", client_key_passphrase_ref)
        pulumi.set(__self__, "client_key_ref", client_key_ref)
        pulumi.set(__self__, "master_url", master_url)

    @_builtins.property
    @pulumi.getter(name="caCertRef")
    def ca_cert_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the CA certificate for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "ca_cert_ref")

    @_builtins.property
    @pulumi.getter(name="clientCertRef")
    def client_cert_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the client certificate for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_cert_ref")

    @_builtins.property
    @pulumi.getter(name="clientKeyAlgorithm")
    def client_key_algorithm(self) -> _builtins.str:
        """
        The algorithm used to generate the client key for the connector. Valid values are RSA, EC
        """
        return pulumi.get(self, "client_key_algorithm")

    @_builtins.property
    @pulumi.getter(name="clientKeyPassphraseRef")
    def client_key_passphrase_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the client key passphrase for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_key_passphrase_ref")

    @_builtins.property
    @pulumi.getter(name="clientKeyRef")
    def client_key_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the client key for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_key_ref")

    @_builtins.property
    @pulumi.getter(name="masterUrl")
    def master_url(self) -> _builtins.str:
        """
        The URL of the Kubernetes cluster.
        """
        return pulumi.get(self, "master_url")


@pulumi.output_type
class GetKubernetesConnectorInheritFromDelegateResult(dict):
    def __init__(__self__, *,
                 delegate_selectors: Sequence[_builtins.str]):
        """
        :param Sequence[_builtins.str] delegate_selectors: Selectors to use for the delegate.
        """
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        Selectors to use for the delegate.
        """
        return pulumi.get(self, "delegate_selectors")


@pulumi.output_type
class GetKubernetesConnectorOpenidConnectResult(dict):
    def __init__(__self__, *,
                 client_id_ref: _builtins.str,
                 issuer_url: _builtins.str,
                 master_url: _builtins.str,
                 password_ref: _builtins.str,
                 scopes: Sequence[_builtins.str],
                 secret_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str client_id_ref: Reference to the secret containing the client ID for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str issuer_url: The URL of the OpenID Connect issuer.
        :param _builtins.str master_url: The URL of the Kubernetes cluster.
        :param _builtins.str password_ref: Reference to the secret containing the password for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param Sequence[_builtins.str] scopes: Scopes to request for the connector.
        :param _builtins.str secret_ref: Reference to the secret containing the client secret for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username for the connector.
        :param _builtins.str username_ref: Reference to the secret containing the username for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "client_id_ref", client_id_ref)
        pulumi.set(__self__, "issuer_url", issuer_url)
        pulumi.set(__self__, "master_url", master_url)
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "scopes", scopes)
        pulumi.set(__self__, "secret_ref", secret_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="clientIdRef")
    def client_id_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the client ID for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_id_ref")

    @_builtins.property
    @pulumi.getter(name="issuerUrl")
    def issuer_url(self) -> _builtins.str:
        """
        The URL of the OpenID Connect issuer.
        """
        return pulumi.get(self, "issuer_url")

    @_builtins.property
    @pulumi.getter(name="masterUrl")
    def master_url(self) -> _builtins.str:
        """
        The URL of the Kubernetes cluster.
        """
        return pulumi.get(self, "master_url")

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the password for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def scopes(self) -> Sequence[_builtins.str]:
        """
        Scopes to request for the connector.
        """
        return pulumi.get(self, "scopes")

    @_builtins.property
    @pulumi.getter(name="secretRef")
    def secret_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the client secret for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "secret_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username for the connector.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the username for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetKubernetesConnectorServiceAccountResult(dict):
    def __init__(__self__, *,
                 master_url: _builtins.str,
                 service_account_token_ref: _builtins.str):
        """
        :param _builtins.str master_url: The URL of the Kubernetes cluster.
        :param _builtins.str service_account_token_ref: Reference to the secret containing the service account token for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "master_url", master_url)
        pulumi.set(__self__, "service_account_token_ref", service_account_token_ref)

    @_builtins.property
    @pulumi.getter(name="masterUrl")
    def master_url(self) -> _builtins.str:
        """
        The URL of the Kubernetes cluster.
        """
        return pulumi.get(self, "master_url")

    @_builtins.property
    @pulumi.getter(name="serviceAccountTokenRef")
    def service_account_token_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the service account token for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "service_account_token_ref")


@pulumi.output_type
class GetKubernetesConnectorUsernamePasswordResult(dict):
    def __init__(__self__, *,
                 master_url: _builtins.str,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str master_url: The URL of the Kubernetes cluster.
        :param _builtins.str password_ref: Reference to the secret containing the password for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username for the connector.
        :param _builtins.str username_ref: Reference to the secret containing the username for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "master_url", master_url)
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="masterUrl")
    def master_url(self) -> _builtins.str:
        """
        The URL of the Kubernetes cluster.
        """
        return pulumi.get(self, "master_url")

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the password for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username for the connector.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to the secret containing the username for the connector. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetManualFreezeCurrentOrUpcomingWindowResult(dict):
    def __init__(__self__, *,
                 end_time: _builtins.int,
                 start_time: _builtins.int):
        """
        :param _builtins.int end_time: End time of the freeze window
        :param _builtins.int start_time: Start time of the freeze window
        """
        pulumi.set(__self__, "end_time", end_time)
        pulumi.set(__self__, "start_time", start_time)

    @_builtins.property
    @pulumi.getter(name="endTime")
    def end_time(self) -> _builtins.int:
        """
        End time of the freeze window
        """
        return pulumi.get(self, "end_time")

    @_builtins.property
    @pulumi.getter(name="startTime")
    def start_time(self) -> _builtins.int:
        """
        Start time of the freeze window
        """
        return pulumi.get(self, "start_time")


@pulumi.output_type
class GetManualFreezeFreezeWindowResult(dict):
    def __init__(__self__, *,
                 duration: _builtins.str,
                 end_time: _builtins.str,
                 recurrences: Sequence['outputs.GetManualFreezeFreezeWindowRecurrenceResult'],
                 start_time: _builtins.str,
                 time_zone: _builtins.str):
        """
        :param _builtins.str duration: Duration of the freeze window
        :param _builtins.str end_time: End Time of the freeze window
        :param Sequence['GetManualFreezeFreezeWindowRecurrenceArgs'] recurrences: Recurrence of the freeze window
        :param _builtins.str start_time: Start Time of the freeze window
        :param _builtins.str time_zone: Time zone of the freeze window
        """
        pulumi.set(__self__, "duration", duration)
        pulumi.set(__self__, "end_time", end_time)
        pulumi.set(__self__, "recurrences", recurrences)
        pulumi.set(__self__, "start_time", start_time)
        pulumi.set(__self__, "time_zone", time_zone)

    @_builtins.property
    @pulumi.getter
    def duration(self) -> _builtins.str:
        """
        Duration of the freeze window
        """
        return pulumi.get(self, "duration")

    @_builtins.property
    @pulumi.getter(name="endTime")
    def end_time(self) -> _builtins.str:
        """
        End Time of the freeze window
        """
        return pulumi.get(self, "end_time")

    @_builtins.property
    @pulumi.getter
    def recurrences(self) -> Sequence['outputs.GetManualFreezeFreezeWindowRecurrenceResult']:
        """
        Recurrence of the freeze window
        """
        return pulumi.get(self, "recurrences")

    @_builtins.property
    @pulumi.getter(name="startTime")
    def start_time(self) -> _builtins.str:
        """
        Start Time of the freeze window
        """
        return pulumi.get(self, "start_time")

    @_builtins.property
    @pulumi.getter(name="timeZone")
    def time_zone(self) -> _builtins.str:
        """
        Time zone of the freeze window
        """
        return pulumi.get(self, "time_zone")


@pulumi.output_type
class GetManualFreezeFreezeWindowRecurrenceResult(dict):
    def __init__(__self__, *,
                 recurrence_specs: Sequence['outputs.GetManualFreezeFreezeWindowRecurrenceRecurrenceSpecResult'],
                 type: _builtins.str):
        """
        :param Sequence['GetManualFreezeFreezeWindowRecurrenceRecurrenceSpecArgs'] recurrence_specs: Used to filter resources on their attributes
        :param _builtins.str type: Type of the recurrence
        """
        pulumi.set(__self__, "recurrence_specs", recurrence_specs)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="recurrenceSpecs")
    def recurrence_specs(self) -> Sequence['outputs.GetManualFreezeFreezeWindowRecurrenceRecurrenceSpecResult']:
        """
        Used to filter resources on their attributes
        """
        return pulumi.get(self, "recurrence_specs")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type of the recurrence
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetManualFreezeFreezeWindowRecurrenceRecurrenceSpecResult(dict):
    def __init__(__self__, *,
                 until: _builtins.str,
                 value: _builtins.int):
        """
        :param _builtins.str until: Time till which freeze window recurrs
        :param _builtins.int value: Every n months recurrence
        """
        pulumi.set(__self__, "until", until)
        pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def until(self) -> _builtins.str:
        """
        Time till which freeze window recurrs
        """
        return pulumi.get(self, "until")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.int:
        """
        Every n months recurrence
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetNexusConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetOciHelmConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetOverridesGitDetailsResult(dict):
    def __init__(__self__, *,
                 branch: _builtins.str,
                 load_from_cache: _builtins.bool,
                 load_from_fallback_branch: _builtins.bool,
                 repo_name: _builtins.str):
        """
        :param _builtins.str branch: Name of the branch.
        :param _builtins.bool load_from_cache: Load service yaml from fallback branch
        :param _builtins.bool load_from_fallback_branch: Load service yaml from fallback branch
        :param _builtins.str repo_name: Repo name of remote service override
        """
        pulumi.set(__self__, "branch", branch)
        pulumi.set(__self__, "load_from_cache", load_from_cache)
        pulumi.set(__self__, "load_from_fallback_branch", load_from_fallback_branch)
        pulumi.set(__self__, "repo_name", repo_name)

    @_builtins.property
    @pulumi.getter
    def branch(self) -> _builtins.str:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch")

    @_builtins.property
    @pulumi.getter(name="loadFromCache")
    def load_from_cache(self) -> _builtins.bool:
        """
        Load service yaml from fallback branch
        """
        return pulumi.get(self, "load_from_cache")

    @_builtins.property
    @pulumi.getter(name="loadFromFallbackBranch")
    def load_from_fallback_branch(self) -> _builtins.bool:
        """
        Load service yaml from fallback branch
        """
        return pulumi.get(self, "load_from_fallback_branch")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> _builtins.str:
        """
        Repo name of remote service override
        """
        return pulumi.get(self, "repo_name")


@pulumi.output_type
class GetPermissionsPermissionResult(dict):
    def __init__(__self__, *,
                 action: _builtins.str,
                 allowed_scope_levels: Sequence[_builtins.str],
                 identifier: _builtins.str,
                 include_in_all_roles: _builtins.bool,
                 name: _builtins.str,
                 resource_type: _builtins.str,
                 status: _builtins.str):
        """
        :param _builtins.str action: Action performed by the permission
        :param Sequence[_builtins.str] allowed_scope_levels: The scope levels at which this resource group can be used
        :param _builtins.str identifier: Identifier of the permission
        :param _builtins.bool include_in_all_roles: Is included in all roles
        :param _builtins.str name: Name of the permission
        :param _builtins.str resource_type: Resource type for the given permission
        :param _builtins.str status: Status of the permission
        """
        pulumi.set(__self__, "action", action)
        pulumi.set(__self__, "allowed_scope_levels", allowed_scope_levels)
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "include_in_all_roles", include_in_all_roles)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "resource_type", resource_type)
        pulumi.set(__self__, "status", status)

    @_builtins.property
    @pulumi.getter
    def action(self) -> _builtins.str:
        """
        Action performed by the permission
        """
        return pulumi.get(self, "action")

    @_builtins.property
    @pulumi.getter(name="allowedScopeLevels")
    def allowed_scope_levels(self) -> Sequence[_builtins.str]:
        """
        The scope levels at which this resource group can be used
        """
        return pulumi.get(self, "allowed_scope_levels")

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        """
        Identifier of the permission
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter(name="includeInAllRoles")
    def include_in_all_roles(self) -> _builtins.bool:
        """
        Is included in all roles
        """
        return pulumi.get(self, "include_in_all_roles")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the permission
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="resourceType")
    def resource_type(self) -> _builtins.str:
        """
        Resource type for the given permission
        """
        return pulumi.get(self, "resource_type")

    @_builtins.property
    @pulumi.getter
    def status(self) -> _builtins.str:
        """
        Status of the permission
        """
        return pulumi.get(self, "status")


@pulumi.output_type
class GetPipelineCentralNotificationRuleCustomNotificationTemplateRefResult(dict):
    def __init__(__self__, *,
                 template_ref: _builtins.str,
                 version_label: _builtins.str,
                 variables: Optional[Sequence['outputs.GetPipelineCentralNotificationRuleCustomNotificationTemplateRefVariableResult']] = None):
        pulumi.set(__self__, "template_ref", template_ref)
        pulumi.set(__self__, "version_label", version_label)
        if variables is not None:
            pulumi.set(__self__, "variables", variables)

    @_builtins.property
    @pulumi.getter(name="templateRef")
    def template_ref(self) -> _builtins.str:
        return pulumi.get(self, "template_ref")

    @_builtins.property
    @pulumi.getter(name="versionLabel")
    def version_label(self) -> _builtins.str:
        return pulumi.get(self, "version_label")

    @_builtins.property
    @pulumi.getter
    def variables(self) -> Optional[Sequence['outputs.GetPipelineCentralNotificationRuleCustomNotificationTemplateRefVariableResult']]:
        return pulumi.get(self, "variables")


@pulumi.output_type
class GetPipelineCentralNotificationRuleCustomNotificationTemplateRefVariableResult(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 value: _builtins.str,
                 type: Optional[_builtins.str] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "value", value)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "type")


@pulumi.output_type
class GetPipelineCentralNotificationRuleNotificationConditionResult(dict):
    def __init__(__self__, *,
                 condition_name: _builtins.str,
                 notification_event_configs: Sequence['outputs.GetPipelineCentralNotificationRuleNotificationConditionNotificationEventConfigResult']):
        pulumi.set(__self__, "condition_name", condition_name)
        pulumi.set(__self__, "notification_event_configs", notification_event_configs)

    @_builtins.property
    @pulumi.getter(name="conditionName")
    def condition_name(self) -> _builtins.str:
        return pulumi.get(self, "condition_name")

    @_builtins.property
    @pulumi.getter(name="notificationEventConfigs")
    def notification_event_configs(self) -> Sequence['outputs.GetPipelineCentralNotificationRuleNotificationConditionNotificationEventConfigResult']:
        return pulumi.get(self, "notification_event_configs")


@pulumi.output_type
class GetPipelineCentralNotificationRuleNotificationConditionNotificationEventConfigResult(dict):
    def __init__(__self__, *,
                 notification_entity: _builtins.str,
                 notification_event: _builtins.str,
                 entity_identifiers: Optional[Sequence[_builtins.str]] = None,
                 notification_event_datas: Optional[Sequence['outputs.GetPipelineCentralNotificationRuleNotificationConditionNotificationEventConfigNotificationEventDataResult']] = None):
        """
        :param _builtins.str notification_event: The pipeline event that triggers the notification. Supported values: `PIPELINE_START`, `PIPELINE_SUCCESS`, `PIPELINE_FAILED`, `STAGE_START`, `STAGE_SUCCESS`, `STAGE_FAILED`.
        """
        pulumi.set(__self__, "notification_entity", notification_entity)
        pulumi.set(__self__, "notification_event", notification_event)
        if entity_identifiers is not None:
            pulumi.set(__self__, "entity_identifiers", entity_identifiers)
        if notification_event_datas is not None:
            pulumi.set(__self__, "notification_event_datas", notification_event_datas)

    @_builtins.property
    @pulumi.getter(name="notificationEntity")
    def notification_entity(self) -> _builtins.str:
        return pulumi.get(self, "notification_entity")

    @_builtins.property
    @pulumi.getter(name="notificationEvent")
    def notification_event(self) -> _builtins.str:
        """
        The pipeline event that triggers the notification. Supported values: `PIPELINE_START`, `PIPELINE_SUCCESS`, `PIPELINE_FAILED`, `STAGE_START`, `STAGE_SUCCESS`, `STAGE_FAILED`.
        """
        return pulumi.get(self, "notification_event")

    @_builtins.property
    @pulumi.getter(name="entityIdentifiers")
    def entity_identifiers(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "entity_identifiers")

    @_builtins.property
    @pulumi.getter(name="notificationEventDatas")
    def notification_event_datas(self) -> Optional[Sequence['outputs.GetPipelineCentralNotificationRuleNotificationConditionNotificationEventConfigNotificationEventDataResult']]:
        return pulumi.get(self, "notification_event_datas")


@pulumi.output_type
class GetPipelineCentralNotificationRuleNotificationConditionNotificationEventConfigNotificationEventDataResult(dict):
    def __init__(__self__, *,
                 scope_identifiers: Optional[Sequence[_builtins.str]] = None,
                 type: Optional[_builtins.str] = None):
        if scope_identifiers is not None:
            pulumi.set(__self__, "scope_identifiers", scope_identifiers)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="scopeIdentifiers")
    def scope_identifiers(self) -> Optional[Sequence[_builtins.str]]:
        return pulumi.get(self, "scope_identifiers")

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[_builtins.str]:
        return pulumi.get(self, "type")


@pulumi.output_type
class GetPipelineFiltersFilterPropertyResult(dict):
    def __init__(__self__, *,
                 description: _builtins.str,
                 filter_type: _builtins.str,
                 module_properties: 'outputs.GetPipelineFiltersFilterPropertyModulePropertiesResult',
                 name: _builtins.str,
                 pipeline_identifiers: Sequence[_builtins.str],
                 pipeline_tags: Sequence[Mapping[str, _builtins.str]],
                 tags: Sequence[_builtins.str]):
        """
        :param _builtins.str description: description of the pipline filter.
        :param _builtins.str filter_type: Corresponding Entity of the filters. Currently supported types are {Connector, DelegateProfile, Delegate, PipelineSetup, PipelineExecution, Deployment, Audit, Template, EnvironmentGroup, FileStore, CCMRecommendation, Anomaly, Environment}.
        :param 'GetPipelineFiltersFilterPropertyModulePropertiesArgs' module_properties: module properties of the pipline filter.
        :param _builtins.str name: Name of the pipeline filter.
        :param Sequence[_builtins.str] pipeline_identifiers: Pipeline identifiers to filter on.
        :param Sequence[Mapping[str, _builtins.str]] pipeline_tags: Tags to associate with the pipeline. tags should be in the form of `{key:key1, value:key1value}`
        :param Sequence[_builtins.str] tags: Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "filter_type", filter_type)
        pulumi.set(__self__, "module_properties", module_properties)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "pipeline_identifiers", pipeline_identifiers)
        pulumi.set(__self__, "pipeline_tags", pipeline_tags)
        pulumi.set(__self__, "tags", tags)

    @_builtins.property
    @pulumi.getter
    def description(self) -> _builtins.str:
        """
        description of the pipline filter.
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter(name="filterType")
    def filter_type(self) -> _builtins.str:
        """
        Corresponding Entity of the filters. Currently supported types are {Connector, DelegateProfile, Delegate, PipelineSetup, PipelineExecution, Deployment, Audit, Template, EnvironmentGroup, FileStore, CCMRecommendation, Anomaly, Environment}.
        """
        return pulumi.get(self, "filter_type")

    @_builtins.property
    @pulumi.getter(name="moduleProperties")
    def module_properties(self) -> 'outputs.GetPipelineFiltersFilterPropertyModulePropertiesResult':
        """
        module properties of the pipline filter.
        """
        return pulumi.get(self, "module_properties")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the pipeline filter.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="pipelineIdentifiers")
    def pipeline_identifiers(self) -> Sequence[_builtins.str]:
        """
        Pipeline identifiers to filter on.
        """
        return pulumi.get(self, "pipeline_identifiers")

    @_builtins.property
    @pulumi.getter(name="pipelineTags")
    def pipeline_tags(self) -> Sequence[Mapping[str, _builtins.str]]:
        """
        Tags to associate with the pipeline. tags should be in the form of `{key:key1, value:key1value}`
        """
        return pulumi.get(self, "pipeline_tags")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Sequence[_builtins.str]:
        """
        Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        return pulumi.get(self, "tags")


@pulumi.output_type
class GetPipelineFiltersFilterPropertyModulePropertiesResult(dict):
    def __init__(__self__, *,
                 cd: 'outputs.GetPipelineFiltersFilterPropertyModulePropertiesCdResult',
                 ci: 'outputs.GetPipelineFiltersFilterPropertyModulePropertiesCiResult'):
        """
        :param 'GetPipelineFiltersFilterPropertyModulePropertiesCdArgs' cd: CD related properties to be filtered on.
        :param 'GetPipelineFiltersFilterPropertyModulePropertiesCiArgs' ci: CI related properties to be filtered on.
        """
        pulumi.set(__self__, "cd", cd)
        pulumi.set(__self__, "ci", ci)

    @_builtins.property
    @pulumi.getter
    def cd(self) -> 'outputs.GetPipelineFiltersFilterPropertyModulePropertiesCdResult':
        """
        CD related properties to be filtered on.
        """
        return pulumi.get(self, "cd")

    @_builtins.property
    @pulumi.getter
    def ci(self) -> 'outputs.GetPipelineFiltersFilterPropertyModulePropertiesCiResult':
        """
        CI related properties to be filtered on.
        """
        return pulumi.get(self, "ci")


@pulumi.output_type
class GetPipelineFiltersFilterPropertyModulePropertiesCdResult(dict):
    def __init__(__self__, *,
                 artifact_display_names: Sequence[_builtins.str],
                 deployment_types: _builtins.str,
                 environment_names: Sequence[_builtins.str],
                 service_identifiers: Sequence[_builtins.str],
                 service_names: Sequence[_builtins.str]):
        """
        :param Sequence[_builtins.str] artifact_display_names: Artifact display names of the CD pipeline.
        :param _builtins.str deployment_types: Deployment type of the CD pipeline, eg. Kubernetes
        :param Sequence[_builtins.str] environment_names: Environment names of the CD pipeline.
        :param Sequence[_builtins.str] service_identifiers: Service identifiers of the CD pipeline.
        :param Sequence[_builtins.str] service_names: Service names of the CD pipeline.
        """
        pulumi.set(__self__, "artifact_display_names", artifact_display_names)
        pulumi.set(__self__, "deployment_types", deployment_types)
        pulumi.set(__self__, "environment_names", environment_names)
        pulumi.set(__self__, "service_identifiers", service_identifiers)
        pulumi.set(__self__, "service_names", service_names)

    @_builtins.property
    @pulumi.getter(name="artifactDisplayNames")
    def artifact_display_names(self) -> Sequence[_builtins.str]:
        """
        Artifact display names of the CD pipeline.
        """
        return pulumi.get(self, "artifact_display_names")

    @_builtins.property
    @pulumi.getter(name="deploymentTypes")
    def deployment_types(self) -> _builtins.str:
        """
        Deployment type of the CD pipeline, eg. Kubernetes
        """
        return pulumi.get(self, "deployment_types")

    @_builtins.property
    @pulumi.getter(name="environmentNames")
    def environment_names(self) -> Sequence[_builtins.str]:
        """
        Environment names of the CD pipeline.
        """
        return pulumi.get(self, "environment_names")

    @_builtins.property
    @pulumi.getter(name="serviceIdentifiers")
    def service_identifiers(self) -> Sequence[_builtins.str]:
        """
        Service identifiers of the CD pipeline.
        """
        return pulumi.get(self, "service_identifiers")

    @_builtins.property
    @pulumi.getter(name="serviceNames")
    def service_names(self) -> Sequence[_builtins.str]:
        """
        Service names of the CD pipeline.
        """
        return pulumi.get(self, "service_names")


@pulumi.output_type
class GetPipelineFiltersFilterPropertyModulePropertiesCiResult(dict):
    def __init__(__self__, *,
                 branch: _builtins.str,
                 build_type: _builtins.str,
                 ci_execution_info: 'outputs.GetPipelineFiltersFilterPropertyModulePropertiesCiCiExecutionInfoResult',
                 repo_names: _builtins.str,
                 tag: _builtins.str):
        """
        :param _builtins.str branch: Branch which was used while building.
        :param _builtins.str build_type: Build type of the pipeline. Possible values: branch.
        :param 'GetPipelineFiltersFilterPropertyModulePropertiesCiCiExecutionInfoArgs' ci_execution_info: CI execution info for the pipeline.
        :param _builtins.str repo_names: name of the repository used in the pipeline.
        :param _builtins.str tag: Tags to associate with the CI pipeline resource.
        """
        pulumi.set(__self__, "branch", branch)
        pulumi.set(__self__, "build_type", build_type)
        pulumi.set(__self__, "ci_execution_info", ci_execution_info)
        pulumi.set(__self__, "repo_names", repo_names)
        pulumi.set(__self__, "tag", tag)

    @_builtins.property
    @pulumi.getter
    def branch(self) -> _builtins.str:
        """
        Branch which was used while building.
        """
        return pulumi.get(self, "branch")

    @_builtins.property
    @pulumi.getter(name="buildType")
    def build_type(self) -> _builtins.str:
        """
        Build type of the pipeline. Possible values: branch.
        """
        return pulumi.get(self, "build_type")

    @_builtins.property
    @pulumi.getter(name="ciExecutionInfo")
    def ci_execution_info(self) -> 'outputs.GetPipelineFiltersFilterPropertyModulePropertiesCiCiExecutionInfoResult':
        """
        CI execution info for the pipeline.
        """
        return pulumi.get(self, "ci_execution_info")

    @_builtins.property
    @pulumi.getter(name="repoNames")
    def repo_names(self) -> _builtins.str:
        """
        name of the repository used in the pipeline.
        """
        return pulumi.get(self, "repo_names")

    @_builtins.property
    @pulumi.getter
    def tag(self) -> _builtins.str:
        """
        Tags to associate with the CI pipeline resource.
        """
        return pulumi.get(self, "tag")


@pulumi.output_type
class GetPipelineFiltersFilterPropertyModulePropertiesCiCiExecutionInfoResult(dict):
    def __init__(__self__, *,
                 event: _builtins.str,
                 pull_request: 'outputs.GetPipelineFiltersFilterPropertyModulePropertiesCiCiExecutionInfoPullRequestResult'):
        """
        :param _builtins.str event: Event for the ci execution, Possible values: pullRequest.
        :param 'GetPipelineFiltersFilterPropertyModulePropertiesCiCiExecutionInfoPullRequestArgs' pull_request: The pull request details of the CI pipeline.
        """
        pulumi.set(__self__, "event", event)
        pulumi.set(__self__, "pull_request", pull_request)

    @_builtins.property
    @pulumi.getter
    def event(self) -> _builtins.str:
        """
        Event for the ci execution, Possible values: pullRequest.
        """
        return pulumi.get(self, "event")

    @_builtins.property
    @pulumi.getter(name="pullRequest")
    def pull_request(self) -> 'outputs.GetPipelineFiltersFilterPropertyModulePropertiesCiCiExecutionInfoPullRequestResult':
        """
        The pull request details of the CI pipeline.
        """
        return pulumi.get(self, "pull_request")


@pulumi.output_type
class GetPipelineFiltersFilterPropertyModulePropertiesCiCiExecutionInfoPullRequestResult(dict):
    def __init__(__self__, *,
                 source_branch: _builtins.str,
                 target_branch: _builtins.str):
        """
        :param _builtins.str source_branch: Source branch of the pull request.
        :param _builtins.str target_branch: Target branch of the pull request.
        """
        pulumi.set(__self__, "source_branch", source_branch)
        pulumi.set(__self__, "target_branch", target_branch)

    @_builtins.property
    @pulumi.getter(name="sourceBranch")
    def source_branch(self) -> _builtins.str:
        """
        Source branch of the pull request.
        """
        return pulumi.get(self, "source_branch")

    @_builtins.property
    @pulumi.getter(name="targetBranch")
    def target_branch(self) -> _builtins.str:
        """
        Target branch of the pull request.
        """
        return pulumi.get(self, "target_branch")


@pulumi.output_type
class GetPipelineGitDetailsResult(dict):
    def __init__(__self__, *,
                 base_branch: _builtins.str,
                 branch_name: _builtins.str,
                 commit_message: _builtins.str,
                 connector_ref: _builtins.str,
                 file_path: _builtins.str,
                 last_commit_id: _builtins.str,
                 last_object_id: _builtins.str,
                 repo_name: _builtins.str,
                 store_type: _builtins.str):
        """
        :param _builtins.str base_branch: Name of the default branch (this checks out a new branch titled by branch_name).
        :param _builtins.str branch_name: Name of the branch.
        :param _builtins.str commit_message: Commit message used for the merge commit.
        :param _builtins.str connector_ref: Identifier of the Harness Connector used for CRUD operations on the Entity.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating Pipeline.
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str store_type: Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        pulumi.set(__self__, "base_branch", base_branch)
        pulumi.set(__self__, "branch_name", branch_name)
        pulumi.set(__self__, "commit_message", commit_message)
        pulumi.set(__self__, "connector_ref", connector_ref)
        pulumi.set(__self__, "file_path", file_path)
        pulumi.set(__self__, "last_commit_id", last_commit_id)
        pulumi.set(__self__, "last_object_id", last_object_id)
        pulumi.set(__self__, "repo_name", repo_name)
        pulumi.set(__self__, "store_type", store_type)

    @_builtins.property
    @pulumi.getter(name="baseBranch")
    def base_branch(self) -> _builtins.str:
        """
        Name of the default branch (this checks out a new branch titled by branch_name).
        """
        return pulumi.get(self, "base_branch")

    @_builtins.property
    @pulumi.getter(name="branchName")
    def branch_name(self) -> _builtins.str:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch_name")

    @_builtins.property
    @pulumi.getter(name="commitMessage")
    def commit_message(self) -> _builtins.str:
        """
        Commit message used for the merge commit.
        """
        return pulumi.get(self, "commit_message")

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> _builtins.str:
        """
        Identifier of the Harness Connector used for CRUD operations on the Entity.
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> _builtins.str:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> _builtins.str:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> _builtins.str:
        """
        Last object identifier (for Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> _builtins.str:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="storeType")
    def store_type(self) -> _builtins.str:
        """
        Specifies whether the Entity is to be stored in Git or not. Possible values: INLINE, REMOTE.
        """
        return pulumi.get(self, "store_type")


@pulumi.output_type
class GetPipelineListPipelineResult(dict):
    def __init__(__self__, *,
                 identifier: _builtins.str,
                 name: _builtins.str):
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")


@pulumi.output_type
class GetPolicySetPolicyResult(dict):
    def __init__(__self__, *,
                 identifier: _builtins.str,
                 severity: _builtins.str):
        """
        :param _builtins.str identifier: Unique identifier of the policy
        :param _builtins.str severity: Policy failure response - 'warning' for continuation, 'error' for exit
        """
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "severity", severity)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        """
        Unique identifier of the policy
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def severity(self) -> _builtins.str:
        """
        Policy failure response - 'warning' for continuation, 'error' for exit
        """
        return pulumi.get(self, "severity")


@pulumi.output_type
class GetPolicySetPolicyReferenceResult(dict):
    def __init__(__self__, *,
                 identifier: _builtins.str,
                 severity: _builtins.str):
        """
        :param _builtins.str identifier: Unique identifier of the policy
        :param _builtins.str severity: Policy failure response - 'warning' for continuation, 'error' for exit
        """
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "severity", severity)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        """
        Unique identifier of the policy
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def severity(self) -> _builtins.str:
        """
        Policy failure response - 'warning' for continuation, 'error' for exit
        """
        return pulumi.get(self, "severity")


@pulumi.output_type
class GetProjectListProjectResult(dict):
    def __init__(__self__, *,
                 identifier: _builtins.str,
                 name: _builtins.str):
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")


@pulumi.output_type
class GetPrometheusConnectorHeaderResult(dict):
    def __init__(__self__, *,
                 encrypted_value_ref: _builtins.str,
                 key: _builtins.str,
                 value: _builtins.str,
                 value_encrypted: _builtins.bool):
        """
        :param _builtins.str encrypted_value_ref: Reference to the Harness secret containing the encrypted value. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str key: Key.
        :param _builtins.str value: Value.
        :param _builtins.bool value_encrypted: Encrypted value.
        """
        pulumi.set(__self__, "encrypted_value_ref", encrypted_value_ref)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "value_encrypted", value_encrypted)

    @_builtins.property
    @pulumi.getter(name="encryptedValueRef")
    def encrypted_value_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the encrypted value. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "encrypted_value_ref")

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        Value.
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueEncrypted")
    def value_encrypted(self) -> _builtins.bool:
        """
        Encrypted value.
        """
        return pulumi.get(self, "value_encrypted")


@pulumi.output_type
class GetRepoRuleBranchBypassResult(dict):
    def __init__(__self__, *,
                 repo_owners: Optional[_builtins.bool] = None,
                 user_ids: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.bool repo_owners: Allow users with repository edit permission to bypass.
        :param Sequence[_builtins.str] user_ids: List of user ids with who can bypass.
        """
        if repo_owners is not None:
            pulumi.set(__self__, "repo_owners", repo_owners)
        if user_ids is not None:
            pulumi.set(__self__, "user_ids", user_ids)

    @_builtins.property
    @pulumi.getter(name="repoOwners")
    def repo_owners(self) -> Optional[_builtins.bool]:
        """
        Allow users with repository edit permission to bypass.
        """
        return pulumi.get(self, "repo_owners")

    @_builtins.property
    @pulumi.getter(name="userIds")
    def user_ids(self) -> Optional[Sequence[_builtins.str]]:
        """
        List of user ids with who can bypass.
        """
        return pulumi.get(self, "user_ids")


@pulumi.output_type
class GetRepoRuleBranchPatternResult(dict):
    def __init__(__self__, *,
                 default_branch: Optional[_builtins.bool] = None,
                 excludes: Optional[Sequence[_builtins.str]] = None,
                 includes: Optional[Sequence[_builtins.str]] = None):
        """
        :param _builtins.bool default_branch: Should rule apply to default branch of the repository.
        :param Sequence[_builtins.str] excludes: Globstar branch patterns on which rules will NOT be applied.
        :param Sequence[_builtins.str] includes: Globstar branch patterns on which rules will be applied.
        """
        if default_branch is not None:
            pulumi.set(__self__, "default_branch", default_branch)
        if excludes is not None:
            pulumi.set(__self__, "excludes", excludes)
        if includes is not None:
            pulumi.set(__self__, "includes", includes)

    @_builtins.property
    @pulumi.getter(name="defaultBranch")
    def default_branch(self) -> Optional[_builtins.bool]:
        """
        Should rule apply to default branch of the repository.
        """
        return pulumi.get(self, "default_branch")

    @_builtins.property
    @pulumi.getter
    def excludes(self) -> Optional[Sequence[_builtins.str]]:
        """
        Globstar branch patterns on which rules will NOT be applied.
        """
        return pulumi.get(self, "excludes")

    @_builtins.property
    @pulumi.getter
    def includes(self) -> Optional[Sequence[_builtins.str]]:
        """
        Globstar branch patterns on which rules will be applied.
        """
        return pulumi.get(self, "includes")


@pulumi.output_type
class GetRepoRuleBranchPolicyResult(dict):
    def __init__(__self__, *,
                 allow_merge_strategies: Optional[Sequence[_builtins.str]] = None,
                 block_branch_creation: Optional[_builtins.bool] = None,
                 block_branch_deletion: Optional[_builtins.bool] = None,
                 delete_branch_on_merge: Optional[_builtins.bool] = None,
                 require_code_owners: Optional[_builtins.bool] = None,
                 require_latest_commit_approval: Optional[_builtins.bool] = None,
                 require_minimum_approval_count: Optional[_builtins.int] = None,
                 require_no_change_request: Optional[_builtins.bool] = None,
                 require_pull_request: Optional[_builtins.bool] = None,
                 require_resolve_all_comments: Optional[_builtins.bool] = None,
                 require_status_checks: Optional[Sequence[_builtins.str]] = None):
        """
        :param Sequence[_builtins.str] allow_merge_strategies: Limit which merge strategies are available to merge a pull request(Any of squash, rebase, merge).
        :param _builtins.bool block_branch_creation: Only allow users with bypass permission to create matching branches.
        :param _builtins.bool block_branch_deletion: Only allow users with bypass permission to delete matching branches.
        :param _builtins.bool delete_branch_on_merge: Automatically delete the source branch of a pull request after it is merged.
        :param _builtins.bool require_code_owners: Require approval on pull requests from one reviewer for each codeowner rule.
        :param _builtins.bool require_latest_commit_approval: Require re-approval when there are new changes in the pull request.
        :param _builtins.int require_minimum_approval_count: Require approval on pull requests from a minimum number of reviewers.
        :param _builtins.bool require_no_change_request: Require all request for changes have been resolved.
        :param _builtins.bool require_pull_request: Do not allow any changes to matching branches without a pull request.
        :param _builtins.bool require_resolve_all_comments: All comments on a pull request must be resolved before it can be merged.
        :param Sequence[_builtins.str] require_status_checks: Selected status checks must pass before a pull request can be merged.
        """
        if allow_merge_strategies is not None:
            pulumi.set(__self__, "allow_merge_strategies", allow_merge_strategies)
        if block_branch_creation is not None:
            pulumi.set(__self__, "block_branch_creation", block_branch_creation)
        if block_branch_deletion is not None:
            pulumi.set(__self__, "block_branch_deletion", block_branch_deletion)
        if delete_branch_on_merge is not None:
            pulumi.set(__self__, "delete_branch_on_merge", delete_branch_on_merge)
        if require_code_owners is not None:
            pulumi.set(__self__, "require_code_owners", require_code_owners)
        if require_latest_commit_approval is not None:
            pulumi.set(__self__, "require_latest_commit_approval", require_latest_commit_approval)
        if require_minimum_approval_count is not None:
            pulumi.set(__self__, "require_minimum_approval_count", require_minimum_approval_count)
        if require_no_change_request is not None:
            pulumi.set(__self__, "require_no_change_request", require_no_change_request)
        if require_pull_request is not None:
            pulumi.set(__self__, "require_pull_request", require_pull_request)
        if require_resolve_all_comments is not None:
            pulumi.set(__self__, "require_resolve_all_comments", require_resolve_all_comments)
        if require_status_checks is not None:
            pulumi.set(__self__, "require_status_checks", require_status_checks)

    @_builtins.property
    @pulumi.getter(name="allowMergeStrategies")
    def allow_merge_strategies(self) -> Optional[Sequence[_builtins.str]]:
        """
        Limit which merge strategies are available to merge a pull request(Any of squash, rebase, merge).
        """
        return pulumi.get(self, "allow_merge_strategies")

    @_builtins.property
    @pulumi.getter(name="blockBranchCreation")
    def block_branch_creation(self) -> Optional[_builtins.bool]:
        """
        Only allow users with bypass permission to create matching branches.
        """
        return pulumi.get(self, "block_branch_creation")

    @_builtins.property
    @pulumi.getter(name="blockBranchDeletion")
    def block_branch_deletion(self) -> Optional[_builtins.bool]:
        """
        Only allow users with bypass permission to delete matching branches.
        """
        return pulumi.get(self, "block_branch_deletion")

    @_builtins.property
    @pulumi.getter(name="deleteBranchOnMerge")
    def delete_branch_on_merge(self) -> Optional[_builtins.bool]:
        """
        Automatically delete the source branch of a pull request after it is merged.
        """
        return pulumi.get(self, "delete_branch_on_merge")

    @_builtins.property
    @pulumi.getter(name="requireCodeOwners")
    def require_code_owners(self) -> Optional[_builtins.bool]:
        """
        Require approval on pull requests from one reviewer for each codeowner rule.
        """
        return pulumi.get(self, "require_code_owners")

    @_builtins.property
    @pulumi.getter(name="requireLatestCommitApproval")
    def require_latest_commit_approval(self) -> Optional[_builtins.bool]:
        """
        Require re-approval when there are new changes in the pull request.
        """
        return pulumi.get(self, "require_latest_commit_approval")

    @_builtins.property
    @pulumi.getter(name="requireMinimumApprovalCount")
    def require_minimum_approval_count(self) -> Optional[_builtins.int]:
        """
        Require approval on pull requests from a minimum number of reviewers.
        """
        return pulumi.get(self, "require_minimum_approval_count")

    @_builtins.property
    @pulumi.getter(name="requireNoChangeRequest")
    def require_no_change_request(self) -> Optional[_builtins.bool]:
        """
        Require all request for changes have been resolved.
        """
        return pulumi.get(self, "require_no_change_request")

    @_builtins.property
    @pulumi.getter(name="requirePullRequest")
    def require_pull_request(self) -> Optional[_builtins.bool]:
        """
        Do not allow any changes to matching branches without a pull request.
        """
        return pulumi.get(self, "require_pull_request")

    @_builtins.property
    @pulumi.getter(name="requireResolveAllComments")
    def require_resolve_all_comments(self) -> Optional[_builtins.bool]:
        """
        All comments on a pull request must be resolved before it can be merged.
        """
        return pulumi.get(self, "require_resolve_all_comments")

    @_builtins.property
    @pulumi.getter(name="requireStatusChecks")
    def require_status_checks(self) -> Optional[Sequence[_builtins.str]]:
        """
        Selected status checks must pass before a pull request can be merged.
        """
        return pulumi.get(self, "require_status_checks")


@pulumi.output_type
class GetRepoSourceResult(dict):
    def __init__(__self__, *,
                 host: Optional[_builtins.str] = None,
                 password: Optional[_builtins.str] = None,
                 repo: Optional[_builtins.str] = None,
                 type: Optional[_builtins.str] = None,
                 username: Optional[_builtins.str] = None):
        """
        :param _builtins.str host: The host URL for the import source.
        :param _builtins.str password: The password for authentication when importing.
        :param _builtins.str repo: The full identifier of the repository on the SCM provider's platform.
        :param _builtins.str type: The type of SCM provider (github, gitlab, bitbucket, stash, gitea, gogs) when importing.
        :param _builtins.str username: The username for authentication when importing.
        """
        if host is not None:
            pulumi.set(__self__, "host", host)
        if password is not None:
            pulumi.set(__self__, "password", password)
        if repo is not None:
            pulumi.set(__self__, "repo", repo)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if username is not None:
            pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter
    def host(self) -> Optional[_builtins.str]:
        """
        The host URL for the import source.
        """
        return pulumi.get(self, "host")

    @_builtins.property
    @pulumi.getter
    def password(self) -> Optional[_builtins.str]:
        """
        The password for authentication when importing.
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter
    def repo(self) -> Optional[_builtins.str]:
        """
        The full identifier of the repository on the SCM provider's platform.
        """
        return pulumi.get(self, "repo")

    @_builtins.property
    @pulumi.getter
    def type(self) -> Optional[_builtins.str]:
        """
        The type of SCM provider (github, gitlab, bitbucket, stash, gitea, gogs) when importing.
        """
        return pulumi.get(self, "type")

    @_builtins.property
    @pulumi.getter
    def username(self) -> Optional[_builtins.str]:
        """
        The username for authentication when importing.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GetResourceGroupIncludedScopeResult(dict):
    def __init__(__self__, *,
                 account_id: _builtins.str,
                 filter: _builtins.str,
                 org_id: _builtins.str,
                 project_id: _builtins.str):
        """
        :param _builtins.str account_id: Account Identifier of the account
        :param _builtins.str filter: Can be one of these 2 EXCLUDING_CHILD_SCOPES or INCLUDING_CHILD_SCOPES
        :param _builtins.str org_id: Organization Identifier
        :param _builtins.str project_id: Project Identifier
        """
        pulumi.set(__self__, "account_id", account_id)
        pulumi.set(__self__, "filter", filter)
        pulumi.set(__self__, "org_id", org_id)
        pulumi.set(__self__, "project_id", project_id)

    @_builtins.property
    @pulumi.getter(name="accountId")
    def account_id(self) -> _builtins.str:
        """
        Account Identifier of the account
        """
        return pulumi.get(self, "account_id")

    @_builtins.property
    @pulumi.getter
    def filter(self) -> _builtins.str:
        """
        Can be one of these 2 EXCLUDING_CHILD_SCOPES or INCLUDING_CHILD_SCOPES
        """
        return pulumi.get(self, "filter")

    @_builtins.property
    @pulumi.getter(name="orgId")
    def org_id(self) -> _builtins.str:
        """
        Organization Identifier
        """
        return pulumi.get(self, "org_id")

    @_builtins.property
    @pulumi.getter(name="projectId")
    def project_id(self) -> _builtins.str:
        """
        Project Identifier
        """
        return pulumi.get(self, "project_id")


@pulumi.output_type
class GetResourceGroupResourceFilterResult(dict):
    def __init__(__self__, *,
                 include_all_resources: _builtins.bool,
                 resources: Sequence['outputs.GetResourceGroupResourceFilterResourceResult']):
        """
        :param _builtins.bool include_all_resources: Include all resource or not
        :param Sequence['GetResourceGroupResourceFilterResourceArgs'] resources: Resources for a resource group
        """
        pulumi.set(__self__, "include_all_resources", include_all_resources)
        pulumi.set(__self__, "resources", resources)

    @_builtins.property
    @pulumi.getter(name="includeAllResources")
    def include_all_resources(self) -> _builtins.bool:
        """
        Include all resource or not
        """
        return pulumi.get(self, "include_all_resources")

    @_builtins.property
    @pulumi.getter
    def resources(self) -> Sequence['outputs.GetResourceGroupResourceFilterResourceResult']:
        """
        Resources for a resource group
        """
        return pulumi.get(self, "resources")


@pulumi.output_type
class GetResourceGroupResourceFilterResourceResult(dict):
    def __init__(__self__, *,
                 attribute_filters: Sequence['outputs.GetResourceGroupResourceFilterResourceAttributeFilterResult'],
                 identifiers: Sequence[_builtins.str],
                 resource_type: _builtins.str):
        """
        :param Sequence['GetResourceGroupResourceFilterResourceAttributeFilterArgs'] attribute_filters: Used to filter resources on their attributes
        :param Sequence[_builtins.str] identifiers: List of the identifiers
        :param _builtins.str resource_type: Type of the resource
        """
        pulumi.set(__self__, "attribute_filters", attribute_filters)
        pulumi.set(__self__, "identifiers", identifiers)
        pulumi.set(__self__, "resource_type", resource_type)

    @_builtins.property
    @pulumi.getter(name="attributeFilters")
    def attribute_filters(self) -> Sequence['outputs.GetResourceGroupResourceFilterResourceAttributeFilterResult']:
        """
        Used to filter resources on their attributes
        """
        return pulumi.get(self, "attribute_filters")

    @_builtins.property
    @pulumi.getter
    def identifiers(self) -> Sequence[_builtins.str]:
        """
        List of the identifiers
        """
        return pulumi.get(self, "identifiers")

    @_builtins.property
    @pulumi.getter(name="resourceType")
    def resource_type(self) -> _builtins.str:
        """
        Type of the resource
        """
        return pulumi.get(self, "resource_type")


@pulumi.output_type
class GetResourceGroupResourceFilterResourceAttributeFilterResult(dict):
    def __init__(__self__, *,
                 attribute_name: _builtins.str,
                 attribute_values: Sequence[_builtins.str]):
        """
        :param _builtins.str attribute_name: Name of the attribute
        :param Sequence[_builtins.str] attribute_values: Value of the attributes
        """
        pulumi.set(__self__, "attribute_name", attribute_name)
        pulumi.set(__self__, "attribute_values", attribute_values)

    @_builtins.property
    @pulumi.getter(name="attributeName")
    def attribute_name(self) -> _builtins.str:
        """
        Name of the attribute
        """
        return pulumi.get(self, "attribute_name")

    @_builtins.property
    @pulumi.getter(name="attributeValues")
    def attribute_values(self) -> Sequence[_builtins.str]:
        """
        Value of the attributes
        """
        return pulumi.get(self, "attribute_values")


@pulumi.output_type
class GetRoleAssignmentsPrincipalResult(dict):
    def __init__(__self__, *,
                 identifier: _builtins.str,
                 scope_level: _builtins.str,
                 type: _builtins.str):
        """
        :param _builtins.str identifier: Identifier.
        :param _builtins.str scope_level: Scope level.
        :param _builtins.str type: Type.
        """
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "scope_level", scope_level)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        """
        Identifier.
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter(name="scopeLevel")
    def scope_level(self) -> _builtins.str:
        """
        Scope level.
        """
        return pulumi.get(self, "scope_level")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetSecretFileAdditionalMetadataResult(dict):
    def __init__(__self__, *,
                 values: Optional[Sequence['outputs.GetSecretFileAdditionalMetadataValueResult']] = None):
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence['outputs.GetSecretFileAdditionalMetadataValueResult']]:
        return pulumi.get(self, "values")


@pulumi.output_type
class GetSecretFileAdditionalMetadataValueResult(dict):
    def __init__(__self__, *,
                 gcp_project_id: Optional[_builtins.str] = None,
                 kms_key_id: Optional[_builtins.str] = None,
                 regions: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param _builtins.str gcp_project_id: GCP Project ID (for GCP Secret Manager)
        :param _builtins.str kms_key_id: KMS Key ID (for AWS Secret Manager)
        :param _builtins.str regions: GCP region for the secret (for GCP Secret Manager)
        :param _builtins.str version: Version of the secret (for AWS/Azure Secret Manager)
        """
        if gcp_project_id is not None:
            pulumi.set(__self__, "gcp_project_id", gcp_project_id)
        if kms_key_id is not None:
            pulumi.set(__self__, "kms_key_id", kms_key_id)
        if regions is not None:
            pulumi.set(__self__, "regions", regions)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="gcpProjectId")
    def gcp_project_id(self) -> Optional[_builtins.str]:
        """
        GCP Project ID (for GCP Secret Manager)
        """
        return pulumi.get(self, "gcp_project_id")

    @_builtins.property
    @pulumi.getter(name="kmsKeyId")
    def kms_key_id(self) -> Optional[_builtins.str]:
        """
        KMS Key ID (for AWS Secret Manager)
        """
        return pulumi.get(self, "kms_key_id")

    @_builtins.property
    @pulumi.getter
    def regions(self) -> Optional[_builtins.str]:
        """
        GCP region for the secret (for GCP Secret Manager)
        """
        return pulumi.get(self, "regions")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of the secret (for AWS/Azure Secret Manager)
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GetSecretSshkeyKerberoResult(dict):
    def __init__(__self__, *,
                 principal: _builtins.str,
                 realm: _builtins.str,
                 tgt_generation_method: _builtins.str,
                 tgt_key_tab_file_path_specs: Sequence['outputs.GetSecretSshkeyKerberoTgtKeyTabFilePathSpecResult'],
                 tgt_password_specs: Sequence['outputs.GetSecretSshkeyKerberoTgtPasswordSpecResult']):
        """
        :param _builtins.str principal: Username to use for authentication.
        :param _builtins.str realm: Reference to a secret containing the password to use for authentication.
        :param _builtins.str tgt_generation_method: Method to generate tgt
        :param Sequence['GetSecretSshkeyKerberoTgtKeyTabFilePathSpecArgs'] tgt_key_tab_file_path_specs: Authenticate to App Dynamics using username and password.
        :param Sequence['GetSecretSshkeyKerberoTgtPasswordSpecArgs'] tgt_password_specs: Authenticate to App Dynamics using username and password.
        """
        pulumi.set(__self__, "principal", principal)
        pulumi.set(__self__, "realm", realm)
        pulumi.set(__self__, "tgt_generation_method", tgt_generation_method)
        pulumi.set(__self__, "tgt_key_tab_file_path_specs", tgt_key_tab_file_path_specs)
        pulumi.set(__self__, "tgt_password_specs", tgt_password_specs)

    @_builtins.property
    @pulumi.getter
    def principal(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "principal")

    @_builtins.property
    @pulumi.getter
    def realm(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication.
        """
        return pulumi.get(self, "realm")

    @_builtins.property
    @pulumi.getter(name="tgtGenerationMethod")
    def tgt_generation_method(self) -> _builtins.str:
        """
        Method to generate tgt
        """
        return pulumi.get(self, "tgt_generation_method")

    @_builtins.property
    @pulumi.getter(name="tgtKeyTabFilePathSpecs")
    def tgt_key_tab_file_path_specs(self) -> Sequence['outputs.GetSecretSshkeyKerberoTgtKeyTabFilePathSpecResult']:
        """
        Authenticate to App Dynamics using username and password.
        """
        return pulumi.get(self, "tgt_key_tab_file_path_specs")

    @_builtins.property
    @pulumi.getter(name="tgtPasswordSpecs")
    def tgt_password_specs(self) -> Sequence['outputs.GetSecretSshkeyKerberoTgtPasswordSpecResult']:
        """
        Authenticate to App Dynamics using username and password.
        """
        return pulumi.get(self, "tgt_password_specs")


@pulumi.output_type
class GetSecretSshkeyKerberoTgtKeyTabFilePathSpecResult(dict):
    def __init__(__self__, *,
                 key_path: _builtins.str):
        """
        :param _builtins.str key_path: key path
        """
        pulumi.set(__self__, "key_path", key_path)

    @_builtins.property
    @pulumi.getter(name="keyPath")
    def key_path(self) -> _builtins.str:
        """
        key path
        """
        return pulumi.get(self, "key_path")


@pulumi.output_type
class GetSecretSshkeyKerberoTgtPasswordSpecResult(dict):
    def __init__(__self__, *,
                 password: _builtins.str):
        """
        :param _builtins.str password: password
        """
        pulumi.set(__self__, "password", password)

    @_builtins.property
    @pulumi.getter
    def password(self) -> _builtins.str:
        """
        password
        """
        return pulumi.get(self, "password")


@pulumi.output_type
class GetSecretSshkeySshResult(dict):
    def __init__(__self__, *,
                 credential_type: _builtins.str,
                 ssh_password_credentials: Sequence['outputs.GetSecretSshkeySshSshPasswordCredentialResult'],
                 sshkey_path_credentials: Sequence['outputs.GetSecretSshkeySshSshkeyPathCredentialResult'],
                 sshkey_reference_credentials: Sequence['outputs.GetSecretSshkeySshSshkeyReferenceCredentialResult']):
        """
        :param _builtins.str credential_type: This specifies SSH credential type as Password, KeyPath or KeyReference
        :param Sequence['GetSecretSshkeySshSshPasswordCredentialArgs'] ssh_password_credentials: SSH credential of type keyReference
        :param Sequence['GetSecretSshkeySshSshkeyPathCredentialArgs'] sshkey_path_credentials: SSH credential of type keyPath
        :param Sequence['GetSecretSshkeySshSshkeyReferenceCredentialArgs'] sshkey_reference_credentials: SSH credential of type keyReference
        """
        pulumi.set(__self__, "credential_type", credential_type)
        pulumi.set(__self__, "ssh_password_credentials", ssh_password_credentials)
        pulumi.set(__self__, "sshkey_path_credentials", sshkey_path_credentials)
        pulumi.set(__self__, "sshkey_reference_credentials", sshkey_reference_credentials)

    @_builtins.property
    @pulumi.getter(name="credentialType")
    def credential_type(self) -> _builtins.str:
        """
        This specifies SSH credential type as Password, KeyPath or KeyReference
        """
        return pulumi.get(self, "credential_type")

    @_builtins.property
    @pulumi.getter(name="sshPasswordCredentials")
    def ssh_password_credentials(self) -> Sequence['outputs.GetSecretSshkeySshSshPasswordCredentialResult']:
        """
        SSH credential of type keyReference
        """
        return pulumi.get(self, "ssh_password_credentials")

    @_builtins.property
    @pulumi.getter(name="sshkeyPathCredentials")
    def sshkey_path_credentials(self) -> Sequence['outputs.GetSecretSshkeySshSshkeyPathCredentialResult']:
        """
        SSH credential of type keyPath
        """
        return pulumi.get(self, "sshkey_path_credentials")

    @_builtins.property
    @pulumi.getter(name="sshkeyReferenceCredentials")
    def sshkey_reference_credentials(self) -> Sequence['outputs.GetSecretSshkeySshSshkeyReferenceCredentialResult']:
        """
        SSH credential of type keyReference
        """
        return pulumi.get(self, "sshkey_reference_credentials")


@pulumi.output_type
class GetSecretSshkeySshSshPasswordCredentialResult(dict):
    def __init__(__self__, *,
                 password: _builtins.str,
                 user_name: _builtins.str):
        """
        :param _builtins.str password: SSH Password.
        :param _builtins.str user_name: SSH Username.
        """
        pulumi.set(__self__, "password", password)
        pulumi.set(__self__, "user_name", user_name)

    @_builtins.property
    @pulumi.getter
    def password(self) -> _builtins.str:
        """
        SSH Password.
        """
        return pulumi.get(self, "password")

    @_builtins.property
    @pulumi.getter(name="userName")
    def user_name(self) -> _builtins.str:
        """
        SSH Username.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetSecretSshkeySshSshkeyPathCredentialResult(dict):
    def __init__(__self__, *,
                 encrypted_passphrase: _builtins.str,
                 key_path: _builtins.str,
                 user_name: _builtins.str):
        """
        :param _builtins.str encrypted_passphrase: Encrypted Passphrase
        :param _builtins.str key_path: Path of the key file.
        :param _builtins.str user_name: SSH Username.
        """
        pulumi.set(__self__, "encrypted_passphrase", encrypted_passphrase)
        pulumi.set(__self__, "key_path", key_path)
        pulumi.set(__self__, "user_name", user_name)

    @_builtins.property
    @pulumi.getter(name="encryptedPassphrase")
    def encrypted_passphrase(self) -> _builtins.str:
        """
        Encrypted Passphrase
        """
        return pulumi.get(self, "encrypted_passphrase")

    @_builtins.property
    @pulumi.getter(name="keyPath")
    def key_path(self) -> _builtins.str:
        """
        Path of the key file.
        """
        return pulumi.get(self, "key_path")

    @_builtins.property
    @pulumi.getter(name="userName")
    def user_name(self) -> _builtins.str:
        """
        SSH Username.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetSecretSshkeySshSshkeyReferenceCredentialResult(dict):
    def __init__(__self__, *,
                 encrypted_assphrase: _builtins.str,
                 key: _builtins.str,
                 user_name: _builtins.str):
        """
        :param _builtins.str encrypted_assphrase: Encrypted Passphrase
        :param _builtins.str key: SSH key.
        :param _builtins.str user_name: SSH Username.
        """
        pulumi.set(__self__, "encrypted_assphrase", encrypted_assphrase)
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "user_name", user_name)

    @_builtins.property
    @pulumi.getter(name="encryptedAssphrase")
    def encrypted_assphrase(self) -> _builtins.str:
        """
        Encrypted Passphrase
        """
        return pulumi.get(self, "encrypted_assphrase")

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        SSH key.
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter(name="userName")
    def user_name(self) -> _builtins.str:
        """
        SSH Username.
        """
        return pulumi.get(self, "user_name")


@pulumi.output_type
class GetSecretTextAdditionalMetadataResult(dict):
    def __init__(__self__, *,
                 values: Optional[Sequence['outputs.GetSecretTextAdditionalMetadataValueResult']] = None):
        if values is not None:
            pulumi.set(__self__, "values", values)

    @_builtins.property
    @pulumi.getter
    def values(self) -> Optional[Sequence['outputs.GetSecretTextAdditionalMetadataValueResult']]:
        return pulumi.get(self, "values")


@pulumi.output_type
class GetSecretTextAdditionalMetadataValueResult(dict):
    def __init__(__self__, *,
                 gcp_project_id: Optional[_builtins.str] = None,
                 kms_key_id: Optional[_builtins.str] = None,
                 regions: Optional[_builtins.str] = None,
                 version: Optional[_builtins.str] = None):
        """
        :param _builtins.str gcp_project_id: GCP Project ID (for GCP Secret Manager)
        :param _builtins.str kms_key_id: KMS Key ID (for AWS Secret Manager)
        :param _builtins.str regions: GCP region for the secret (for GCP Secret Manager)
        :param _builtins.str version: Version of the secret (for AWS/Azure Secret Manager)
        """
        if gcp_project_id is not None:
            pulumi.set(__self__, "gcp_project_id", gcp_project_id)
        if kms_key_id is not None:
            pulumi.set(__self__, "kms_key_id", kms_key_id)
        if regions is not None:
            pulumi.set(__self__, "regions", regions)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @_builtins.property
    @pulumi.getter(name="gcpProjectId")
    def gcp_project_id(self) -> Optional[_builtins.str]:
        """
        GCP Project ID (for GCP Secret Manager)
        """
        return pulumi.get(self, "gcp_project_id")

    @_builtins.property
    @pulumi.getter(name="kmsKeyId")
    def kms_key_id(self) -> Optional[_builtins.str]:
        """
        KMS Key ID (for AWS Secret Manager)
        """
        return pulumi.get(self, "kms_key_id")

    @_builtins.property
    @pulumi.getter
    def regions(self) -> Optional[_builtins.str]:
        """
        GCP region for the secret (for GCP Secret Manager)
        """
        return pulumi.get(self, "regions")

    @_builtins.property
    @pulumi.getter
    def version(self) -> Optional[_builtins.str]:
        """
        Version of the secret (for AWS/Azure Secret Manager)
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GetSecretWinrmKerberoResult(dict):
    def __init__(__self__, *,
                 principal: _builtins.str,
                 realm: _builtins.str,
                 skip_cert_check: _builtins.bool,
                 tgt_generation_method: _builtins.str,
                 tgt_key_tab_file_path_specs: Sequence['outputs.GetSecretWinrmKerberoTgtKeyTabFilePathSpecResult'],
                 tgt_password_specs: Sequence['outputs.GetSecretWinrmKerberoTgtPasswordSpecResult'],
                 use_no_profile: _builtins.bool,
                 use_ssl: _builtins.bool):
        """
        :param _builtins.str principal: Kerberos principal.
        :param _builtins.str realm: Kerberos realm.
        :param _builtins.bool skip_cert_check: Skip certificate verification.
        :param _builtins.str tgt_generation_method: Method to generate TGT (Ticket Granting Ticket).
        :param Sequence['GetSecretWinrmKerberoTgtKeyTabFilePathSpecArgs'] tgt_key_tab_file_path_specs: TGT generation using key tab file.
        :param Sequence['GetSecretWinrmKerberoTgtPasswordSpecArgs'] tgt_password_specs: TGT generation using password.
        :param _builtins.bool use_no_profile: Use no profile.
        :param _builtins.bool use_ssl: Use SSL/TLS for WinRM communication.
        """
        pulumi.set(__self__, "principal", principal)
        pulumi.set(__self__, "realm", realm)
        pulumi.set(__self__, "skip_cert_check", skip_cert_check)
        pulumi.set(__self__, "tgt_generation_method", tgt_generation_method)
        pulumi.set(__self__, "tgt_key_tab_file_path_specs", tgt_key_tab_file_path_specs)
        pulumi.set(__self__, "tgt_password_specs", tgt_password_specs)
        pulumi.set(__self__, "use_no_profile", use_no_profile)
        pulumi.set(__self__, "use_ssl", use_ssl)

    @_builtins.property
    @pulumi.getter
    def principal(self) -> _builtins.str:
        """
        Kerberos principal.
        """
        return pulumi.get(self, "principal")

    @_builtins.property
    @pulumi.getter
    def realm(self) -> _builtins.str:
        """
        Kerberos realm.
        """
        return pulumi.get(self, "realm")

    @_builtins.property
    @pulumi.getter(name="skipCertCheck")
    def skip_cert_check(self) -> _builtins.bool:
        """
        Skip certificate verification.
        """
        return pulumi.get(self, "skip_cert_check")

    @_builtins.property
    @pulumi.getter(name="tgtGenerationMethod")
    def tgt_generation_method(self) -> _builtins.str:
        """
        Method to generate TGT (Ticket Granting Ticket).
        """
        return pulumi.get(self, "tgt_generation_method")

    @_builtins.property
    @pulumi.getter(name="tgtKeyTabFilePathSpecs")
    def tgt_key_tab_file_path_specs(self) -> Sequence['outputs.GetSecretWinrmKerberoTgtKeyTabFilePathSpecResult']:
        """
        TGT generation using key tab file.
        """
        return pulumi.get(self, "tgt_key_tab_file_path_specs")

    @_builtins.property
    @pulumi.getter(name="tgtPasswordSpecs")
    def tgt_password_specs(self) -> Sequence['outputs.GetSecretWinrmKerberoTgtPasswordSpecResult']:
        """
        TGT generation using password.
        """
        return pulumi.get(self, "tgt_password_specs")

    @_builtins.property
    @pulumi.getter(name="useNoProfile")
    def use_no_profile(self) -> _builtins.bool:
        """
        Use no profile.
        """
        return pulumi.get(self, "use_no_profile")

    @_builtins.property
    @pulumi.getter(name="useSsl")
    def use_ssl(self) -> _builtins.bool:
        """
        Use SSL/TLS for WinRM communication.
        """
        return pulumi.get(self, "use_ssl")


@pulumi.output_type
class GetSecretWinrmKerberoTgtKeyTabFilePathSpecResult(dict):
    def __init__(__self__, *,
                 key_path: _builtins.str):
        """
        :param _builtins.str key_path: Path to the key tab file.
        """
        pulumi.set(__self__, "key_path", key_path)

    @_builtins.property
    @pulumi.getter(name="keyPath")
    def key_path(self) -> _builtins.str:
        """
        Path to the key tab file.
        """
        return pulumi.get(self, "key_path")


@pulumi.output_type
class GetSecretWinrmKerberoTgtPasswordSpecResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password.
        """
        pulumi.set(__self__, "password_ref", password_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password.
        """
        return pulumi.get(self, "password_ref")


@pulumi.output_type
class GetSecretWinrmNtlmResult(dict):
    def __init__(__self__, *,
                 domain: _builtins.str,
                 password_ref: _builtins.str,
                 skip_cert_check: _builtins.bool,
                 use_no_profile: _builtins.bool,
                 use_ssl: _builtins.bool,
                 username: _builtins.str):
        """
        :param _builtins.str domain: Domain name for NTLM authentication.
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication.
        :param _builtins.bool skip_cert_check: Skip certificate verification.
        :param _builtins.bool use_no_profile: Use no profile.
        :param _builtins.bool use_ssl: Use SSL/TLS for WinRM communication.
        :param _builtins.str username: Username to use for authentication.
        """
        pulumi.set(__self__, "domain", domain)
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "skip_cert_check", skip_cert_check)
        pulumi.set(__self__, "use_no_profile", use_no_profile)
        pulumi.set(__self__, "use_ssl", use_ssl)
        pulumi.set(__self__, "username", username)

    @_builtins.property
    @pulumi.getter
    def domain(self) -> _builtins.str:
        """
        Domain name for NTLM authentication.
        """
        return pulumi.get(self, "domain")

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter(name="skipCertCheck")
    def skip_cert_check(self) -> _builtins.bool:
        """
        Skip certificate verification.
        """
        return pulumi.get(self, "skip_cert_check")

    @_builtins.property
    @pulumi.getter(name="useNoProfile")
    def use_no_profile(self) -> _builtins.bool:
        """
        Use no profile.
        """
        return pulumi.get(self, "use_no_profile")

    @_builtins.property
    @pulumi.getter(name="useSsl")
    def use_ssl(self) -> _builtins.bool:
        """
        Use SSL/TLS for WinRM communication.
        """
        return pulumi.get(self, "use_ssl")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")


@pulumi.output_type
class GetServiceGitDetailsResult(dict):
    def __init__(__self__, *,
                 branch: _builtins.str,
                 load_from_fallback_branch: _builtins.bool,
                 repo_name: _builtins.str):
        """
        :param _builtins.str branch: Name of the branch.
        :param _builtins.bool load_from_fallback_branch: Load service yaml from fallback branch
        :param _builtins.str repo_name: Repo name of remote service
        """
        pulumi.set(__self__, "branch", branch)
        pulumi.set(__self__, "load_from_fallback_branch", load_from_fallback_branch)
        pulumi.set(__self__, "repo_name", repo_name)

    @_builtins.property
    @pulumi.getter
    def branch(self) -> _builtins.str:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch")

    @_builtins.property
    @pulumi.getter(name="loadFromFallbackBranch")
    def load_from_fallback_branch(self) -> _builtins.bool:
        """
        Load service yaml from fallback branch
        """
        return pulumi.get(self, "load_from_fallback_branch")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> _builtins.str:
        """
        Repo name of remote service
        """
        return pulumi.get(self, "repo_name")


@pulumi.output_type
class GetServiceListServiceResult(dict):
    def __init__(__self__, *,
                 identifier: _builtins.str,
                 name: _builtins.str):
        pulumi.set(__self__, "identifier", identifier)
        pulumi.set(__self__, "name", name)

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        return pulumi.get(self, "name")


@pulumi.output_type
class GetServiceNowConnectorAuthResult(dict):
    def __init__(__self__, *,
                 adfs: Sequence['outputs.GetServiceNowConnectorAuthAdfResult'],
                 auth_type: _builtins.str,
                 refresh_tokens: Sequence['outputs.GetServiceNowConnectorAuthRefreshTokenResult'],
                 username_passwords: Sequence['outputs.GetServiceNowConnectorAuthUsernamePasswordResult']):
        """
        :param Sequence['GetServiceNowConnectorAuthAdfArgs'] adfs: Authenticate using adfs client credentials with certificate.
        :param _builtins.str auth_type: Authentication types for Jira connector
        :param Sequence['GetServiceNowConnectorAuthRefreshTokenArgs'] refresh_tokens: Authenticate using refresh token grant type.
        :param Sequence['GetServiceNowConnectorAuthUsernamePasswordArgs'] username_passwords: Authenticate using username password.
        """
        pulumi.set(__self__, "adfs", adfs)
        pulumi.set(__self__, "auth_type", auth_type)
        pulumi.set(__self__, "refresh_tokens", refresh_tokens)
        pulumi.set(__self__, "username_passwords", username_passwords)

    @_builtins.property
    @pulumi.getter
    def adfs(self) -> Sequence['outputs.GetServiceNowConnectorAuthAdfResult']:
        """
        Authenticate using adfs client credentials with certificate.
        """
        return pulumi.get(self, "adfs")

    @_builtins.property
    @pulumi.getter(name="authType")
    def auth_type(self) -> _builtins.str:
        """
        Authentication types for Jira connector
        """
        return pulumi.get(self, "auth_type")

    @_builtins.property
    @pulumi.getter(name="refreshTokens")
    def refresh_tokens(self) -> Sequence['outputs.GetServiceNowConnectorAuthRefreshTokenResult']:
        """
        Authenticate using refresh token grant type.
        """
        return pulumi.get(self, "refresh_tokens")

    @_builtins.property
    @pulumi.getter(name="usernamePasswords")
    def username_passwords(self) -> Sequence['outputs.GetServiceNowConnectorAuthUsernamePasswordResult']:
        """
        Authenticate using username password.
        """
        return pulumi.get(self, "username_passwords")


@pulumi.output_type
class GetServiceNowConnectorAuthAdfResult(dict):
    def __init__(__self__, *,
                 adfs_url: _builtins.str,
                 certificate_ref: _builtins.str,
                 client_id_ref: _builtins.str,
                 private_key_ref: _builtins.str,
                 resource_id_ref: _builtins.str):
        """
        :param _builtins.str adfs_url: asdf URL.
        :param _builtins.str certificate_ref: Reference to a secret containing the certificate to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str client_id_ref: Reference to a secret containing the clientIdRef to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str private_key_ref: Reference to a secret containing the privateKeyRef to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str resource_id_ref: Reference to a secret containing the resourceIdRef to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "adfs_url", adfs_url)
        pulumi.set(__self__, "certificate_ref", certificate_ref)
        pulumi.set(__self__, "client_id_ref", client_id_ref)
        pulumi.set(__self__, "private_key_ref", private_key_ref)
        pulumi.set(__self__, "resource_id_ref", resource_id_ref)

    @_builtins.property
    @pulumi.getter(name="adfsUrl")
    def adfs_url(self) -> _builtins.str:
        """
        asdf URL.
        """
        return pulumi.get(self, "adfs_url")

    @_builtins.property
    @pulumi.getter(name="certificateRef")
    def certificate_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the certificate to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "certificate_ref")

    @_builtins.property
    @pulumi.getter(name="clientIdRef")
    def client_id_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the clientIdRef to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_id_ref")

    @_builtins.property
    @pulumi.getter(name="privateKeyRef")
    def private_key_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the privateKeyRef to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "private_key_ref")

    @_builtins.property
    @pulumi.getter(name="resourceIdRef")
    def resource_id_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the resourceIdRef to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "resource_id_ref")


@pulumi.output_type
class GetServiceNowConnectorAuthRefreshTokenResult(dict):
    def __init__(__self__, *,
                 client_id_ref: _builtins.str,
                 client_secret_ref: _builtins.str,
                 refresh_token_ref: _builtins.str,
                 scope: _builtins.str,
                 token_url: _builtins.str):
        """
        :param _builtins.str client_id_ref: Reference to a secret containing the client id to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str client_secret_ref: Reference to a secret containing the client secret to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str refresh_token_ref: Reference to a secret containing the refresh token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str scope: Scope string to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str token_url: Token url to use for authentication.
        """
        pulumi.set(__self__, "client_id_ref", client_id_ref)
        pulumi.set(__self__, "client_secret_ref", client_secret_ref)
        pulumi.set(__self__, "refresh_token_ref", refresh_token_ref)
        pulumi.set(__self__, "scope", scope)
        pulumi.set(__self__, "token_url", token_url)

    @_builtins.property
    @pulumi.getter(name="clientIdRef")
    def client_id_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the client id to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_id_ref")

    @_builtins.property
    @pulumi.getter(name="clientSecretRef")
    def client_secret_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the client secret to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "client_secret_ref")

    @_builtins.property
    @pulumi.getter(name="refreshTokenRef")
    def refresh_token_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the refresh token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "refresh_token_ref")

    @_builtins.property
    @pulumi.getter
    def scope(self) -> _builtins.str:
        """
        Scope string to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "scope")

    @_builtins.property
    @pulumi.getter(name="tokenUrl")
    def token_url(self) -> _builtins.str:
        """
        Token url to use for authentication.
        """
        return pulumi.get(self, "token_url")


@pulumi.output_type
class GetServiceNowConnectorAuthUsernamePasswordResult(dict):
    def __init__(__self__, *,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str password_ref: Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the password to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetServiceOverridesV2GitDetailsResult(dict):
    def __init__(__self__, *,
                 branch: _builtins.str,
                 load_from_cache: _builtins.bool,
                 load_from_fallback_branch: _builtins.bool,
                 repo_name: _builtins.str):
        """
        :param _builtins.str branch: Name of the branch.
        :param _builtins.bool load_from_cache: Load service yaml from fallback branch
        :param _builtins.bool load_from_fallback_branch: Load service yaml from fallback branch
        :param _builtins.str repo_name: Repo name of remote service override
        """
        pulumi.set(__self__, "branch", branch)
        pulumi.set(__self__, "load_from_cache", load_from_cache)
        pulumi.set(__self__, "load_from_fallback_branch", load_from_fallback_branch)
        pulumi.set(__self__, "repo_name", repo_name)

    @_builtins.property
    @pulumi.getter
    def branch(self) -> _builtins.str:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch")

    @_builtins.property
    @pulumi.getter(name="loadFromCache")
    def load_from_cache(self) -> _builtins.bool:
        """
        Load service yaml from fallback branch
        """
        return pulumi.get(self, "load_from_cache")

    @_builtins.property
    @pulumi.getter(name="loadFromFallbackBranch")
    def load_from_fallback_branch(self) -> _builtins.bool:
        """
        Load service yaml from fallback branch
        """
        return pulumi.get(self, "load_from_fallback_branch")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> _builtins.str:
        """
        Repo name of remote service override
        """
        return pulumi.get(self, "repo_name")


@pulumi.output_type
class GetSpotConnectorPermanentTokenResult(dict):
    def __init__(__self__, *,
                 api_token_ref: _builtins.str,
                 delegate_selectors: Sequence[_builtins.str],
                 execute_on_delegate: _builtins.bool,
                 spot_account_id: _builtins.str,
                 spot_account_id_ref: _builtins.str):
        """
        :param _builtins.str api_token_ref: Reference to the Harness secret containing the permanent api token. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        :param Sequence[_builtins.str] delegate_selectors: Connect only using delegates with these tags.
        :param _builtins.bool execute_on_delegate: Execute on delegate or not.
        :param _builtins.str spot_account_id: Spot account id.
        :param _builtins.str spot_account_id_ref: Reference to the Harness secret containing the spot account id. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "api_token_ref", api_token_ref)
        pulumi.set(__self__, "delegate_selectors", delegate_selectors)
        pulumi.set(__self__, "execute_on_delegate", execute_on_delegate)
        pulumi.set(__self__, "spot_account_id", spot_account_id)
        pulumi.set(__self__, "spot_account_id_ref", spot_account_id_ref)

    @_builtins.property
    @pulumi.getter(name="apiTokenRef")
    def api_token_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the permanent api token. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "api_token_ref")

    @_builtins.property
    @pulumi.getter(name="delegateSelectors")
    def delegate_selectors(self) -> Sequence[_builtins.str]:
        """
        Connect only using delegates with these tags.
        """
        return pulumi.get(self, "delegate_selectors")

    @_builtins.property
    @pulumi.getter(name="executeOnDelegate")
    def execute_on_delegate(self) -> _builtins.bool:
        """
        Execute on delegate or not.
        """
        return pulumi.get(self, "execute_on_delegate")

    @_builtins.property
    @pulumi.getter(name="spotAccountId")
    def spot_account_id(self) -> _builtins.str:
        """
        Spot account id.
        """
        return pulumi.get(self, "spot_account_id")

    @_builtins.property
    @pulumi.getter(name="spotAccountIdRef")
    def spot_account_id_ref(self) -> _builtins.str:
        """
        Reference to the Harness secret containing the spot account id. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "spot_account_id_ref")


@pulumi.output_type
class GetTasConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 tas_manual_details: Sequence['outputs.GetTasConnectorCredentialTasManualDetailResult'],
                 type: _builtins.str):
        """
        :param Sequence['GetTasConnectorCredentialTasManualDetailArgs'] tas_manual_details: Authenticate to Tas using manual details.
        :param _builtins.str type: Type can be ManualConfig.
        """
        pulumi.set(__self__, "tas_manual_details", tas_manual_details)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="tasManualDetails")
    def tas_manual_details(self) -> Sequence['outputs.GetTasConnectorCredentialTasManualDetailResult']:
        """
        Authenticate to Tas using manual details.
        """
        return pulumi.get(self, "tas_manual_details")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type can be ManualConfig.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetTasConnectorCredentialTasManualDetailResult(dict):
    def __init__(__self__, *,
                 endpoint_url: _builtins.str,
                 password_ref: _builtins.str,
                 username: _builtins.str,
                 username_ref: _builtins.str):
        """
        :param _builtins.str endpoint_url: URL of the Tas server.
        :param _builtins.str password_ref: Reference of the secret for the password.
        :param _builtins.str username: Username to use for authentication.
        :param _builtins.str username_ref: Reference to a secret containing the username to use for authentication.
        """
        pulumi.set(__self__, "endpoint_url", endpoint_url)
        pulumi.set(__self__, "password_ref", password_ref)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "username_ref", username_ref)

    @_builtins.property
    @pulumi.getter(name="endpointUrl")
    def endpoint_url(self) -> _builtins.str:
        """
        URL of the Tas server.
        """
        return pulumi.get(self, "endpoint_url")

    @_builtins.property
    @pulumi.getter(name="passwordRef")
    def password_ref(self) -> _builtins.str:
        """
        Reference of the secret for the password.
        """
        return pulumi.get(self, "password_ref")

    @_builtins.property
    @pulumi.getter
    def username(self) -> _builtins.str:
        """
        Username to use for authentication.
        """
        return pulumi.get(self, "username")

    @_builtins.property
    @pulumi.getter(name="usernameRef")
    def username_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the username to use for authentication.
        """
        return pulumi.get(self, "username_ref")


@pulumi.output_type
class GetTemplateFiltersFilterPropertyResult(dict):
    def __init__(__self__, *,
                 filter_type: _builtins.str,
                 tags: Sequence[_builtins.str]):
        """
        :param _builtins.str filter_type: Corresponding Entity of the filters. Currently supported types are {Connector, DelegateProfile, Delegate, TemplateSetup, TemplateExecution, Deployment, Audit, Template, EnvironmentGroup, FileStore, CCMRecommendation, Anomaly, Environment}.
        :param Sequence[_builtins.str] tags: Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        pulumi.set(__self__, "filter_type", filter_type)
        pulumi.set(__self__, "tags", tags)

    @_builtins.property
    @pulumi.getter(name="filterType")
    def filter_type(self) -> _builtins.str:
        """
        Corresponding Entity of the filters. Currently supported types are {Connector, DelegateProfile, Delegate, TemplateSetup, TemplateExecution, Deployment, Audit, Template, EnvironmentGroup, FileStore, CCMRecommendation, Anomaly, Environment}.
        """
        return pulumi.get(self, "filter_type")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Sequence[_builtins.str]:
        """
        Tags to associate with the resource. Tags should be in the form `name:value`.
        """
        return pulumi.get(self, "tags")


@pulumi.output_type
class GetTemplateGitDetailsResult(dict):
    def __init__(__self__, *,
                 last_commit_id: _builtins.str,
                 last_object_id: _builtins.str,
                 branch_name: Optional[_builtins.str] = None,
                 file_path: Optional[_builtins.str] = None,
                 file_url: Optional[_builtins.str] = None,
                 repo_name: Optional[_builtins.str] = None,
                 repo_url: Optional[_builtins.str] = None):
        """
        :param _builtins.str last_commit_id: Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        :param _builtins.str last_object_id: Last object identifier (for Github). To be provided only when updating Pipeline.
        :param _builtins.str branch_name: Name of the branch.
        :param _builtins.str file_path: File path of the Entity in the repository.
        :param _builtins.str file_url: File url of the Entity in the repository.
        :param _builtins.str repo_name: Name of the repository.
        :param _builtins.str repo_url: Repo url of the Entity in the repository.
        """
        pulumi.set(__self__, "last_commit_id", last_commit_id)
        pulumi.set(__self__, "last_object_id", last_object_id)
        if branch_name is not None:
            pulumi.set(__self__, "branch_name", branch_name)
        if file_path is not None:
            pulumi.set(__self__, "file_path", file_path)
        if file_url is not None:
            pulumi.set(__self__, "file_url", file_url)
        if repo_name is not None:
            pulumi.set(__self__, "repo_name", repo_name)
        if repo_url is not None:
            pulumi.set(__self__, "repo_url", repo_url)

    @_builtins.property
    @pulumi.getter(name="lastCommitId")
    def last_commit_id(self) -> _builtins.str:
        """
        Last commit identifier (for Git Repositories other than Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_commit_id")

    @_builtins.property
    @pulumi.getter(name="lastObjectId")
    def last_object_id(self) -> _builtins.str:
        """
        Last object identifier (for Github). To be provided only when updating Pipeline.
        """
        return pulumi.get(self, "last_object_id")

    @_builtins.property
    @pulumi.getter(name="branchName")
    def branch_name(self) -> Optional[_builtins.str]:
        """
        Name of the branch.
        """
        return pulumi.get(self, "branch_name")

    @_builtins.property
    @pulumi.getter(name="filePath")
    def file_path(self) -> Optional[_builtins.str]:
        """
        File path of the Entity in the repository.
        """
        return pulumi.get(self, "file_path")

    @_builtins.property
    @pulumi.getter(name="fileUrl")
    def file_url(self) -> Optional[_builtins.str]:
        """
        File url of the Entity in the repository.
        """
        return pulumi.get(self, "file_url")

    @_builtins.property
    @pulumi.getter(name="repoName")
    def repo_name(self) -> Optional[_builtins.str]:
        """
        Name of the repository.
        """
        return pulumi.get(self, "repo_name")

    @_builtins.property
    @pulumi.getter(name="repoUrl")
    def repo_url(self) -> Optional[_builtins.str]:
        """
        Repo url of the Entity in the repository.
        """
        return pulumi.get(self, "repo_url")


@pulumi.output_type
class GetTerraformCloudConnectorCredentialResult(dict):
    def __init__(__self__, *,
                 api_tokens: Sequence['outputs.GetTerraformCloudConnectorCredentialApiTokenResult']):
        """
        :param Sequence['GetTerraformCloudConnectorCredentialApiTokenArgs'] api_tokens: API token credentials to use for authentication.
        """
        pulumi.set(__self__, "api_tokens", api_tokens)

    @_builtins.property
    @pulumi.getter(name="apiTokens")
    def api_tokens(self) -> Sequence['outputs.GetTerraformCloudConnectorCredentialApiTokenResult']:
        """
        API token credentials to use for authentication.
        """
        return pulumi.get(self, "api_tokens")


@pulumi.output_type
class GetTerraformCloudConnectorCredentialApiTokenResult(dict):
    def __init__(__self__, *,
                 api_token_ref: _builtins.str):
        """
        :param _builtins.str api_token_ref: Reference to a secret containing the API token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        pulumi.set(__self__, "api_token_ref", api_token_ref)

    @_builtins.property
    @pulumi.getter(name="apiTokenRef")
    def api_token_ref(self) -> _builtins.str:
        """
        Reference to a secret containing the API token to use for authentication. To reference a secret at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference a secret at the account scope, prefix 'account` to the expression: account.{identifier}.
        """
        return pulumi.get(self, "api_token_ref")


@pulumi.output_type
class GetUsergroupNotificationConfigResult(dict):
    def __init__(__self__, *,
                 group_email: _builtins.str,
                 microsoft_teams_webhook_url: _builtins.str,
                 pager_duty_key: _builtins.str,
                 send_email_to_all_users: _builtins.bool,
                 slack_webhook_url: _builtins.str,
                 type: _builtins.str):
        """
        :param _builtins.str group_email: Group email.
        :param _builtins.str microsoft_teams_webhook_url: Url of Microsoft teams webhook.
        :param _builtins.str pager_duty_key: Pager duty key.
        :param _builtins.bool send_email_to_all_users: Send email to all the group members.
        :param _builtins.str slack_webhook_url: Url of slack webhook.
        :param _builtins.str type: Can be one of EMAIL, SLACK, PAGERDUTY, MSTEAMS.
        """
        pulumi.set(__self__, "group_email", group_email)
        pulumi.set(__self__, "microsoft_teams_webhook_url", microsoft_teams_webhook_url)
        pulumi.set(__self__, "pager_duty_key", pager_duty_key)
        pulumi.set(__self__, "send_email_to_all_users", send_email_to_all_users)
        pulumi.set(__self__, "slack_webhook_url", slack_webhook_url)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="groupEmail")
    def group_email(self) -> _builtins.str:
        """
        Group email.
        """
        return pulumi.get(self, "group_email")

    @_builtins.property
    @pulumi.getter(name="microsoftTeamsWebhookUrl")
    def microsoft_teams_webhook_url(self) -> _builtins.str:
        """
        Url of Microsoft teams webhook.
        """
        return pulumi.get(self, "microsoft_teams_webhook_url")

    @_builtins.property
    @pulumi.getter(name="pagerDutyKey")
    def pager_duty_key(self) -> _builtins.str:
        """
        Pager duty key.
        """
        return pulumi.get(self, "pager_duty_key")

    @_builtins.property
    @pulumi.getter(name="sendEmailToAllUsers")
    def send_email_to_all_users(self) -> _builtins.bool:
        """
        Send email to all the group members.
        """
        return pulumi.get(self, "send_email_to_all_users")

    @_builtins.property
    @pulumi.getter(name="slackWebhookUrl")
    def slack_webhook_url(self) -> _builtins.str:
        """
        Url of slack webhook.
        """
        return pulumi.get(self, "slack_webhook_url")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Can be one of EMAIL, SLACK, PAGERDUTY, MSTEAMS.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetVariablesSpecResult(dict):
    def __init__(__self__, *,
                 fixed_value: _builtins.str,
                 value_type: _builtins.str):
        """
        :param _builtins.str fixed_value: FixedValue of the variable
        :param _builtins.str value_type: Type of Value of the Variable. For now only FIXED is supported
        """
        pulumi.set(__self__, "fixed_value", fixed_value)
        pulumi.set(__self__, "value_type", value_type)

    @_builtins.property
    @pulumi.getter(name="fixedValue")
    def fixed_value(self) -> _builtins.str:
        """
        FixedValue of the variable
        """
        return pulumi.get(self, "fixed_value")

    @_builtins.property
    @pulumi.getter(name="valueType")
    def value_type(self) -> _builtins.str:
        """
        Type of Value of the Variable. For now only FIXED is supported
        """
        return pulumi.get(self, "value_type")


@pulumi.output_type
class GetWorkspaceConnectorResult(dict):
    def __init__(__self__, *,
                 connector_ref: _builtins.str,
                 type: _builtins.str):
        """
        :param _builtins.str connector_ref: Connector Ref is the reference to the connector
        :param _builtins.str type: Type is the connector type of the connector. Supported types: aws, azure, gcp
        """
        pulumi.set(__self__, "connector_ref", connector_ref)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="connectorRef")
    def connector_ref(self) -> _builtins.str:
        """
        Connector Ref is the reference to the connector
        """
        return pulumi.get(self, "connector_ref")

    @_builtins.property
    @pulumi.getter
    def type(self) -> _builtins.str:
        """
        Type is the connector type of the connector. Supported types: aws, azure, gcp
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetWorkspaceEnvironmentVariableResult(dict):
    def __init__(__self__, *,
                 key: _builtins.str,
                 value: _builtins.str,
                 value_type: _builtins.str):
        """
        :param _builtins.str key: Key is the identifier for the variable`
        :param _builtins.str value: value is the value of the variable
        :param _builtins.str value_type: Value type indicates the value type of the variable, text or secret
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "value_type", value_type)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key is the identifier for the variable`
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        value is the value of the variable
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueType")
    def value_type(self) -> _builtins.str:
        """
        Value type indicates the value type of the variable, text or secret
        """
        return pulumi.get(self, "value_type")


@pulumi.output_type
class GetWorkspaceOutputValueOutputValueResult(dict):
    def __init__(__self__, *,
                 name: _builtins.str,
                 sensitive: _builtins.bool,
                 value: _builtins.str):
        """
        :param _builtins.str name: Name associated with the output.
        :param _builtins.bool sensitive: Indicates if the output is sensitive.
        :param _builtins.str value: Value of the output.
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "sensitive", sensitive)
        pulumi.set(__self__, "value", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name associated with the output.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def sensitive(self) -> _builtins.bool:
        """
        Indicates if the output is sensitive.
        """
        return pulumi.get(self, "sensitive")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        Value of the output.
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetWorkspaceTerraformVariableResult(dict):
    def __init__(__self__, *,
                 key: _builtins.str,
                 value: _builtins.str,
                 value_type: _builtins.str):
        """
        :param _builtins.str key: Key is the identifier for the variable`
        :param _builtins.str value: value is the value of the variable
        :param _builtins.str value_type: Value type indicates the value type of the variable, text or secret
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)
        pulumi.set(__self__, "value_type", value_type)

    @_builtins.property
    @pulumi.getter
    def key(self) -> _builtins.str:
        """
        Key is the identifier for the variable`
        """
        return pulumi.get(self, "key")

    @_builtins.property
    @pulumi.getter
    def value(self) -> _builtins.str:
        """
        value is the value of the variable
        """
        return pulumi.get(self, "value")

    @_builtins.property
    @pulumi.getter(name="valueType")
    def value_type(self) -> _builtins.str:
        """
        Value type indicates the value type of the variable, text or secret
        """
        return pulumi.get(self, "value_type")


@pulumi.output_type
class GetWorkspaceTerraformVariableFileResult(dict):
    def __init__(__self__, *,
                 repository: _builtins.str,
                 repository_branch: _builtins.str,
                 repository_commit: _builtins.str,
                 repository_connector: _builtins.str,
                 repository_path: _builtins.str,
                 repository_sha: _builtins.str):
        """
        :param _builtins.str repository: Repository is the name of the repository to fetch the code from.
        :param _builtins.str repository_branch: Repository branch is the name of the branch to fetch the variables from. This cannot be set if repository commit or sha is set
        :param _builtins.str repository_commit: Repository commit is tag to fetch the variables from. This cannot be set if repository branch or sha is set.
        :param _builtins.str repository_connector: Repository connector is the reference to the connector used to fetch the variables.
        :param _builtins.str repository_path: Repository path is the path in which the variables reside.
        :param _builtins.str repository_sha: Repository commit is SHA to fetch the variables from. This cannot be set if repository branch or commit is set.
        """
        pulumi.set(__self__, "repository", repository)
        pulumi.set(__self__, "repository_branch", repository_branch)
        pulumi.set(__self__, "repository_commit", repository_commit)
        pulumi.set(__self__, "repository_connector", repository_connector)
        pulumi.set(__self__, "repository_path", repository_path)
        pulumi.set(__self__, "repository_sha", repository_sha)

    @_builtins.property
    @pulumi.getter
    def repository(self) -> _builtins.str:
        """
        Repository is the name of the repository to fetch the code from.
        """
        return pulumi.get(self, "repository")

    @_builtins.property
    @pulumi.getter(name="repositoryBranch")
    def repository_branch(self) -> _builtins.str:
        """
        Repository branch is the name of the branch to fetch the variables from. This cannot be set if repository commit or sha is set
        """
        return pulumi.get(self, "repository_branch")

    @_builtins.property
    @pulumi.getter(name="repositoryCommit")
    def repository_commit(self) -> _builtins.str:
        """
        Repository commit is tag to fetch the variables from. This cannot be set if repository branch or sha is set.
        """
        return pulumi.get(self, "repository_commit")

    @_builtins.property
    @pulumi.getter(name="repositoryConnector")
    def repository_connector(self) -> _builtins.str:
        """
        Repository connector is the reference to the connector used to fetch the variables.
        """
        return pulumi.get(self, "repository_connector")

    @_builtins.property
    @pulumi.getter(name="repositoryPath")
    def repository_path(self) -> _builtins.str:
        """
        Repository path is the path in which the variables reside.
        """
        return pulumi.get(self, "repository_path")

    @_builtins.property
    @pulumi.getter(name="repositorySha")
    def repository_sha(self) -> _builtins.str:
        """
        Repository commit is SHA to fetch the variables from. This cannot be set if repository branch or commit is set.
        """
        return pulumi.get(self, "repository_sha")


