github.com/argoproj/argo-cd/v3@v3.2.1/pkg/apis/application/v1alpha1/generated.proto (about)

     1  
     2  // This file was autogenerated by go-to-protobuf. Do not edit it manually!
     3  
     4  syntax = "proto2";
     5  
     6  package github.com.argoproj.argo_cd.v3.pkg.apis.application.v1alpha1;
     7  
     8  import "k8s.io/api/core/v1/generated.proto";
     9  import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto";
    10  import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
    11  import "k8s.io/apimachinery/pkg/runtime/generated.proto";
    12  import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    13  import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
    14  
    15  // Package-wide variables from generator "generated".
    16  option go_package = "github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1";
    17  
    18  // AWSAuthConfig is an AWS IAM authentication configuration
    19  message AWSAuthConfig {
    20    // ClusterName contains AWS cluster name
    21    optional string clusterName = 1;
    22  
    23    // RoleARN contains optional role ARN. If set then AWS IAM Authenticator assume a role to perform cluster operations instead of the default AWS credential provider chain.
    24    optional string roleARN = 2;
    25  
    26    // Profile contains optional role ARN. If set then AWS IAM Authenticator uses the profile to perform cluster operations instead of the default AWS credential provider chain.
    27    optional string profile = 3;
    28  }
    29  
    30  // AppHealthStatus contains information about the currently observed health state of an application
    31  message AppHealthStatus {
    32    // Status holds the status code of the application
    33    optional string status = 1;
    34  
    35    // Message is a human-readable informational message describing the health status
    36    //
    37    // Deprecated: this field is not used and will be removed in a future release.
    38    optional string message = 2;
    39  
    40    // LastTransitionTime is the time the HealthStatus was set or updated
    41    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
    42  }
    43  
    44  // AppProject provides a logical grouping of applications, providing controls for:
    45  // * where the apps may deploy to (cluster whitelist)
    46  // * what may be deployed (repository whitelist, resource whitelist/blacklist)
    47  // * who can access these applications (roles, OIDC group claims bindings)
    48  // * and what they can do (RBAC policies)
    49  // * automation access to these roles (JWT tokens)
    50  // +genclient
    51  // +genclient:noStatus
    52  // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    53  // +kubebuilder:resource:path=appprojects,shortName=appproj;appprojs
    54  message AppProject {
    55    optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    56  
    57    optional AppProjectSpec spec = 2;
    58  
    59    optional AppProjectStatus status = 3;
    60  }
    61  
    62  // AppProjectList is list of AppProject resources
    63  // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    64  message AppProjectList {
    65    optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    66  
    67    repeated AppProject items = 2;
    68  }
    69  
    70  // AppProjectSpec is the specification of an AppProject
    71  message AppProjectSpec {
    72    // SourceRepos contains list of repository URLs which can be used for deployment
    73    repeated string sourceRepos = 1;
    74  
    75    // Destinations contains list of destinations available for deployment
    76    repeated ApplicationDestination destinations = 2;
    77  
    78    // Description contains optional project description
    79    // +kubebuilder:validation:MaxLength=255
    80    optional string description = 3;
    81  
    82    // Roles are user defined RBAC roles associated with this project
    83    repeated ProjectRole roles = 4;
    84  
    85    // ClusterResourceWhitelist contains list of whitelisted cluster level resources
    86    repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind clusterResourceWhitelist = 5;
    87  
    88    // NamespaceResourceBlacklist contains list of blacklisted namespace level resources
    89    repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind namespaceResourceBlacklist = 6;
    90  
    91    // OrphanedResources specifies if controller should monitor orphaned resources of apps in this project
    92    optional OrphanedResourcesMonitorSettings orphanedResources = 7;
    93  
    94    // SyncWindows controls when syncs can be run for apps in this project
    95    repeated SyncWindow syncWindows = 8;
    96  
    97    // NamespaceResourceWhitelist contains list of whitelisted namespace level resources
    98    repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind namespaceResourceWhitelist = 9;
    99  
   100    // SignatureKeys contains a list of PGP key IDs that commits in Git must be signed with in order to be allowed for sync
   101    repeated SignatureKey signatureKeys = 10;
   102  
   103    // ClusterResourceBlacklist contains list of blacklisted cluster level resources
   104    repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind clusterResourceBlacklist = 11;
   105  
   106    // SourceNamespaces defines the namespaces application resources are allowed to be created in
   107    repeated string sourceNamespaces = 12;
   108  
   109    // PermitOnlyProjectScopedClusters determines whether destinations can only reference clusters which are project-scoped
   110    optional bool permitOnlyProjectScopedClusters = 13;
   111  
   112    // DestinationServiceAccounts holds information about the service accounts to be impersonated for the application sync operation for each destination.
   113    repeated ApplicationDestinationServiceAccount destinationServiceAccounts = 14;
   114  }
   115  
   116  // AppProjectStatus contains status information for AppProject CRs
   117  message AppProjectStatus {
   118    // JWTTokensByRole contains a list of JWT tokens issued for a given role
   119    map<string, JWTTokens> jwtTokensByRole = 1;
   120  }
   121  
   122  // Application is a definition of Application resource.
   123  // +genclient
   124  // +genclient:noStatus
   125  // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
   126  // +kubebuilder:resource:path=applications,shortName=app;apps
   127  // +kubebuilder:printcolumn:name="Sync Status",type=string,JSONPath=`.status.sync.status`
   128  // +kubebuilder:printcolumn:name="Health Status",type=string,JSONPath=`.status.health.status`
   129  // +kubebuilder:printcolumn:name="Revision",type=string,JSONPath=`.status.sync.revision`,priority=10
   130  // +kubebuilder:printcolumn:name="Project",type=string,JSONPath=`.spec.project`,priority=10
   131  message Application {
   132    optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
   133  
   134    optional ApplicationSpec spec = 2;
   135  
   136    optional ApplicationStatus status = 3;
   137  
   138    optional Operation operation = 4;
   139  }
   140  
   141  // ApplicationCondition contains details about an application condition, which is usually an error or warning
   142  message ApplicationCondition {
   143    // Type is an application condition type
   144    optional string type = 1;
   145  
   146    // Message contains human-readable message indicating details about condition
   147    optional string message = 2;
   148  
   149    // LastTransitionTime is the time the condition was last observed
   150    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
   151  }
   152  
   153  // ApplicationDestination holds information about the application's destination
   154  message ApplicationDestination {
   155    // Server specifies the URL of the target cluster's Kubernetes control plane API. This must be set if Name is not set.
   156    optional string server = 1;
   157  
   158    // Namespace specifies the target namespace for the application's resources.
   159    // The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace
   160    optional string namespace = 2;
   161  
   162    // Name is an alternate way of specifying the target cluster by its symbolic name. This must be set if Server is not set.
   163    optional string name = 3;
   164  }
   165  
   166  // ApplicationDestinationServiceAccount holds information about the service account to be impersonated for the application sync operation.
   167  message ApplicationDestinationServiceAccount {
   168    // Server specifies the URL of the target cluster's Kubernetes control plane API.
   169    optional string server = 1;
   170  
   171    // Namespace specifies the target namespace for the application's resources.
   172    optional string namespace = 2;
   173  
   174    // DefaultServiceAccount to be used for impersonation during the sync operation
   175    optional string defaultServiceAccount = 3;
   176  }
   177  
   178  // ApplicationList is list of Application resources
   179  // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
   180  message ApplicationList {
   181    optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
   182  
   183    repeated Application items = 2;
   184  }
   185  
   186  message ApplicationMatchExpression {
   187    optional string key = 1;
   188  
   189    optional string operator = 2;
   190  
   191    repeated string values = 3;
   192  }
   193  
   194  message ApplicationPreservedFields {
   195    repeated string annotations = 1;
   196  
   197    repeated string labels = 2;
   198  }
   199  
   200  // ApplicationSet is a set of Application resources
   201  // +genclient
   202  // +genclient:noStatus
   203  // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
   204  // +kubebuilder:resource:path=applicationsets,shortName=appset;appsets
   205  // +kubebuilder:subresource:status
   206  message ApplicationSet {
   207    optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
   208  
   209    optional ApplicationSetSpec spec = 2;
   210  
   211    optional ApplicationSetStatus status = 3;
   212  }
   213  
   214  // ApplicationSetApplicationStatus contains details about each Application managed by the ApplicationSet
   215  message ApplicationSetApplicationStatus {
   216    // Application contains the name of the Application resource
   217    optional string application = 1;
   218  
   219    // LastTransitionTime is the time the status was last updated
   220    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 2;
   221  
   222    // Message contains human-readable message indicating details about the status
   223    optional string message = 3;
   224  
   225    // Status contains the AppSet's perceived status of the managed Application resource: (Waiting, Pending, Progressing, Healthy)
   226    optional string status = 4;
   227  
   228    // Step tracks which step this Application should be updated in
   229    optional string step = 5;
   230  
   231    // TargetRevision tracks the desired revisions the Application should be synced to.
   232    repeated string targetrevisions = 6;
   233  }
   234  
   235  // ApplicationSetCondition contains details about an applicationset condition, which is usually an error or warning
   236  message ApplicationSetCondition {
   237    // Type is an applicationset condition type
   238    optional string type = 1;
   239  
   240    // Message contains human-readable message indicating details about condition
   241    optional string message = 2;
   242  
   243    // LastTransitionTime is the time the condition was last observed
   244    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
   245  
   246    // True/False/Unknown
   247    optional string status = 4;
   248  
   249    // Single word camelcase representing the reason for the status eg ErrorOccurred
   250    optional string reason = 5;
   251  }
   252  
   253  // ApplicationSetGenerator represents a generator at the top level of an ApplicationSet.
   254  message ApplicationSetGenerator {
   255    optional ListGenerator list = 1;
   256  
   257    optional ClusterGenerator clusters = 2;
   258  
   259    optional GitGenerator git = 3;
   260  
   261    optional SCMProviderGenerator scmProvider = 4;
   262  
   263    optional DuckTypeGenerator clusterDecisionResource = 5;
   264  
   265    optional PullRequestGenerator pullRequest = 6;
   266  
   267    optional MatrixGenerator matrix = 7;
   268  
   269    optional MergeGenerator merge = 8;
   270  
   271    // Selector allows to post-filter all generator.
   272    optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 9;
   273  
   274    optional PluginGenerator plugin = 10;
   275  }
   276  
   277  // ApplicationSetList contains a list of ApplicationSet
   278  // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
   279  // +kubebuilder:object:root=true
   280  message ApplicationSetList {
   281    optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
   282  
   283    repeated ApplicationSet items = 2;
   284  }
   285  
   286  // ApplicationSetNestedGenerator represents a generator nested within a combination-type generator (MatrixGenerator or
   287  // MergeGenerator).
   288  message ApplicationSetNestedGenerator {
   289    optional ListGenerator list = 1;
   290  
   291    optional ClusterGenerator clusters = 2;
   292  
   293    optional GitGenerator git = 3;
   294  
   295    optional SCMProviderGenerator scmProvider = 4;
   296  
   297    optional DuckTypeGenerator clusterDecisionResource = 5;
   298  
   299    optional PullRequestGenerator pullRequest = 6;
   300  
   301    // Matrix should have the form of NestedMatrixGenerator
   302    optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON matrix = 7;
   303  
   304    // Merge should have the form of NestedMergeGenerator
   305    optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON merge = 8;
   306  
   307    // Selector allows to post-filter all generator.
   308    optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 9;
   309  
   310    optional PluginGenerator plugin = 10;
   311  }
   312  
   313  // ApplicationSetResourceIgnoreDifferences configures how the ApplicationSet controller will ignore differences in live
   314  // applications when applying changes from generated applications.
   315  message ApplicationSetResourceIgnoreDifferences {
   316    // Name is the name of the application to ignore differences for. If not specified, the rule applies to all applications.
   317    optional string name = 1;
   318  
   319    // JSONPointers is a list of JSON pointers to fields to ignore differences for.
   320    repeated string jsonPointers = 2;
   321  
   322    // JQPathExpressions is a list of JQ path expressions to fields to ignore differences for.
   323    repeated string jqPathExpressions = 3;
   324  }
   325  
   326  message ApplicationSetRolloutStep {
   327    repeated ApplicationMatchExpression matchExpressions = 1;
   328  
   329    optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUpdate = 2;
   330  }
   331  
   332  message ApplicationSetRolloutStrategy {
   333    repeated ApplicationSetRolloutStep steps = 1;
   334  }
   335  
   336  // ApplicationSetSpec represents a class of application set state.
   337  message ApplicationSetSpec {
   338    optional bool goTemplate = 1;
   339  
   340    repeated ApplicationSetGenerator generators = 2;
   341  
   342    optional ApplicationSetTemplate template = 3;
   343  
   344    optional ApplicationSetSyncPolicy syncPolicy = 4;
   345  
   346    optional ApplicationSetStrategy strategy = 5;
   347  
   348    optional ApplicationPreservedFields preservedFields = 6;
   349  
   350    repeated string goTemplateOptions = 7;
   351  
   352    // ApplyNestedSelectors enables selectors defined within the generators of two level-nested matrix or merge generators
   353    // Deprecated: This field is ignored, and the behavior is always enabled. The field will be removed in a future
   354    // version of the ApplicationSet CRD.
   355    optional bool applyNestedSelectors = 8;
   356  
   357    repeated ApplicationSetResourceIgnoreDifferences ignoreApplicationDifferences = 9;
   358  
   359    optional string templatePatch = 10;
   360  }
   361  
   362  // ApplicationSetStatus defines the observed state of ApplicationSet
   363  message ApplicationSetStatus {
   364    // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
   365    // Important: Run "make" to regenerate code after modifying this file
   366    repeated ApplicationSetCondition conditions = 1;
   367  
   368    repeated ApplicationSetApplicationStatus applicationStatus = 2;
   369  
   370    // Resources is a list of Applications resources managed by this application set.
   371    repeated ResourceStatus resources = 3;
   372  
   373    // ResourcesCount is the total number of resources managed by this application set. The count may be higher than actual number of items in the Resources field when
   374    // the number of managed resources exceeds the limit imposed by the controller (to avoid making the status field too large).
   375    optional int64 resourcesCount = 4;
   376  }
   377  
   378  // ApplicationSetStrategy configures how generated Applications are updated in sequence.
   379  message ApplicationSetStrategy {
   380    optional string type = 1;
   381  
   382    optional ApplicationSetRolloutStrategy rollingSync = 2;
   383  
   384    // DeletionOrder allows specifying the order for deleting generated apps when progressive sync is enabled.
   385    // accepts values "AllAtOnce" and "Reverse"
   386    optional string deletionOrder = 3;
   387  }
   388  
   389  // ApplicationSetSyncPolicy configures how generated Applications will relate to their
   390  // ApplicationSet.
   391  message ApplicationSetSyncPolicy {
   392    // PreserveResourcesOnDeletion will preserve resources on deletion. If PreserveResourcesOnDeletion is set to true, these Applications will not be deleted.
   393    optional bool preserveResourcesOnDeletion = 1;
   394  
   395    // ApplicationsSync represents the policy applied on the generated applications. Possible values are create-only, create-update, create-delete, sync
   396    // +kubebuilder:validation:Optional
   397    // +kubebuilder:validation:Enum=create-only;create-update;create-delete;sync
   398    optional string applicationsSync = 2;
   399  }
   400  
   401  // ApplicationSetTemplate represents argocd ApplicationSpec
   402  message ApplicationSetTemplate {
   403    optional ApplicationSetTemplateMeta metadata = 1;
   404  
   405    optional ApplicationSpec spec = 2;
   406  }
   407  
   408  // ApplicationSetTemplateMeta represents the Argo CD application fields that may
   409  // be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta)
   410  message ApplicationSetTemplateMeta {
   411    optional string name = 1;
   412  
   413    optional string namespace = 2;
   414  
   415    map<string, string> labels = 3;
   416  
   417    map<string, string> annotations = 4;
   418  
   419    repeated string finalizers = 5;
   420  }
   421  
   422  // ApplicationSetTerminalGenerator represents a generator nested within a nested generator (for example, a list within
   423  // a merge within a matrix). A generator at this level may not be a combination-type generator (MatrixGenerator or
   424  // MergeGenerator). ApplicationSet enforces this nesting depth limit because CRDs do not support recursive types.
   425  // https://github.com/kubernetes-sigs/controller-tools/issues/477
   426  message ApplicationSetTerminalGenerator {
   427    optional ListGenerator list = 1;
   428  
   429    optional ClusterGenerator clusters = 2;
   430  
   431    optional GitGenerator git = 3;
   432  
   433    optional SCMProviderGenerator scmProvider = 4;
   434  
   435    optional DuckTypeGenerator clusterDecisionResource = 5;
   436  
   437    optional PullRequestGenerator pullRequest = 6;
   438  
   439    optional PluginGenerator plugin = 7;
   440  
   441    // Selector allows to post-filter all generator.
   442    optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 8;
   443  }
   444  
   445  // ApplicationSetTree holds nodes which belongs to the application
   446  // Used to build a tree of an ApplicationSet and its children
   447  message ApplicationSetTree {
   448    // Nodes contains list of nodes which are directly managed by the applicationset
   449    repeated ResourceNode nodes = 1;
   450  }
   451  
   452  // ApplicationSource contains all required information about the source of an application
   453  message ApplicationSource {
   454    // RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
   455    optional string repoURL = 1;
   456  
   457    // Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
   458    optional string path = 2;
   459  
   460    // TargetRevision defines the revision of the source to sync the application to.
   461    // In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
   462    // In case of Helm, this is a semver tag for the Chart's version.
   463    optional string targetRevision = 4;
   464  
   465    // Helm holds helm specific options
   466    optional ApplicationSourceHelm helm = 7;
   467  
   468    // Kustomize holds kustomize specific options
   469    optional ApplicationSourceKustomize kustomize = 8;
   470  
   471    // Directory holds path/directory specific options
   472    optional ApplicationSourceDirectory directory = 10;
   473  
   474    // Plugin holds config management plugin specific options
   475    optional ApplicationSourcePlugin plugin = 11;
   476  
   477    // Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
   478    optional string chart = 12;
   479  
   480    // Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
   481    optional string ref = 13;
   482  
   483    // Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
   484    optional string name = 14;
   485  }
   486  
   487  // ApplicationSourceDirectory holds options for applications of type plain YAML or Jsonnet
   488  message ApplicationSourceDirectory {
   489    // Recurse specifies whether to scan a directory recursively for manifests
   490    optional bool recurse = 1;
   491  
   492    // Jsonnet holds options specific to Jsonnet
   493    optional ApplicationSourceJsonnet jsonnet = 2;
   494  
   495    // Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
   496    optional string exclude = 3;
   497  
   498    // Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
   499    optional string include = 4;
   500  }
   501  
   502  // ApplicationSourceHelm holds helm specific options
   503  message ApplicationSourceHelm {
   504    // ValuesFiles is a list of Helm value files to use when generating a template
   505    repeated string valueFiles = 1;
   506  
   507    // Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
   508    repeated HelmParameter parameters = 2;
   509  
   510    // ReleaseName is the Helm release name to use. If omitted it will use the application name
   511    optional string releaseName = 3;
   512  
   513    // Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
   514    // +patchStrategy=replace
   515    optional string values = 4;
   516  
   517    // FileParameters are file parameters to the helm template
   518    repeated HelmFileParameter fileParameters = 5;
   519  
   520    // Version is the Helm version to use for templating ("3")
   521    optional string version = 6;
   522  
   523    // PassCredentials pass credentials to all domains (Helm's --pass-credentials)
   524    optional bool passCredentials = 7;
   525  
   526    // IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
   527    optional bool ignoreMissingValueFiles = 8;
   528  
   529    // SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
   530    optional bool skipCrds = 9;
   531  
   532    // ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
   533    // +kubebuilder:pruning:PreserveUnknownFields
   534    optional .k8s.io.apimachinery.pkg.runtime.RawExtension valuesObject = 10;
   535  
   536    // Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
   537    optional string namespace = 11;
   538  
   539    // KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
   540    // uses the Kubernetes version of the target cluster.
   541    optional string kubeVersion = 12;
   542  
   543    // APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
   544    // Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
   545    repeated string apiVersions = 13;
   546  
   547    // SkipTests skips test manifest installation step (Helm's --skip-tests).
   548    optional bool skipTests = 14;
   549  
   550    // SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
   551    optional bool skipSchemaValidation = 15;
   552  }
   553  
   554  // ApplicationSourceJsonnet holds options specific to applications of type Jsonnet
   555  message ApplicationSourceJsonnet {
   556    // ExtVars is a list of Jsonnet External Variables
   557    repeated JsonnetVar extVars = 1;
   558  
   559    // TLAS is a list of Jsonnet Top-level Arguments
   560    repeated JsonnetVar tlas = 2;
   561  
   562    // Additional library search dirs
   563    repeated string libs = 3;
   564  }
   565  
   566  // ApplicationSourceKustomize holds options specific to an Application source specific to Kustomize
   567  message ApplicationSourceKustomize {
   568    // NamePrefix is a prefix appended to resources for Kustomize apps
   569    optional string namePrefix = 1;
   570  
   571    // NameSuffix is a suffix appended to resources for Kustomize apps
   572    optional string nameSuffix = 2;
   573  
   574    // Images is a list of Kustomize image override specifications
   575    repeated string images = 3;
   576  
   577    // CommonLabels is a list of additional labels to add to rendered manifests
   578    map<string, string> commonLabels = 4;
   579  
   580    // Version controls which version of Kustomize to use for rendering manifests
   581    optional string version = 5;
   582  
   583    // CommonAnnotations is a list of additional annotations to add to rendered manifests
   584    map<string, string> commonAnnotations = 6;
   585  
   586    // ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
   587    optional bool forceCommonLabels = 7;
   588  
   589    // ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
   590    optional bool forceCommonAnnotations = 8;
   591  
   592    // Namespace sets the namespace that Kustomize adds to all resources
   593    optional string namespace = 9;
   594  
   595    // CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
   596    optional bool commonAnnotationsEnvsubst = 10;
   597  
   598    // Replicas is a list of Kustomize Replicas override specifications
   599    repeated KustomizeReplica replicas = 11;
   600  
   601    // Patches is a list of Kustomize patches
   602    repeated KustomizePatch patches = 12;
   603  
   604    // Components specifies a list of kustomize components to add to the kustomization before building
   605    repeated string components = 13;
   606  
   607    // IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
   608    optional bool ignoreMissingComponents = 17;
   609  
   610    // LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
   611    optional bool labelWithoutSelector = 14;
   612  
   613    // KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
   614    // uses the Kubernetes version of the target cluster.
   615    optional string kubeVersion = 15;
   616  
   617    // APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
   618    // Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
   619    repeated string apiVersions = 16;
   620  
   621    // LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
   622    optional bool labelIncludeTemplates = 18;
   623  }
   624  
   625  // ApplicationSourcePlugin holds options specific to config management plugins
   626  message ApplicationSourcePlugin {
   627    optional string name = 1;
   628  
   629    repeated EnvEntry env = 2;
   630  
   631    repeated ApplicationSourcePluginParameter parameters = 3;
   632  }
   633  
   634  message ApplicationSourcePluginParameter {
   635    // Name is the name identifying a parameter.
   636    optional string name = 1;
   637  
   638    // String_ is the value of a string type parameter.
   639    optional string string = 5;
   640  
   641    // Map is the value of a map type parameter.
   642    optional OptionalMap map = 3;
   643  
   644    // Array is the value of an array type parameter.
   645    optional OptionalArray array = 4;
   646  }
   647  
   648  // ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision.
   649  message ApplicationSpec {
   650    // Source is a reference to the location of the application's manifests or chart
   651    optional ApplicationSource source = 1;
   652  
   653    // Destination is a reference to the target Kubernetes server and namespace
   654    optional ApplicationDestination destination = 2;
   655  
   656    // Project is a reference to the project this application belongs to.
   657    // The empty string means that application belongs to the 'default' project.
   658    optional string project = 3;
   659  
   660    // SyncPolicy controls when and how a sync will be performed
   661    optional SyncPolicy syncPolicy = 4;
   662  
   663    // IgnoreDifferences is a list of resources and their fields which should be ignored during comparison
   664    repeated ResourceIgnoreDifferences ignoreDifferences = 5;
   665  
   666    // Info contains a list of information (URLs, email addresses, and plain text) that relates to the application
   667    repeated Info info = 6;
   668  
   669    // RevisionHistoryLimit 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.
   670    // This should only be changed in exceptional circumstances.
   671    // Setting to zero will store no history. This will reduce storage used.
   672    // Increasing will increase the space used to store the history, so we do not recommend increasing it.
   673    // Default is 10.
   674    optional int64 revisionHistoryLimit = 7;
   675  
   676    // Sources is a reference to the location of the application's manifests or chart
   677    repeated ApplicationSource sources = 8;
   678  
   679    // SourceHydrator provides a way to push hydrated manifests back to git before syncing them to the cluster.
   680    optional SourceHydrator sourceHydrator = 9;
   681  }
   682  
   683  // ApplicationStatus contains status information for the application
   684  message ApplicationStatus {
   685    // Resources is a list of Kubernetes resources managed by this application
   686    repeated ResourceStatus resources = 1;
   687  
   688    // Sync contains information about the application's current sync status
   689    optional SyncStatus sync = 2;
   690  
   691    // Health contains information about the application's current health status
   692    optional AppHealthStatus health = 3;
   693  
   694    // History contains information about the application's sync history
   695    repeated RevisionHistory history = 4;
   696  
   697    // Conditions is a list of currently observed application conditions
   698    repeated ApplicationCondition conditions = 5;
   699  
   700    // ReconciledAt indicates when the application state was reconciled using the latest git version
   701    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time reconciledAt = 6;
   702  
   703    // OperationState contains information about any ongoing operations, such as a sync
   704    optional OperationState operationState = 7;
   705  
   706    // ObservedAt indicates when the application state was updated without querying latest git state
   707    // Deprecated: controller no longer updates ObservedAt field
   708    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time observedAt = 8;
   709  
   710    // SourceType specifies the type of this application
   711    optional string sourceType = 9;
   712  
   713    // Summary contains a list of URLs and container images used by this application
   714    optional ApplicationSummary summary = 10;
   715  
   716    // ResourceHealthSource indicates where the resource health status is stored: inline if not set or appTree
   717    optional string resourceHealthSource = 11;
   718  
   719    // SourceTypes specifies the type of the sources included in the application
   720    repeated string sourceTypes = 12;
   721  
   722    // ControllerNamespace indicates the namespace in which the application controller is located
   723    optional string controllerNamespace = 13;
   724  
   725    // SourceHydrator stores information about the current state of source hydration
   726    optional SourceHydratorStatus sourceHydrator = 14;
   727  }
   728  
   729  // ApplicationSummary contains information about URLs and container images used by an application
   730  message ApplicationSummary {
   731    // ExternalURLs holds all external URLs of application child resources.
   732    repeated string externalURLs = 1;
   733  
   734    // Images holds all images of application child resources.
   735    repeated string images = 2;
   736  }
   737  
   738  // ApplicationTree represents the hierarchical structure of resources associated with an Argo CD application.
   739  message ApplicationTree {
   740    // Nodes contains a list of resources that are either directly managed by the application
   741    // or are children of directly managed resources.
   742    repeated ResourceNode nodes = 1;
   743  
   744    // OrphanedNodes contains resources that exist in the same namespace as the application
   745    // but are not managed by it. This list is populated only if orphaned resource tracking
   746    // is enabled in the application's project settings.
   747    repeated ResourceNode orphanedNodes = 2;
   748  
   749    // Hosts provides a list of Kubernetes nodes that are running pods related to the application.
   750    repeated HostInfo hosts = 3;
   751  
   752    // ShardsCount represents the total number of shards the application tree is split into.
   753    // This is used to distribute resource processing across multiple shards.
   754    optional int64 shardsCount = 4;
   755  }
   756  
   757  // ApplicationWatchEvent contains information about application change.
   758  message ApplicationWatchEvent {
   759    optional string type = 1;
   760  
   761    // Application is:
   762    //  * If Type is Added or Modified: the new state of the object.
   763    //  * If Type is Deleted: the state of the object immediately before deletion.
   764    //  * If Type is Error: *api.Status is recommended; other types may make sense
   765    //    depending on context.
   766    optional Application application = 2;
   767  }
   768  
   769  // Backoff is the backoff strategy to use on subsequent retries for failing syncs
   770  message Backoff {
   771    // Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
   772    optional string duration = 1;
   773  
   774    // Factor is a factor to multiply the base duration after each failed retry
   775    optional int64 factor = 2;
   776  
   777    // MaxDuration is the maximum amount of time allowed for the backoff strategy
   778    optional string maxDuration = 3;
   779  }
   780  
   781  // BasicAuthBitbucketServer defines the username/(password or personal access token) for Basic auth.
   782  message BasicAuthBitbucketServer {
   783    // Username for Basic auth
   784    optional string username = 1;
   785  
   786    // Password (or personal access token) reference.
   787    optional SecretRef passwordRef = 2;
   788  }
   789  
   790  // BearerTokenBitbucket defines the Bearer token for BitBucket AppToken auth.
   791  message BearerTokenBitbucket {
   792    // Password (or personal access token) reference.
   793    optional SecretRef tokenRef = 1;
   794  }
   795  
   796  // BearerTokenBitbucketCloud defines the Bearer token for BitBucket AppToken auth.
   797  message BearerTokenBitbucketCloud {
   798    // Password (or personal access token) reference.
   799    optional SecretRef tokenRef = 1;
   800  }
   801  
   802  // ChartDetails contains helm chart metadata for a specific version
   803  message ChartDetails {
   804    optional string description = 1;
   805  
   806    // The URL of this projects home page, e.g. "http://example.com"
   807    optional string home = 2;
   808  
   809    // List of maintainer details, name and email, e.g. ["John Doe <john_doe@my-company.com>"]
   810    repeated string maintainers = 3;
   811  }
   812  
   813  // Cluster is the definition of a cluster resource
   814  message Cluster {
   815    // Server is the API server URL of the Kubernetes cluster
   816    optional string server = 1;
   817  
   818    // Name of the cluster. If omitted, will use the server address
   819    optional string name = 2;
   820  
   821    // Config holds cluster information for connecting to a cluster
   822    optional ClusterConfig config = 3;
   823  
   824    // Deprecated: use Info.ConnectionState field instead.
   825    // ConnectionState contains information about cluster connection state
   826    optional ConnectionState connectionState = 4;
   827  
   828    // Deprecated: use Info.ServerVersion field instead.
   829    // The server version
   830    optional string serverVersion = 5;
   831  
   832    // Holds list of namespaces which are accessible in that cluster. Cluster level resources will be ignored if namespace list is not empty.
   833    repeated string namespaces = 6;
   834  
   835    // RefreshRequestedAt holds time when cluster cache refresh has been requested
   836    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time refreshRequestedAt = 7;
   837  
   838    // Info holds information about cluster cache and state
   839    optional ClusterInfo info = 8;
   840  
   841    // Shard contains optional shard number. Calculated on the fly by the application controller if not specified.
   842    optional int64 shard = 9;
   843  
   844    // Indicates if cluster level resources should be managed. This setting is used only if cluster is connected in a namespaced mode.
   845    optional bool clusterResources = 10;
   846  
   847    // Reference between project and cluster that allow you automatically to be added as item inside Destinations project entity
   848    optional string project = 11;
   849  
   850    // Labels for cluster secret metadata
   851    map<string, string> labels = 12;
   852  
   853    // Annotations for cluster secret metadata
   854    map<string, string> annotations = 13;
   855  }
   856  
   857  // ClusterCacheInfo contains information about the cluster cache
   858  message ClusterCacheInfo {
   859    // ResourcesCount holds number of observed Kubernetes resources
   860    optional int64 resourcesCount = 1;
   861  
   862    // APIsCount holds number of observed Kubernetes API count
   863    optional int64 apisCount = 2;
   864  
   865    // LastCacheSyncTime holds time of most recent cache synchronization
   866    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCacheSyncTime = 3;
   867  }
   868  
   869  // ClusterConfig is the configuration attributes. This structure is subset of the go-client
   870  // rest.Config with annotations added for marshalling.
   871  message ClusterConfig {
   872    // Server requires Basic authentication
   873    optional string username = 1;
   874  
   875    optional string password = 2;
   876  
   877    // Server requires Bearer authentication. This client will not attempt to use
   878    // refresh tokens for an OAuth2 flow.
   879    // TODO: demonstrate an OAuth2 compatible client.
   880    optional string bearerToken = 3;
   881  
   882    // TLSClientConfig contains settings to enable transport layer security
   883    optional TLSClientConfig tlsClientConfig = 4;
   884  
   885    // AWSAuthConfig contains IAM authentication configuration
   886    optional AWSAuthConfig awsAuthConfig = 5;
   887  
   888    // ExecProviderConfig contains configuration for an exec provider
   889    optional ExecProviderConfig execProviderConfig = 6;
   890  
   891    // DisableCompression bypasses automatic GZip compression requests to the server.
   892    optional bool disableCompression = 7;
   893  
   894    // ProxyURL is the URL to the proxy to be used for all requests send to the server
   895    optional string proxyUrl = 8;
   896  }
   897  
   898  // ClusterGenerator defines a generator to match against clusters registered with ArgoCD.
   899  message ClusterGenerator {
   900    // Selector defines a label selector to match against all clusters registered with ArgoCD.
   901    // Clusters today are stored as Kubernetes Secrets, thus the Secret labels will be used
   902    // for matching the selector.
   903    optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1;
   904  
   905    optional ApplicationSetTemplate template = 2;
   906  
   907    // Values contains key/value pairs which are passed directly as parameters to the template
   908    map<string, string> values = 3;
   909  
   910    // returns the clusters a single 'clusters' value in the template
   911    optional bool flatList = 4;
   912  }
   913  
   914  // ClusterInfo contains information about the cluster
   915  message ClusterInfo {
   916    // ConnectionState contains information about the connection to the cluster
   917    optional ConnectionState connectionState = 1;
   918  
   919    // ServerVersion contains information about the Kubernetes version of the cluster
   920    optional string serverVersion = 2;
   921  
   922    // CacheInfo contains information about the cluster cache
   923    optional ClusterCacheInfo cacheInfo = 3;
   924  
   925    // ApplicationsCount is the number of applications managed by Argo CD on the cluster
   926    optional int64 applicationsCount = 4;
   927  
   928    // APIVersions contains list of API versions supported by the cluster
   929    repeated string apiVersions = 5;
   930  }
   931  
   932  // ClusterList is a collection of Clusters.
   933  message ClusterList {
   934    optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
   935  
   936    repeated Cluster items = 2;
   937  }
   938  
   939  // Command holds binary path and arguments list
   940  message Command {
   941    repeated string command = 1;
   942  
   943    repeated string args = 2;
   944  }
   945  
   946  // CommitMetadata contains metadata about a commit that is related in some way to another commit.
   947  message CommitMetadata {
   948    // Author is the author of the commit, i.e. `git show -s --format=%an <%ae>`.
   949    // Must be formatted according to RFC 5322 (mail.Address.String()).
   950    // Comes from the Argocd-reference-commit-author trailer.
   951    optional string author = 1;
   952  
   953    // Date is the date of the commit, formatted as by `git show -s --format=%aI` (RFC 3339).
   954    // It can also be an empty string if the date is unknown.
   955    // Comes from the Argocd-reference-commit-date trailer.
   956    optional string date = 2;
   957  
   958    // Subject is the commit message subject line, i.e. `git show -s --format=%s`.
   959    // Comes from the Argocd-reference-commit-subject trailer.
   960    optional string subject = 3;
   961  
   962    // Body is the commit message body minus the subject line, i.e. `git show -s --format=%b`.
   963    // Comes from the Argocd-reference-commit-body trailer.
   964    optional string body = 4;
   965  
   966    // SHA is the commit hash.
   967    // Comes from the Argocd-reference-commit-sha trailer.
   968    optional string sha = 5;
   969  
   970    // RepoURL is the URL of the repository where the commit is located.
   971    // Comes from the Argocd-reference-commit-repourl trailer.
   972    // This value is not validated and should not be used to construct UI links unless it is properly
   973    // validated and/or sanitized first.
   974    optional string repoUrl = 6;
   975  }
   976  
   977  // ComparedTo contains application source and target which was used for resources comparison
   978  message ComparedTo {
   979    // Source is a reference to the application's source used for comparison
   980    optional ApplicationSource source = 1;
   981  
   982    // Destination is a reference to the application's destination used for comparison
   983    optional ApplicationDestination destination = 2;
   984  
   985    // Sources is a reference to the application's multiple sources used for comparison
   986    repeated ApplicationSource sources = 3;
   987  
   988    // IgnoreDifferences is a reference to the application's ignored differences used for comparison
   989    repeated ResourceIgnoreDifferences ignoreDifferences = 4;
   990  }
   991  
   992  // ComponentParameter contains information about component parameter value
   993  message ComponentParameter {
   994    optional string component = 1;
   995  
   996    optional string name = 2;
   997  
   998    optional string value = 3;
   999  }
  1000  
  1001  // ConfigManagementPlugin contains config management plugin configuration
  1002  message ConfigManagementPlugin {
  1003    optional string name = 1;
  1004  
  1005    optional Command init = 2;
  1006  
  1007    optional Command generate = 3;
  1008  
  1009    optional bool lockRepo = 4;
  1010  }
  1011  
  1012  // Utility struct for a reference to a configmap key.
  1013  message ConfigMapKeyRef {
  1014    optional string configMapName = 1;
  1015  
  1016    optional string key = 2;
  1017  }
  1018  
  1019  // ConnectionState contains information about remote resource connection state, currently used for clusters and repositories
  1020  message ConnectionState {
  1021    // Status contains the current status indicator for the connection
  1022    optional string status = 1;
  1023  
  1024    // Message contains human readable information about the connection status
  1025    optional string message = 2;
  1026  
  1027    // ModifiedAt contains the timestamp when this connection status has been determined
  1028    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time attemptedAt = 3;
  1029  }
  1030  
  1031  // DrySource specifies a location for dry "don't repeat yourself" manifest source information.
  1032  message DrySource {
  1033    // RepoURL is the URL to the git repository that contains the application manifests
  1034    optional string repoURL = 1;
  1035  
  1036    // TargetRevision defines the revision of the source to hydrate
  1037    optional string targetRevision = 2;
  1038  
  1039    // Path is a directory path within the Git repository where the manifests are located
  1040    optional string path = 3;
  1041  }
  1042  
  1043  // DuckType defines a generator to match against clusters registered with ArgoCD.
  1044  message DuckTypeGenerator {
  1045    // ConfigMapRef is a ConfigMap with the duck type definitions needed to retrieve the data
  1046    //              this includes apiVersion(group/version), kind, matchKey and validation settings
  1047    // Name is the resource name of the kind, group and version, defined in the ConfigMapRef
  1048    // RequeueAfterSeconds is how long before the duckType will be rechecked for a change
  1049    optional string configMapRef = 1;
  1050  
  1051    optional string name = 2;
  1052  
  1053    optional int64 requeueAfterSeconds = 3;
  1054  
  1055    optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;
  1056  
  1057    optional ApplicationSetTemplate template = 5;
  1058  
  1059    // Values contains key/value pairs which are passed directly as parameters to the template
  1060    map<string, string> values = 6;
  1061  }
  1062  
  1063  // EnvEntry represents an entry in the application's environment
  1064  message EnvEntry {
  1065    // Name is the name of the variable, usually expressed in uppercase
  1066    optional string name = 1;
  1067  
  1068    // Value is the value of the variable
  1069    optional string value = 2;
  1070  }
  1071  
  1072  // ExecProviderConfig is config used to call an external command to perform cluster authentication
  1073  // See: https://godoc.org/k8s.io/client-go/tools/clientcmd/api#ExecConfig
  1074  message ExecProviderConfig {
  1075    // Command to execute
  1076    optional string command = 1;
  1077  
  1078    // Arguments to pass to the command when executing it
  1079    repeated string args = 2;
  1080  
  1081    // Env defines additional environment variables to expose to the process
  1082    map<string, string> env = 3;
  1083  
  1084    // Preferred input version of the ExecInfo
  1085    optional string apiVersion = 4;
  1086  
  1087    // This text is shown to the user when the executable doesn't seem to be present
  1088    optional string installHint = 5;
  1089  }
  1090  
  1091  message GitDirectoryGeneratorItem {
  1092    optional string path = 1;
  1093  
  1094    optional bool exclude = 2;
  1095  }
  1096  
  1097  message GitFileGeneratorItem {
  1098    optional string path = 1;
  1099  
  1100    optional bool exclude = 2;
  1101  }
  1102  
  1103  message GitGenerator {
  1104    optional string repoURL = 1;
  1105  
  1106    repeated GitDirectoryGeneratorItem directories = 2;
  1107  
  1108    repeated GitFileGeneratorItem files = 3;
  1109  
  1110    optional string revision = 4;
  1111  
  1112    optional int64 requeueAfterSeconds = 5;
  1113  
  1114    optional ApplicationSetTemplate template = 6;
  1115  
  1116    optional string pathParamPrefix = 7;
  1117  
  1118    // Values contains key/value pairs which are passed directly as parameters to the template
  1119    map<string, string> values = 8;
  1120  }
  1121  
  1122  // GnuPGPublicKey is a representation of a GnuPG public key
  1123  message GnuPGPublicKey {
  1124    // KeyID specifies the key ID, in hexadecimal string format
  1125    optional string keyID = 1;
  1126  
  1127    // Fingerprint is the fingerprint of the key
  1128    optional string fingerprint = 2;
  1129  
  1130    // Owner holds the owner identification, e.g. a name and e-mail address
  1131    optional string owner = 3;
  1132  
  1133    // Trust holds the level of trust assigned to this key
  1134    optional string trust = 4;
  1135  
  1136    // SubType holds the key's subtype (e.g. rsa4096)
  1137    optional string subType = 5;
  1138  
  1139    // KeyData holds the raw key data, in base64 encoded format
  1140    optional string keyData = 6;
  1141  }
  1142  
  1143  // GnuPGPublicKeyList is a collection of GnuPGPublicKey objects
  1144  message GnuPGPublicKeyList {
  1145    optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
  1146  
  1147    repeated GnuPGPublicKey items = 2;
  1148  }
  1149  
  1150  // HealthStatus contains information about the currently observed health state of a resource
  1151  message HealthStatus {
  1152    // Status holds the status code of the resource
  1153    optional string status = 1;
  1154  
  1155    // Message is a human-readable informational message describing the health status
  1156    optional string message = 2;
  1157  
  1158    // LastTransitionTime is the time the HealthStatus was set or updated
  1159    //
  1160    // Deprecated: this field is not used and will be removed in a future release.
  1161    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
  1162  }
  1163  
  1164  // HelmFileParameter is a file parameter that's passed to helm template during manifest generation
  1165  message HelmFileParameter {
  1166    // Name is the name of the Helm parameter
  1167    optional string name = 1;
  1168  
  1169    // Path is the path to the file containing the values for the Helm parameter
  1170    optional string path = 2;
  1171  }
  1172  
  1173  // HelmOptions holds helm options
  1174  message HelmOptions {
  1175    repeated string valuesFileSchemes = 1;
  1176  }
  1177  
  1178  // HelmParameter is a parameter that's passed to helm template during manifest generation
  1179  message HelmParameter {
  1180    // Name is the name of the Helm parameter
  1181    optional string name = 1;
  1182  
  1183    // Value is the value for the Helm parameter
  1184    optional string value = 2;
  1185  
  1186    // ForceString determines whether to tell Helm to interpret booleans and numbers as strings
  1187    optional bool forceString = 3;
  1188  }
  1189  
  1190  // HostInfo holds metadata and resource usage metrics for a specific host in the cluster.
  1191  message HostInfo {
  1192    // Name is the hostname or node name in the Kubernetes cluster.
  1193    optional string name = 1;
  1194  
  1195    // ResourcesInfo provides a list of resource usage details for different resource types on this host.
  1196    repeated HostResourceInfo resourcesInfo = 2;
  1197  
  1198    // SystemInfo contains detailed system-level information about the host, such as OS, kernel version, and architecture.
  1199    optional .k8s.io.api.core.v1.NodeSystemInfo systemInfo = 3;
  1200  
  1201    // Labels holds the labels attached to the host.
  1202    map<string, string> labels = 4;
  1203  }
  1204  
  1205  // HostResourceInfo represents resource usage details for a specific resource type on a host.
  1206  message HostResourceInfo {
  1207    // ResourceName specifies the type of resource (e.g., CPU, memory, storage).
  1208    optional string resourceName = 1;
  1209  
  1210    // RequestedByApp indicates the total amount of this resource requested by the application running on the host.
  1211    optional int64 requestedByApp = 2;
  1212  
  1213    // RequestedByNeighbors indicates the total amount of this resource requested by other workloads on the same host.
  1214    optional int64 requestedByNeighbors = 3;
  1215  
  1216    // Capacity represents the total available capacity of this resource on the host.
  1217    optional int64 capacity = 4;
  1218  }
  1219  
  1220  // HydrateOperation contains information about the most recent hydrate operation
  1221  message HydrateOperation {
  1222    // StartedAt indicates when the hydrate operation started
  1223    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;
  1224  
  1225    // FinishedAt indicates when the hydrate operation finished
  1226    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 2;
  1227  
  1228    // Phase indicates the status of the hydrate operation
  1229    optional string phase = 3;
  1230  
  1231    // Message contains a message describing the current status of the hydrate operation
  1232    optional string message = 4;
  1233  
  1234    // DrySHA holds the resolved revision (sha) of the dry source as of the most recent reconciliation
  1235    optional string drySHA = 5;
  1236  
  1237    // HydratedSHA holds the resolved revision (sha) of the hydrated source as of the most recent reconciliation
  1238    optional string hydratedSHA = 6;
  1239  
  1240    // SourceHydrator holds the hydrator config used for the hydrate operation
  1241    optional SourceHydrator sourceHydrator = 7;
  1242  }
  1243  
  1244  // HydrateTo specifies a location to which hydrated manifests should be pushed as a "staging area" before being moved to
  1245  // the SyncSource. The RepoURL and Path are assumed based on the associated SyncSource config in the SourceHydrator.
  1246  message HydrateTo {
  1247    // TargetBranch is the branch to which hydrated manifests should be committed
  1248    optional string targetBranch = 1;
  1249  }
  1250  
  1251  message Info {
  1252    optional string name = 1;
  1253  
  1254    optional string value = 2;
  1255  }
  1256  
  1257  // InfoItem contains arbitrary, human readable information about an application
  1258  message InfoItem {
  1259    // Name is a human readable title for this piece of information.
  1260    optional string name = 1;
  1261  
  1262    // Value is human readable content.
  1263    optional string value = 2;
  1264  }
  1265  
  1266  // JWTToken holds the issuedAt and expiresAt values of a token
  1267  message JWTToken {
  1268    optional int64 iat = 1;
  1269  
  1270    optional int64 exp = 2;
  1271  
  1272    optional string id = 3;
  1273  }
  1274  
  1275  // JWTTokens represents a list of JWT tokens
  1276  message JWTTokens {
  1277    repeated JWTToken items = 1;
  1278  }
  1279  
  1280  // JsonnetVar represents a variable to be passed to jsonnet during manifest generation
  1281  message JsonnetVar {
  1282    optional string name = 1;
  1283  
  1284    optional string value = 2;
  1285  
  1286    optional bool code = 3;
  1287  }
  1288  
  1289  // KnownTypeField contains a mapping between a Custom Resource Definition (CRD) field
  1290  // and a well-known Kubernetes type. This mapping is primarily used for unit conversions
  1291  // in resources where the type is not explicitly defined (e.g., converting "0.1" to "100m" for CPU requests).
  1292  message KnownTypeField {
  1293    // Field represents the JSON path to the specific field in the CRD that requires type conversion.
  1294    // Example: "spec.resources.requests.cpu"
  1295    optional string field = 1;
  1296  
  1297    // Type specifies the expected Kubernetes type for the field, such as "cpu" or "memory".
  1298    // This helps in converting values between different formats (e.g., "0.1" to "100m" for CPU).
  1299    optional string type = 2;
  1300  }
  1301  
  1302  message KustomizeGvk {
  1303    optional string group = 1;
  1304  
  1305    optional string version = 2;
  1306  
  1307    optional string kind = 3;
  1308  }
  1309  
  1310  // KustomizeOptions are options for kustomize to use when building manifests
  1311  message KustomizeOptions {
  1312    // BuildOptions is a string of build parameters to use when calling `kustomize build`
  1313    optional string buildOptions = 1;
  1314  
  1315    // BinaryPath holds optional path to kustomize binary
  1316    //
  1317    // Deprecated: Use settings.Settings instead. See: settings.Settings.KustomizeVersions.
  1318    // If this field is set, it will be used as the Kustomize binary path.
  1319    // Otherwise, Versions is used.
  1320    optional string binaryPath = 2;
  1321  
  1322    // Versions is a list of Kustomize versions and their corresponding binary paths and build options.
  1323    repeated KustomizeVersion versions = 3;
  1324  }
  1325  
  1326  message KustomizePatch {
  1327    optional string path = 1;
  1328  
  1329    optional string patch = 2;
  1330  
  1331    optional KustomizeSelector target = 3;
  1332  
  1333    map<string, bool> options = 4;
  1334  }
  1335  
  1336  message KustomizeReplica {
  1337    // Name of Deployment or StatefulSet
  1338    optional string name = 1;
  1339  
  1340    // Number of replicas
  1341    optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString count = 2;
  1342  }
  1343  
  1344  message KustomizeResId {
  1345    optional KustomizeGvk gvk = 1;
  1346  
  1347    optional string name = 2;
  1348  
  1349    optional string namespace = 3;
  1350  }
  1351  
  1352  message KustomizeSelector {
  1353    optional KustomizeResId resId = 1;
  1354  
  1355    optional string annotationSelector = 2;
  1356  
  1357    optional string labelSelector = 3;
  1358  }
  1359  
  1360  // KustomizeVersion holds information about additional Kustomize versions
  1361  message KustomizeVersion {
  1362    // Name holds Kustomize version name
  1363    optional string name = 1;
  1364  
  1365    // Path holds the corresponding binary path
  1366    optional string path = 2;
  1367  
  1368    // BuildOptions that are specific to a Kustomize version
  1369    optional string buildOptions = 3;
  1370  }
  1371  
  1372  // ListGenerator include items info
  1373  message ListGenerator {
  1374    // +kubebuilder:validation:Optional
  1375    repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON elements = 1;
  1376  
  1377    optional ApplicationSetTemplate template = 2;
  1378  
  1379    optional string elementsYaml = 3;
  1380  }
  1381  
  1382  message ManagedNamespaceMetadata {
  1383    map<string, string> labels = 1;
  1384  
  1385    map<string, string> annotations = 2;
  1386  }
  1387  
  1388  // MatrixGenerator generates the cartesian product of two sets of parameters. The parameters are defined by two nested
  1389  // generators.
  1390  message MatrixGenerator {
  1391    repeated ApplicationSetNestedGenerator generators = 1;
  1392  
  1393    optional ApplicationSetTemplate template = 2;
  1394  }
  1395  
  1396  // MergeGenerator merges the output of two or more generators. Where the values for all specified merge keys are equal
  1397  // between two sets of generated parameters, the parameter sets will be merged with the parameters from the latter
  1398  // generator taking precedence. Parameter sets with merge keys not present in the base generator's params will be
  1399  // ignored.
  1400  // For example, if the first generator produced [{a: '1', b: '2'}, {c: '1', d: '1'}] and the second generator produced
  1401  // [{'a': 'override'}], the united parameters for merge keys = ['a'] would be
  1402  // [{a: 'override', b: '1'}, {c: '1', d: '1'}].
  1403  //
  1404  // MergeGenerator supports template overriding. If a MergeGenerator is one of multiple top-level generators, its
  1405  // template will be merged with the top-level generator before the parameters are applied.
  1406  message MergeGenerator {
  1407    repeated ApplicationSetNestedGenerator generators = 1;
  1408  
  1409    repeated string mergeKeys = 2;
  1410  
  1411    optional ApplicationSetTemplate template = 3;
  1412  }
  1413  
  1414  // NestedMatrixGenerator is a MatrixGenerator nested under another combination-type generator (MatrixGenerator or
  1415  // MergeGenerator). NestedMatrixGenerator does not have an override template, because template overriding has no meaning
  1416  // within the constituent generators of combination-type generators.
  1417  //
  1418  // NOTE: Nested matrix generator is not included directly in the CRD struct, instead it is included
  1419  // as a generic 'apiextensionsv1.JSON' object, and then marshalled into a NestedMatrixGenerator
  1420  // when processed.
  1421  message NestedMatrixGenerator {
  1422    repeated ApplicationSetTerminalGenerator generators = 1;
  1423  }
  1424  
  1425  // NestedMergeGenerator is a MergeGenerator nested under another combination-type generator (MatrixGenerator or
  1426  // MergeGenerator). NestedMergeGenerator does not have an override template, because template overriding has no meaning
  1427  // within the constituent generators of combination-type generators.
  1428  //
  1429  // NOTE: Nested merge generator is not included directly in the CRD struct, instead it is included
  1430  // as a generic 'apiextensionsv1.JSON' object, and then marshalled into a NestedMergeGenerator
  1431  // when processed.
  1432  message NestedMergeGenerator {
  1433    repeated ApplicationSetTerminalGenerator generators = 1;
  1434  
  1435    repeated string mergeKeys = 2;
  1436  }
  1437  
  1438  // OCIMetadata contains metadata for a specific revision in an OCI repository
  1439  message OCIMetadata {
  1440    optional string createdAt = 1;
  1441  
  1442    optional string authors = 2;
  1443  
  1444    optional string imageUrl = 3;
  1445  
  1446    optional string docsUrl = 4;
  1447  
  1448    optional string sourceUrl = 5;
  1449  
  1450    optional string version = 6;
  1451  
  1452    optional string description = 7;
  1453  }
  1454  
  1455  // Operation contains information about a requested or running operation
  1456  message Operation {
  1457    // Sync contains parameters for the operation
  1458    optional SyncOperation sync = 1;
  1459  
  1460    // InitiatedBy contains information about who initiated the operations
  1461    optional OperationInitiator initiatedBy = 2;
  1462  
  1463    // Info is a list of informational items for this operation
  1464    repeated Info info = 3;
  1465  
  1466    // Retry controls the strategy to apply if a sync fails
  1467    optional RetryStrategy retry = 4;
  1468  }
  1469  
  1470  // OperationInitiator contains information about the initiator of an operation
  1471  message OperationInitiator {
  1472    // Username contains the name of a user who started operation
  1473    optional string username = 1;
  1474  
  1475    // Automated is set to true if operation was initiated automatically by the application controller.
  1476    optional bool automated = 2;
  1477  }
  1478  
  1479  // OperationState contains information about state of a running operation
  1480  message OperationState {
  1481    // Operation is the original requested operation
  1482    optional Operation operation = 1;
  1483  
  1484    // Phase is the current phase of the operation
  1485    optional string phase = 2;
  1486  
  1487    // Message holds any pertinent messages when attempting to perform operation (typically errors).
  1488    optional string message = 3;
  1489  
  1490    // SyncResult is the result of a Sync operation
  1491    optional SyncOperationResult syncResult = 4;
  1492  
  1493    // StartedAt contains time of operation start
  1494    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 6;
  1495  
  1496    // FinishedAt contains time of operation completion
  1497    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 7;
  1498  
  1499    // RetryCount contains time of operation retries
  1500    optional int64 retryCount = 8;
  1501  }
  1502  
  1503  message OptionalArray {
  1504    // Array is the value of an array type parameter.
  1505    // +optional
  1506    repeated string array = 1;
  1507  }
  1508  
  1509  message OptionalMap {
  1510    // Map is the value of a map type parameter.
  1511    // +optional
  1512    map<string, string> map = 1;
  1513  }
  1514  
  1515  // OrphanedResourceKey is a reference to a resource to be ignored from
  1516  message OrphanedResourceKey {
  1517    optional string group = 1;
  1518  
  1519    optional string kind = 2;
  1520  
  1521    optional string name = 3;
  1522  }
  1523  
  1524  // OrphanedResourcesMonitorSettings holds settings of orphaned resources monitoring
  1525  message OrphanedResourcesMonitorSettings {
  1526    // Warn indicates if warning condition should be created for apps which have orphaned resources
  1527    optional bool warn = 1;
  1528  
  1529    // Ignore contains a list of resources that are to be excluded from orphaned resources monitoring
  1530    repeated OrphanedResourceKey ignore = 2;
  1531  }
  1532  
  1533  // OverrideIgnoreDiff contains configurations about how fields should be ignored during diffs between
  1534  // the desired state and live state
  1535  message OverrideIgnoreDiff {
  1536    // JSONPointers is a JSON path list following the format defined in RFC4627 (https://datatracker.ietf.org/doc/html/rfc6902#section-3)
  1537    repeated string jSONPointers = 1;
  1538  
  1539    // JQPathExpressions is a JQ path list that will be evaludated during the diff process
  1540    repeated string jqPathExpressions = 2;
  1541  
  1542    // ManagedFieldsManagers is a list of trusted managers. Fields mutated by those managers will take precedence over the
  1543    // desired state defined in the SCM and won't be displayed in diffs
  1544    repeated string managedFieldsManagers = 3;
  1545  }
  1546  
  1547  message PluginConfigMapRef {
  1548    // Name of the ConfigMap
  1549    optional string name = 1;
  1550  }
  1551  
  1552  // PluginGenerator defines connection info specific to Plugin.
  1553  message PluginGenerator {
  1554    optional PluginConfigMapRef configMapRef = 1;
  1555  
  1556    optional PluginInput input = 2;
  1557  
  1558    // RequeueAfterSeconds determines how long the ApplicationSet controller will wait before reconciling the ApplicationSet again.
  1559    optional int64 requeueAfterSeconds = 3;
  1560  
  1561    optional ApplicationSetTemplate template = 4;
  1562  
  1563    // Values contains key/value pairs which are passed directly as parameters to the template. These values will not be
  1564    // sent as parameters to the plugin.
  1565    map<string, string> values = 5;
  1566  }
  1567  
  1568  message PluginInput {
  1569    // Parameters contains the information to pass to the plugin. It is a map. The keys must be strings, and the
  1570    // values can be any type.
  1571    map<string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON> parameters = 1;
  1572  }
  1573  
  1574  // ProjectRole represents a role that has access to a project
  1575  message ProjectRole {
  1576    // Name is a name for this role
  1577    optional string name = 1;
  1578  
  1579    // Description is a description of the role
  1580    optional string description = 2;
  1581  
  1582    // Policies Stores a list of casbin formatted strings that define access policies for the role in the project
  1583    repeated string policies = 3;
  1584  
  1585    // JWTTokens are a list of generated JWT tokens bound to this role
  1586    repeated JWTToken jwtTokens = 4;
  1587  
  1588    // Groups are a list of OIDC group claims bound to this role
  1589    repeated string groups = 5;
  1590  }
  1591  
  1592  // PullRequestGenerator defines a generator that scrapes a PullRequest API to find candidate pull requests.
  1593  message PullRequestGenerator {
  1594    // Which provider to use and config for it.
  1595    optional PullRequestGeneratorGithub github = 1;
  1596  
  1597    optional PullRequestGeneratorGitLab gitlab = 2;
  1598  
  1599    optional PullRequestGeneratorGitea gitea = 3;
  1600  
  1601    optional PullRequestGeneratorBitbucketServer bitbucketServer = 4;
  1602  
  1603    // Filters for which pull requests should be considered.
  1604    repeated PullRequestGeneratorFilter filters = 5;
  1605  
  1606    // Standard parameters.
  1607    optional int64 requeueAfterSeconds = 6;
  1608  
  1609    optional ApplicationSetTemplate template = 7;
  1610  
  1611    optional PullRequestGeneratorBitbucket bitbucket = 8;
  1612  
  1613    // Additional provider to use and config for it.
  1614    optional PullRequestGeneratorAzureDevOps azuredevops = 9;
  1615  
  1616    // Values contains key/value pairs which are passed directly as parameters to the template
  1617    map<string, string> values = 10;
  1618  
  1619    // ContinueOnRepoNotFoundError is a flag to continue the ApplicationSet Pull Request generator parameters generation even if the repository is not found.
  1620    optional bool continueOnRepoNotFoundError = 11;
  1621  }
  1622  
  1623  // PullRequestGeneratorAzureDevOps defines connection info specific to AzureDevOps.
  1624  message PullRequestGeneratorAzureDevOps {
  1625    // Azure DevOps org to scan. Required.
  1626    optional string organization = 1;
  1627  
  1628    // Azure DevOps project name to scan. Required.
  1629    optional string project = 2;
  1630  
  1631    // Azure DevOps repo name to scan. Required.
  1632    optional string repo = 3;
  1633  
  1634    // The Azure DevOps API URL to talk to. If blank, use https://dev.azure.com/.
  1635    optional string api = 4;
  1636  
  1637    // Authentication token reference.
  1638    optional SecretRef tokenRef = 5;
  1639  
  1640    // Labels is used to filter the PRs that you want to target
  1641    repeated string labels = 6;
  1642  }
  1643  
  1644  // PullRequestGeneratorBitbucket defines connection info specific to Bitbucket.
  1645  message PullRequestGeneratorBitbucket {
  1646    // Workspace to scan. Required.
  1647    optional string owner = 1;
  1648  
  1649    // Repo name to scan. Required.
  1650    optional string repo = 2;
  1651  
  1652    // The Bitbucket REST API URL to talk to. If blank, uses https://api.bitbucket.org/2.0.
  1653    optional string api = 3;
  1654  
  1655    // Credentials for Basic auth
  1656    optional BasicAuthBitbucketServer basicAuth = 4;
  1657  
  1658    // Credentials for AppToken (Bearer auth)
  1659    optional BearerTokenBitbucketCloud bearerToken = 5;
  1660  }
  1661  
  1662  // PullRequestGeneratorBitbucketServer defines connection info specific to BitbucketServer.
  1663  message PullRequestGeneratorBitbucketServer {
  1664    // Project to scan. Required.
  1665    optional string project = 1;
  1666  
  1667    // Repo name to scan. Required.
  1668    optional string repo = 2;
  1669  
  1670    // The Bitbucket REST API URL to talk to e.g. https://bitbucket.org/rest Required.
  1671    optional string api = 3;
  1672  
  1673    // Credentials for Basic auth
  1674    optional BasicAuthBitbucketServer basicAuth = 4;
  1675  
  1676    // Credentials for AccessToken (Bearer auth)
  1677    optional BearerTokenBitbucket bearerToken = 5;
  1678  
  1679    // Allow self-signed TLS / Certificates; default: false
  1680    optional bool insecure = 6;
  1681  
  1682    // ConfigMap key holding the trusted certificates
  1683    optional ConfigMapKeyRef caRef = 7;
  1684  }
  1685  
  1686  // PullRequestGeneratorFilter is a single pull request filter.
  1687  // If multiple filter types are set on a single struct, they will be AND'd together. All filters must
  1688  // pass for a pull request to be included.
  1689  message PullRequestGeneratorFilter {
  1690    optional string branchMatch = 1;
  1691  
  1692    optional string targetBranchMatch = 2;
  1693  
  1694    optional string titleMatch = 3;
  1695  }
  1696  
  1697  // PullRequestGeneratorGitLab defines connection info specific to GitLab.
  1698  message PullRequestGeneratorGitLab {
  1699    // GitLab project to scan. Required.
  1700    optional string project = 1;
  1701  
  1702    // The GitLab API URL to talk to. If blank, uses https://gitlab.com/.
  1703    optional string api = 2;
  1704  
  1705    // Authentication token reference.
  1706    optional SecretRef tokenRef = 3;
  1707  
  1708    // Labels is used to filter the MRs that you want to target
  1709    repeated string labels = 4;
  1710  
  1711    // PullRequestState is an additional MRs filter to get only those with a certain state. Default: "" (all states).
  1712    // Valid values: opened, closed, merged, locked".
  1713    optional string pullRequestState = 5;
  1714  
  1715    // Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false
  1716    optional bool insecure = 6;
  1717  
  1718    // ConfigMap key holding the trusted certificates
  1719    optional ConfigMapKeyRef caRef = 7;
  1720  }
  1721  
  1722  // PullRequestGeneratorGitea defines connection info specific to Gitea.
  1723  message PullRequestGeneratorGitea {
  1724    // Gitea org or user to scan. Required.
  1725    optional string owner = 1;
  1726  
  1727    // Gitea repo name to scan. Required.
  1728    optional string repo = 2;
  1729  
  1730    // The Gitea API URL to talk to. Required
  1731    optional string api = 3;
  1732  
  1733    // Authentication token reference.
  1734    optional SecretRef tokenRef = 4;
  1735  
  1736    // Allow insecure tls, for self-signed certificates; default: false.
  1737    optional bool insecure = 5;
  1738  
  1739    // Labels is used to filter the PRs that you want to target
  1740    repeated string labels = 6;
  1741  }
  1742  
  1743  // PullRequestGenerator defines connection info specific to GitHub.
  1744  message PullRequestGeneratorGithub {
  1745    // GitHub org or user to scan. Required.
  1746    optional string owner = 1;
  1747  
  1748    // GitHub repo name to scan. Required.
  1749    optional string repo = 2;
  1750  
  1751    // The GitHub API URL to talk to. If blank, use https://api.github.com/.
  1752    optional string api = 3;
  1753  
  1754    // Authentication token reference.
  1755    optional SecretRef tokenRef = 4;
  1756  
  1757    // AppSecretName is a reference to a GitHub App repo-creds secret with permission to access pull requests.
  1758    optional string appSecretName = 5;
  1759  
  1760    // Labels is used to filter the PRs that you want to target
  1761    repeated string labels = 6;
  1762  }
  1763  
  1764  message RefTarget {
  1765    optional Repository repo = 1;
  1766  
  1767    optional string targetRevision = 2;
  1768  
  1769    optional string chart = 3;
  1770  }
  1771  
  1772  // RepoCreds holds the definition for repository credentials
  1773  message RepoCreds {
  1774    // URL is the URL to which these credentials match
  1775    optional string url = 1;
  1776  
  1777    // Username for authenticating at the repo server
  1778    optional string username = 2;
  1779  
  1780    // Password for authenticating at the repo server
  1781    optional string password = 3;
  1782  
  1783    // SSHPrivateKey contains the private key data for authenticating at the repo server using SSH (only Git repos)
  1784    optional string sshPrivateKey = 4;
  1785  
  1786    // TLSClientCertData specifies the TLS client cert data for authenticating at the repo server
  1787    optional string tlsClientCertData = 5;
  1788  
  1789    // TLSClientCertKey specifies the TLS client cert key for authenticating at the repo server
  1790    optional string tlsClientCertKey = 6;
  1791  
  1792    // GithubAppPrivateKey specifies the private key PEM data for authentication via GitHub app
  1793    optional string githubAppPrivateKey = 7;
  1794  
  1795    // GithubAppId specifies the Github App ID of the app used to access the repo for GitHub app authentication
  1796    optional int64 githubAppID = 8;
  1797  
  1798    // GithubAppInstallationId specifies the ID of the installed GitHub App for GitHub app authentication
  1799    optional int64 githubAppInstallationID = 9;
  1800  
  1801    // GithubAppEnterpriseBaseURL specifies the GitHub API URL for GitHub app authentication. If empty will default to https://api.github.com
  1802    optional string githubAppEnterpriseBaseUrl = 10;
  1803  
  1804    // EnableOCI specifies whether helm-oci support should be enabled for this repo
  1805    optional bool enableOCI = 11;
  1806  
  1807    // Type specifies the type of the repoCreds. Can be either "git" or "helm. "git" is assumed if empty or absent.
  1808    optional string type = 12;
  1809  
  1810    // GCPServiceAccountKey specifies the service account key in JSON format to be used for getting credentials to Google Cloud Source repos
  1811    optional string gcpServiceAccountKey = 13;
  1812  
  1813    // Proxy specifies the HTTP/HTTPS proxy used to access repos at the repo server
  1814    optional string proxy = 19;
  1815  
  1816    // ForceHttpBasicAuth specifies whether Argo CD should attempt to force basic auth for HTTP connections
  1817    optional bool forceHttpBasicAuth = 20;
  1818  
  1819    // NoProxy specifies a list of targets where the proxy isn't used, applies only in cases where the proxy is applied
  1820    optional string noProxy = 23;
  1821  
  1822    // UseAzureWorkloadIdentity specifies whether to use Azure Workload Identity for authentication
  1823    optional bool useAzureWorkloadIdentity = 24;
  1824  
  1825    // BearerToken contains the bearer token used for Git BitBucket Data Center auth at the repo server
  1826    optional string bearerToken = 25;
  1827  
  1828    // InsecureOCIForceHttp specifies whether the connection to the repository uses TLS at _all_. If true, no TLS. This flag is applicable for OCI repos only.
  1829    optional bool insecureOCIForceHttp = 26;
  1830  }
  1831  
  1832  // RepositoryList is a collection of Repositories.
  1833  message RepoCredsList {
  1834    optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
  1835  
  1836    repeated RepoCreds items = 2;
  1837  }
  1838  
  1839  // Repository is a repository holding application configurations
  1840  message Repository {
  1841    // Repo contains the URL to the remote repository
  1842    optional string repo = 1;
  1843  
  1844    // Username contains the user name used for authenticating at the remote repository
  1845    optional string username = 2;
  1846  
  1847    // Password contains the password or PAT used for authenticating at the remote repository
  1848    optional string password = 3;
  1849  
  1850    // SSHPrivateKey contains the PEM data for authenticating at the repo server. Only used with Git repos.
  1851    optional string sshPrivateKey = 4;
  1852  
  1853    // ConnectionState contains information about the current state of connection to the repository server
  1854    optional ConnectionState connectionState = 5;
  1855  
  1856    // InsecureIgnoreHostKey should not be used anymore, Insecure is favoured
  1857    // Used only for Git repos
  1858    optional bool insecureIgnoreHostKey = 6;
  1859  
  1860    // Insecure specifies whether the connection to the repository ignores any errors when verifying TLS certificates or SSH host keys
  1861    optional bool insecure = 7;
  1862  
  1863    // EnableLFS specifies whether git-lfs support should be enabled for this repo. Only valid for Git repositories.
  1864    optional bool enableLfs = 8;
  1865  
  1866    // TLSClientCertData contains a certificate in PEM format for authenticating at the repo server
  1867    optional string tlsClientCertData = 9;
  1868  
  1869    // TLSClientCertKey contains a private key in PEM format for authenticating at the repo server
  1870    optional string tlsClientCertKey = 10;
  1871  
  1872    // Type specifies the type of the repo. Can be either "git" or "helm. "git" is assumed if empty or absent.
  1873    optional string type = 11;
  1874  
  1875    // Name specifies a name to be used for this repo. Only used with Helm repos
  1876    optional string name = 12;
  1877  
  1878    // Whether credentials were inherited from a credential set
  1879    optional bool inheritedCreds = 13;
  1880  
  1881    // EnableOCI specifies whether helm-oci support should be enabled for this repo
  1882    optional bool enableOCI = 14;
  1883  
  1884    // Github App Private Key PEM data
  1885    optional string githubAppPrivateKey = 15;
  1886  
  1887    // GithubAppId specifies the ID of the GitHub app used to access the repo
  1888    optional int64 githubAppID = 16;
  1889  
  1890    // GithubAppInstallationId specifies the installation ID of the GitHub App used to access the repo
  1891    optional int64 githubAppInstallationID = 17;
  1892  
  1893    // GithubAppEnterpriseBaseURL specifies the base URL of GitHub Enterprise installation. If empty will default to https://api.github.com
  1894    optional string githubAppEnterpriseBaseUrl = 18;
  1895  
  1896    // Proxy specifies the HTTP/HTTPS proxy used to access the repo
  1897    optional string proxy = 19;
  1898  
  1899    // Reference between project and repository that allows it to be automatically added as an item inside SourceRepos project entity
  1900    optional string project = 20;
  1901  
  1902    // GCPServiceAccountKey specifies the service account key in JSON format to be used for getting credentials to Google Cloud Source repos
  1903    optional string gcpServiceAccountKey = 21;
  1904  
  1905    // ForceHttpBasicAuth specifies whether Argo CD should attempt to force basic auth for HTTP connections
  1906    optional bool forceHttpBasicAuth = 22;
  1907  
  1908    // NoProxy specifies a list of targets where the proxy isn't used, applies only in cases where the proxy is applied
  1909    optional string noProxy = 23;
  1910  
  1911    // UseAzureWorkloadIdentity specifies whether to use Azure Workload Identity for authentication
  1912    optional bool useAzureWorkloadIdentity = 24;
  1913  
  1914    // BearerToken contains the bearer token used for Git BitBucket Data Center auth at the repo server
  1915    optional string bearerToken = 25;
  1916  
  1917    // InsecureOCIForceHttp specifies whether the connection to the repository uses TLS at _all_. If true, no TLS. This flag is applicable for OCI repos only.
  1918    optional bool insecureOCIForceHttp = 26;
  1919  }
  1920  
  1921  // A RepositoryCertificate is either SSH known hosts entry or TLS certificate
  1922  message RepositoryCertificate {
  1923    // ServerName specifies the DNS name of the server this certificate is intended for
  1924    optional string serverName = 1;
  1925  
  1926    // CertType specifies the type of the certificate - currently one of "https" or "ssh"
  1927    optional string certType = 2;
  1928  
  1929    // CertSubType specifies the sub type of the cert, i.e. "ssh-rsa"
  1930    optional string certSubType = 3;
  1931  
  1932    // CertData contains the actual certificate data, dependent on the certificate type
  1933    optional bytes certData = 4;
  1934  
  1935    // CertInfo will hold additional certificate info, depdendent on the certificate type (e.g. SSH fingerprint, X509 CommonName)
  1936    optional string certInfo = 5;
  1937  }
  1938  
  1939  // RepositoryCertificateList is a collection of RepositoryCertificates
  1940  message RepositoryCertificateList {
  1941    optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
  1942  
  1943    // List of certificates to be processed
  1944    repeated RepositoryCertificate items = 2;
  1945  }
  1946  
  1947  // RepositoryList is a collection of Repositories.
  1948  message RepositoryList {
  1949    optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
  1950  
  1951    repeated Repository items = 2;
  1952  }
  1953  
  1954  // ResourceAction represents an individual action that can be performed on a resource.
  1955  // It includes parameters, an optional disabled flag, an icon for display, and a name for the action.
  1956  message ResourceAction {
  1957    // Name is the name or identifier for the action.
  1958    optional string name = 1;
  1959  
  1960    // Params contains the parameters required to execute the action.
  1961    repeated ResourceActionParam params = 2;
  1962  
  1963    // Disabled indicates whether the action is disabled.
  1964    optional bool disabled = 3;
  1965  
  1966    // IconClass specifies the CSS class for the action's icon.
  1967    optional string iconClass = 4;
  1968  
  1969    // DisplayName provides a user-friendly name for the action.
  1970    optional string displayName = 5;
  1971  }
  1972  
  1973  // ResourceActionDefinition defines an individual action that can be executed on a resource.
  1974  // It includes a name for the action and a Lua script that defines the action's behavior.
  1975  message ResourceActionDefinition {
  1976    // Name is the identifier for the action.
  1977    optional string name = 1;
  1978  
  1979    // ActionLua contains the Lua script that defines the behavior of the action.
  1980    optional string actionLua = 2;
  1981  }
  1982  
  1983  // ResourceActionParam represents a parameter for a resource action.
  1984  // It includes a name, value, type, and an optional default value for the parameter.
  1985  message ResourceActionParam {
  1986    // Name is the name of the parameter.
  1987    optional string name = 1;
  1988  }
  1989  
  1990  // ResourceActions holds the set of actions that can be applied to a resource.
  1991  // It defines custom Lua scripts for discovery and action execution, as well as options
  1992  // for merging built-in actions with custom ones.
  1993  message ResourceActions {
  1994    // ActionDiscoveryLua contains a Lua script for discovering actions.
  1995    optional string actionDiscoveryLua = 1;
  1996  
  1997    // Definitions holds the list of action definitions available for the resource.
  1998    repeated ResourceActionDefinition definitions = 2;
  1999  
  2000    // MergeBuiltinActions indicates whether built-in actions should be merged with custom actions.
  2001    optional bool mergeBuiltinActions = 3;
  2002  }
  2003  
  2004  // ResourceDiff holds the diff between a live and target resource object in Argo CD.
  2005  // It is used to compare the desired state (from Git/Helm) with the actual state in the cluster.
  2006  message ResourceDiff {
  2007    // Group represents the API group of the resource (e.g., "apps" for Deployments).
  2008    optional string group = 1;
  2009  
  2010    // Kind represents the Kubernetes resource kind (e.g., "Deployment", "Service").
  2011    optional string kind = 2;
  2012  
  2013    // Namespace specifies the namespace where the resource exists.
  2014    optional string namespace = 3;
  2015  
  2016    // Name is the name of the resource.
  2017    optional string name = 4;
  2018  
  2019    // TargetState contains the JSON-serialized resource manifest as defined in the Git/Helm repository.
  2020    optional string targetState = 5;
  2021  
  2022    // LiveState contains the JSON-serialized resource manifest of the resource currently running in the cluster.
  2023    optional string liveState = 6;
  2024  
  2025    // Diff contains the JSON patch representing the difference between the live and target resource.
  2026    // Deprecated: Use NormalizedLiveState and PredictedLiveState instead to compute differences.
  2027    optional string diff = 7;
  2028  
  2029    // Hook indicates whether this resource is a hook resource (e.g., pre-sync or post-sync hooks).
  2030    optional bool hook = 8;
  2031  
  2032    // NormalizedLiveState contains the JSON-serialized live resource state after applying normalizations.
  2033    // Normalizations may include ignoring irrelevant fields like timestamps or defaults applied by Kubernetes.
  2034    optional string normalizedLiveState = 9;
  2035  
  2036    // PredictedLiveState contains the JSON-serialized resource state that Argo CD predicts based on the
  2037    // combination of the normalized live state and the desired target state.
  2038    optional string predictedLiveState = 10;
  2039  
  2040    // ResourceVersion is the Kubernetes resource version, which helps in tracking changes.
  2041    optional string resourceVersion = 11;
  2042  
  2043    // Modified indicates whether the live resource has changes compared to the target resource.
  2044    optional bool modified = 12;
  2045  }
  2046  
  2047  // ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state.
  2048  message ResourceIgnoreDifferences {
  2049    optional string group = 1;
  2050  
  2051    optional string kind = 2;
  2052  
  2053    optional string name = 3;
  2054  
  2055    optional string namespace = 4;
  2056  
  2057    repeated string jsonPointers = 5;
  2058  
  2059    repeated string jqPathExpressions = 6;
  2060  
  2061    // ManagedFieldsManagers is a list of trusted managers. Fields mutated by those managers will take precedence over the
  2062    // desired state defined in the SCM and won't be displayed in diffs
  2063    repeated string managedFieldsManagers = 7;
  2064  }
  2065  
  2066  // ResourceNetworkingInfo holds networking-related information for a resource.
  2067  message ResourceNetworkingInfo {
  2068    // TargetLabels represents labels associated with the target resources that this resource communicates with.
  2069    map<string, string> targetLabels = 1;
  2070  
  2071    // TargetRefs contains references to other resources that this resource interacts with, such as Services or Pods.
  2072    repeated ResourceRef targetRefs = 2;
  2073  
  2074    // Labels holds the labels associated with this networking resource.
  2075    map<string, string> labels = 3;
  2076  
  2077    // Ingress provides information about external access points (e.g., load balancer ingress) for this resource.
  2078    repeated .k8s.io.api.core.v1.LoadBalancerIngress ingress = 4;
  2079  
  2080    // ExternalURLs holds a list of URLs that should be accessible externally.
  2081    // This field is typically populated for Ingress resources based on their hostname rules.
  2082    repeated string externalURLs = 5;
  2083  }
  2084  
  2085  // ResourceNode contains information about a live Kubernetes resource and its relationships with other resources.
  2086  message ResourceNode {
  2087    // ResourceRef uniquely identifies the resource using its group, kind, namespace, and name.
  2088    optional ResourceRef resourceRef = 1;
  2089  
  2090    // ParentRefs lists the parent resources that reference this resource.
  2091    // This helps in understanding ownership and hierarchical relationships.
  2092    repeated ResourceRef parentRefs = 2;
  2093  
  2094    // Info provides additional metadata or annotations about the resource.
  2095    repeated InfoItem info = 3;
  2096  
  2097    // NetworkingInfo contains details about the resource's networking attributes,
  2098    // such as ingress information and external URLs.
  2099    optional ResourceNetworkingInfo networkingInfo = 4;
  2100  
  2101    // ResourceVersion indicates the version of the resource, used to track changes.
  2102    optional string resourceVersion = 5;
  2103  
  2104    // Images lists container images associated with the resource.
  2105    // This is primarily useful for pods and other workload resources.
  2106    repeated string images = 6;
  2107  
  2108    // Health represents the health status of the resource (e.g., Healthy, Degraded, Progressing).
  2109    optional HealthStatus health = 7;
  2110  
  2111    // CreatedAt records the timestamp when the resource was created.
  2112    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time createdAt = 8;
  2113  }
  2114  
  2115  // ResourceOverride holds configuration to customize resource diffing and health assessment
  2116  message ResourceOverride {
  2117    // HealthLua contains a Lua script that defines custom health checks for the resource.
  2118    optional string healthLua = 1;
  2119  
  2120    // UseOpenLibs indicates whether to use open-source libraries for the resource.
  2121    optional bool useOpenLibs = 5;
  2122  
  2123    // Actions defines the set of actions that can be performed on the resource, as a Lua script.
  2124    optional string actions = 3;
  2125  
  2126    // IgnoreDifferences contains configuration for which differences should be ignored during the resource diffing.
  2127    optional OverrideIgnoreDiff ignoreDifferences = 2;
  2128  
  2129    // IgnoreResourceUpdates holds configuration for ignoring updates to specific resource fields.
  2130    optional OverrideIgnoreDiff ignoreResourceUpdates = 6;
  2131  
  2132    // KnownTypeFields lists fields for which unit conversions should be applied.
  2133    repeated KnownTypeField knownTypeFields = 4;
  2134  }
  2135  
  2136  // ResourceRef includes fields which uniquely identify a resource
  2137  message ResourceRef {
  2138    optional string group = 1;
  2139  
  2140    optional string version = 2;
  2141  
  2142    optional string kind = 3;
  2143  
  2144    optional string namespace = 4;
  2145  
  2146    optional string name = 5;
  2147  
  2148    optional string uid = 6;
  2149  }
  2150  
  2151  // ResourceResult holds the operation result details of a specific resource
  2152  message ResourceResult {
  2153    // Group specifies the API group of the resource
  2154    optional string group = 1;
  2155  
  2156    // Version specifies the API version of the resource
  2157    optional string version = 2;
  2158  
  2159    // Kind specifies the API kind of the resource
  2160    optional string kind = 3;
  2161  
  2162    // Namespace specifies the target namespace of the resource
  2163    optional string namespace = 4;
  2164  
  2165    // Name specifies the name of the resource
  2166    optional string name = 5;
  2167  
  2168    // Status holds the final result of the sync. Will be empty if the resources is yet to be applied/pruned and is always zero-value for hooks
  2169    optional string status = 6;
  2170  
  2171    // Message contains an informational or error message for the last sync OR operation
  2172    optional string message = 7;
  2173  
  2174    // HookType specifies the type of the hook. Empty for non-hook resources
  2175    optional string hookType = 8;
  2176  
  2177    // HookPhase contains the state of any operation associated with this resource OR hook
  2178    // This can also contain values for non-hook resources.
  2179    optional string hookPhase = 9;
  2180  
  2181    // SyncPhase indicates the particular phase of the sync that this result was acquired in
  2182    optional string syncPhase = 10;
  2183  
  2184    // Images contains the images related to the ResourceResult
  2185    repeated string images = 11;
  2186  }
  2187  
  2188  // ResourceStatus holds the current synchronization and health status of a Kubernetes resource.
  2189  message ResourceStatus {
  2190    // Group represents the API group of the resource (e.g., "apps" for Deployments).
  2191    optional string group = 1;
  2192  
  2193    // Version indicates the API version of the resource (e.g., "v1", "v1beta1").
  2194    optional string version = 2;
  2195  
  2196    // Kind specifies the type of the resource (e.g., "Deployment", "Service").
  2197    optional string kind = 3;
  2198  
  2199    // Namespace defines the Kubernetes namespace where the resource is located.
  2200    optional string namespace = 4;
  2201  
  2202    // Name is the unique name of the resource within the namespace.
  2203    optional string name = 5;
  2204  
  2205    // Status represents the synchronization state of the resource (e.g., Synced, OutOfSync).
  2206    optional string status = 6;
  2207  
  2208    // Health indicates the health status of the resource (e.g., Healthy, Degraded, Progressing).
  2209    optional HealthStatus health = 7;
  2210  
  2211    // Hook is true if the resource is used as a lifecycle hook in an Argo CD application.
  2212    optional bool hook = 8;
  2213  
  2214    // RequiresPruning is true if the resource needs to be pruned (deleted) as part of synchronization.
  2215    optional bool requiresPruning = 9;
  2216  
  2217    // SyncWave determines the order in which resources are applied during a sync operation.
  2218    // Lower values are applied first.
  2219    optional int64 syncWave = 10;
  2220  
  2221    // RequiresDeletionConfirmation is true if the resource requires explicit user confirmation before deletion.
  2222    optional bool requiresDeletionConfirmation = 11;
  2223  }
  2224  
  2225  // RetryStrategy contains information about the strategy to apply when a sync failed
  2226  message RetryStrategy {
  2227    // Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
  2228    optional int64 limit = 1;
  2229  
  2230    // Backoff controls how to backoff on subsequent retries of failed syncs
  2231    optional Backoff backoff = 2;
  2232  
  2233    // Refresh indicates if the latest revision should be used on retry instead of the initial one (default: false)
  2234    optional bool refresh = 3;
  2235  }
  2236  
  2237  // RevisionHistory contains history information about a previous sync
  2238  message RevisionHistory {
  2239    // Revision holds the revision the sync was performed against
  2240    optional string revision = 2;
  2241  
  2242    // DeployedAt holds the time the sync operation completed
  2243    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time deployedAt = 4;
  2244  
  2245    // ID is an auto incrementing identifier of the RevisionHistory
  2246    optional int64 id = 5;
  2247  
  2248    // Source is a reference to the application source used for the sync operation
  2249    optional ApplicationSource source = 6;
  2250  
  2251    // DeployStartedAt holds the time the sync operation started
  2252    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time deployStartedAt = 7;
  2253  
  2254    // Sources is a reference to the application sources used for the sync operation
  2255    repeated ApplicationSource sources = 8;
  2256  
  2257    // Revisions holds the revision of each source in sources field the sync was performed against
  2258    repeated string revisions = 9;
  2259  
  2260    // InitiatedBy contains information about who initiated the operations
  2261    optional OperationInitiator initiatedBy = 10;
  2262  }
  2263  
  2264  // RevisionMetadata contains metadata for a specific revision in a Git repository. This field is used by the
  2265  // Source Hydrator feature which may be removed in the future.
  2266  message RevisionMetadata {
  2267    // who authored this revision,
  2268    // typically their name and email, e.g. "John Doe <john_doe@my-company.com>",
  2269    // but might not match this example
  2270    optional string author = 1;
  2271  
  2272    // Date specifies when the revision was authored
  2273    optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time date = 2;
  2274  
  2275    // Tags specifies any tags currently attached to the revision
  2276    // Floating tags can move from one revision to another
  2277    repeated string tags = 3;
  2278  
  2279    // Message contains the message associated with the revision, most likely the commit message.
  2280    optional string message = 4;
  2281  
  2282    // SignatureInfo contains a hint on the signer if the revision was signed with GPG, and signature verification is enabled.
  2283    optional string signatureInfo = 5;
  2284  
  2285    // References contains references to information that's related to this commit in some way.
  2286    repeated RevisionReference references = 6;
  2287  }
  2288  
  2289  // RevisionReference contains a reference to a some information that is related in some way to another commit. For now,
  2290  // it supports only references to a commit. In the future, it may support other types of references.
  2291  message RevisionReference {
  2292    // Commit contains metadata about the commit that is related in some way to another commit.
  2293    optional CommitMetadata commit = 1;
  2294  }
  2295  
  2296  // SCMProviderGenerator defines a generator that scrapes a SCMaaS API to find candidate repos.
  2297  message SCMProviderGenerator {
  2298    // Which provider to use and config for it.
  2299    optional SCMProviderGeneratorGithub github = 1;
  2300  
  2301    optional SCMProviderGeneratorGitlab gitlab = 2;
  2302  
  2303    optional SCMProviderGeneratorBitbucket bitbucket = 3;
  2304  
  2305    optional SCMProviderGeneratorBitbucketServer bitbucketServer = 4;
  2306  
  2307    optional SCMProviderGeneratorGitea gitea = 5;
  2308  
  2309    optional SCMProviderGeneratorAzureDevOps azureDevOps = 6;
  2310  
  2311    // Filters for which repos should be considered.
  2312    repeated SCMProviderGeneratorFilter filters = 7;
  2313  
  2314    // Which protocol to use for the SCM URL. Default is provider-specific but ssh if possible. Not all providers
  2315    // necessarily support all protocols.
  2316    optional string cloneProtocol = 8;
  2317  
  2318    // Standard parameters.
  2319    optional int64 requeueAfterSeconds = 9;
  2320  
  2321    optional ApplicationSetTemplate template = 10;
  2322  
  2323    // Values contains key/value pairs which are passed directly as parameters to the template
  2324    map<string, string> values = 11;
  2325  
  2326    optional SCMProviderGeneratorAWSCodeCommit awsCodeCommit = 12;
  2327  }
  2328  
  2329  // SCMProviderGeneratorAWSCodeCommit defines connection info specific to AWS CodeCommit.
  2330  message SCMProviderGeneratorAWSCodeCommit {
  2331    // TagFilters provides the tag filter(s) for repo discovery
  2332    repeated TagFilter tagFilters = 1;
  2333  
  2334    // Role provides the AWS IAM role to assume, for cross-account repo discovery
  2335    // if not provided, AppSet controller will use its pod/node identity to discover.
  2336    optional string role = 2;
  2337  
  2338    // Region provides the AWS region to discover repos.
  2339    // if not provided, AppSet controller will infer the current region from environment.
  2340    optional string region = 3;
  2341  
  2342    // Scan all branches instead of just the default branch.
  2343    optional bool allBranches = 4;
  2344  }
  2345  
  2346  // SCMProviderGeneratorAzureDevOps defines connection info specific to Azure DevOps.
  2347  message SCMProviderGeneratorAzureDevOps {
  2348    // Azure Devops organization. Required. E.g. "my-organization".
  2349    optional string organization = 5;
  2350  
  2351    // The URL to Azure DevOps. If blank, use https://dev.azure.com.
  2352    optional string api = 6;
  2353  
  2354    // Azure Devops team project. Required. E.g. "my-team".
  2355    optional string teamProject = 7;
  2356  
  2357    // The Personal Access Token (PAT) to use when connecting. Required.
  2358    optional SecretRef accessTokenRef = 8;
  2359  
  2360    // Scan all branches instead of just the default branch.
  2361    optional bool allBranches = 9;
  2362  }
  2363  
  2364  // SCMProviderGeneratorBitbucket defines connection info specific to Bitbucket Cloud (API version 2).
  2365  message SCMProviderGeneratorBitbucket {
  2366    // Bitbucket workspace to scan. Required.
  2367    optional string owner = 1;
  2368  
  2369    // Bitbucket user to use when authenticating.  Should have a "member" role to be able to read all repositories and branches.  Required
  2370    optional string user = 2;
  2371  
  2372    // The app password to use for the user.  Required. See: https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/
  2373    optional SecretRef appPasswordRef = 3;
  2374  
  2375    // Scan all branches instead of just the main branch.
  2376    optional bool allBranches = 4;
  2377  }
  2378  
  2379  // SCMProviderGeneratorBitbucketServer defines connection info specific to Bitbucket Server.
  2380  message SCMProviderGeneratorBitbucketServer {
  2381    // Project to scan. Required.
  2382    optional string project = 1;
  2383  
  2384    // The Bitbucket Server REST API URL to talk to. Required.
  2385    optional string api = 2;
  2386  
  2387    // Credentials for Basic auth
  2388    optional BasicAuthBitbucketServer basicAuth = 3;
  2389  
  2390    // Scan all branches instead of just the default branch.
  2391    optional bool allBranches = 4;
  2392  
  2393    // Credentials for AccessToken (Bearer auth)
  2394    optional BearerTokenBitbucket bearerToken = 5;
  2395  
  2396    // Allow self-signed TLS / Certificates; default: false
  2397    optional bool insecure = 6;
  2398  
  2399    // ConfigMap key holding the trusted certificates
  2400    optional ConfigMapKeyRef caRef = 7;
  2401  }
  2402  
  2403  // SCMProviderGeneratorFilter is a single repository filter.
  2404  // If multiple filter types are set on a single struct, they will be AND'd together. All filters must
  2405  // pass for a repo to be included.
  2406  message SCMProviderGeneratorFilter {
  2407    // A regex for repo names.
  2408    optional string repositoryMatch = 1;
  2409  
  2410    // An array of paths, all of which must exist.
  2411    repeated string pathsExist = 2;
  2412  
  2413    // An array of paths, all of which must not exist.
  2414    repeated string pathsDoNotExist = 3;
  2415  
  2416    // A regex which must match at least one label.
  2417    optional string labelMatch = 4;
  2418  
  2419    // A regex which must match the branch name.
  2420    optional string branchMatch = 5;
  2421  }
  2422  
  2423  // SCMProviderGeneratorGitea defines a connection info specific to Gitea.
  2424  message SCMProviderGeneratorGitea {
  2425    // Gitea organization or user to scan. Required.
  2426    optional string owner = 1;
  2427  
  2428    // The Gitea URL to talk to. For example https://gitea.mydomain.com/.
  2429    optional string api = 2;
  2430  
  2431    // Authentication token reference.
  2432    optional SecretRef tokenRef = 3;
  2433  
  2434    // Scan all branches instead of just the default branch.
  2435    optional bool allBranches = 4;
  2436  
  2437    // Allow self-signed TLS / Certificates; default: false
  2438    optional bool insecure = 5;
  2439  }
  2440  
  2441  // SCMProviderGeneratorGithub defines connection info specific to GitHub.
  2442  message SCMProviderGeneratorGithub {
  2443    // GitHub org to scan. Required.
  2444    optional string organization = 1;
  2445  
  2446    // The GitHub API URL to talk to. If blank, use https://api.github.com/.
  2447    optional string api = 2;
  2448  
  2449    // Authentication token reference.
  2450    optional SecretRef tokenRef = 3;
  2451  
  2452    // AppSecretName is a reference to a GitHub App repo-creds secret.
  2453    optional string appSecretName = 4;
  2454  
  2455    // Scan all branches instead of just the default branch.
  2456    optional bool allBranches = 5;
  2457  }
  2458  
  2459  // SCMProviderGeneratorGitlab defines connection info specific to Gitlab.
  2460  message SCMProviderGeneratorGitlab {
  2461    // Gitlab group to scan. Required.  You can use either the project id (recommended) or the full namespaced path.
  2462    optional string group = 1;
  2463  
  2464    // Recurse through subgroups (true) or scan only the base group (false).  Defaults to "false"
  2465    optional bool includeSubgroups = 2;
  2466  
  2467    // The Gitlab API URL to talk to.
  2468    optional string api = 3;
  2469  
  2470    // Authentication token reference.
  2471    optional SecretRef tokenRef = 4;
  2472  
  2473    // Scan all branches instead of just the default branch.
  2474    optional bool allBranches = 5;
  2475  
  2476    // Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false
  2477    optional bool insecure = 6;
  2478  
  2479    // When recursing through subgroups, also include shared Projects (true) or scan only the subgroups under same path (false).  Defaults to "true"
  2480    optional bool includeSharedProjects = 7;
  2481  
  2482    // Filter repos list based on Gitlab Topic.
  2483    optional string topic = 8;
  2484  
  2485    // ConfigMap key holding the trusted certificates
  2486    optional ConfigMapKeyRef caRef = 9;
  2487  }
  2488  
  2489  // Utility struct for a reference to a secret key.
  2490  message SecretRef {
  2491    optional string secretName = 1;
  2492  
  2493    optional string key = 2;
  2494  }
  2495  
  2496  // SignatureKey is the specification of a key required to verify commit signatures with
  2497  message SignatureKey {
  2498    // The ID of the key in hexadecimal notation
  2499    optional string keyID = 1;
  2500  }
  2501  
  2502  // SourceHydrator specifies a dry "don't repeat yourself" source for manifests, a sync source from which to sync
  2503  // hydrated manifests, and an optional hydrateTo location to act as a "staging" aread for hydrated manifests.
  2504  message SourceHydrator {
  2505    // DrySource specifies where the dry "don't repeat yourself" manifest source lives.
  2506    optional DrySource drySource = 1;
  2507  
  2508    // SyncSource specifies where to sync hydrated manifests from.
  2509    optional SyncSource syncSource = 2;
  2510  
  2511    // HydrateTo specifies an optional "staging" location to push hydrated manifests to. An external system would then
  2512    // have to move manifests to the SyncSource, e.g. by pull request.
  2513    optional HydrateTo hydrateTo = 3;
  2514  }
  2515  
  2516  // SourceHydratorStatus contains information about the current state of source hydration
  2517  message SourceHydratorStatus {
  2518    // LastSuccessfulOperation holds info about the most recent successful hydration
  2519    optional SuccessfulHydrateOperation lastSuccessfulOperation = 1;
  2520  
  2521    // CurrentOperation holds the status of the hydrate operation
  2522    optional HydrateOperation currentOperation = 2;
  2523  }
  2524  
  2525  // SuccessfulHydrateOperation contains information about the most recent successful hydrate operation
  2526  message SuccessfulHydrateOperation {
  2527    // DrySHA holds the resolved revision (sha) of the dry source as of the most recent reconciliation
  2528    optional string drySHA = 5;
  2529  
  2530    // HydratedSHA holds the resolved revision (sha) of the hydrated source as of the most recent reconciliation
  2531    optional string hydratedSHA = 6;
  2532  
  2533    // SourceHydrator holds the hydrator config used for the hydrate operation
  2534    optional SourceHydrator sourceHydrator = 7;
  2535  }
  2536  
  2537  // SyncOperation contains details about a sync operation.
  2538  message SyncOperation {
  2539    // Revision is the revision (Git) or chart version (Helm) which to sync the application to
  2540    // If omitted, will use the revision specified in app spec.
  2541    optional string revision = 1;
  2542  
  2543    // Prune specifies to delete resources from the cluster that are no longer tracked in git
  2544    optional bool prune = 2;
  2545  
  2546    // DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync
  2547    optional bool dryRun = 3;
  2548  
  2549    // SyncStrategy describes how to perform the sync
  2550    optional SyncStrategy syncStrategy = 4;
  2551  
  2552    // Resources describes which resources shall be part of the sync
  2553    repeated SyncOperationResource resources = 6;
  2554  
  2555    // Source overrides the source definition set in the application.
  2556    // This is typically set in a Rollback operation and is nil during a Sync operation
  2557    optional ApplicationSource source = 7;
  2558  
  2559    // Manifests is an optional field that overrides sync source with a local directory for development
  2560    repeated string manifests = 8;
  2561  
  2562    // SyncOptions provide per-sync sync-options, e.g. Validate=false
  2563    repeated string syncOptions = 9;
  2564  
  2565    // Sources overrides the source definition set in the application.
  2566    // This is typically set in a Rollback operation and is nil during a Sync operation
  2567    repeated ApplicationSource sources = 10;
  2568  
  2569    // Revisions is the list of revision (Git) or chart version (Helm) which to sync each source in sources field for the application to
  2570    // If omitted, will use the revision specified in app spec.
  2571    repeated string revisions = 11;
  2572  
  2573    // SelfHealAttemptsCount contains the number of auto-heal attempts
  2574    optional int64 autoHealAttemptsCount = 12;
  2575  }
  2576  
  2577  // SyncOperationResource contains resources to sync.
  2578  message SyncOperationResource {
  2579    optional string group = 1;
  2580  
  2581    optional string kind = 2;
  2582  
  2583    optional string name = 3;
  2584  
  2585    optional string namespace = 4;
  2586  }
  2587  
  2588  // SyncOperationResult represent result of sync operation
  2589  message SyncOperationResult {
  2590    // Resources contains a list of sync result items for each individual resource in a sync operation
  2591    repeated ResourceResult resources = 1;
  2592  
  2593    // Revision holds the revision this sync operation was performed to
  2594    optional string revision = 2;
  2595  
  2596    // Source records the application source information of the sync, used for comparing auto-sync
  2597    optional ApplicationSource source = 3;
  2598  
  2599    // Source records the application source information of the sync, used for comparing auto-sync
  2600    repeated ApplicationSource sources = 4;
  2601  
  2602    // Revisions holds the revision this sync operation was performed for respective indexed source in sources field
  2603    repeated string revisions = 5;
  2604  
  2605    // ManagedNamespaceMetadata contains the current sync state of managed namespace metadata
  2606    optional ManagedNamespaceMetadata managedNamespaceMetadata = 6;
  2607  }
  2608  
  2609  // SyncPolicy controls when a sync will be performed in response to updates in git
  2610  message SyncPolicy {
  2611    // Automated will keep an application synced to the target revision
  2612    optional SyncPolicyAutomated automated = 1;
  2613  
  2614    // Options allow you to specify whole app sync-options
  2615    repeated string syncOptions = 2;
  2616  
  2617    // Retry controls failed sync retry behavior
  2618    optional RetryStrategy retry = 3;
  2619  
  2620    // ManagedNamespaceMetadata controls metadata in the given namespace (if CreateNamespace=true)
  2621    optional ManagedNamespaceMetadata managedNamespaceMetadata = 4;
  2622  }
  2623  
  2624  // SyncPolicyAutomated controls the behavior of an automated sync
  2625  message SyncPolicyAutomated {
  2626    // Prune specifies whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false)
  2627    optional bool prune = 1;
  2628  
  2629    // SelfHeal specifies whether to revert resources back to their desired state upon modification in the cluster (default: false)
  2630    optional bool selfHeal = 2;
  2631  
  2632    // AllowEmpty allows apps have zero live resources (default: false)
  2633    optional bool allowEmpty = 3;
  2634  
  2635    // Enable allows apps to explicitly control automated sync
  2636    optional bool enabled = 4;
  2637  }
  2638  
  2639  // SyncSource specifies a location from which hydrated manifests may be synced. RepoURL is assumed based on the
  2640  // associated DrySource config in the SourceHydrator.
  2641  message SyncSource {
  2642    // TargetBranch is the branch from which hydrated manifests will be synced.
  2643    // If HydrateTo is not set, this is also the branch to which hydrated manifests are committed.
  2644    optional string targetBranch = 1;
  2645  
  2646    // Path is a directory path within the git repository where hydrated manifests should be committed to and synced
  2647    // from. The Path should never point to the root of the repo. If hydrateTo is set, this is just the path from which
  2648    // hydrated manifests will be synced.
  2649    //
  2650    // +kubebuilder:validation:Required
  2651    // +kubebuilder:validation:MinLength=1
  2652    // +kubebuilder:validation:Pattern=`^.{2,}|[^./]$`
  2653    optional string path = 2;
  2654  }
  2655  
  2656  // SyncStatus contains information about the currently observed live and desired states of an application
  2657  message SyncStatus {
  2658    // Status is the sync state of the comparison
  2659    optional string status = 1;
  2660  
  2661    // ComparedTo contains information about what has been compared
  2662    optional ComparedTo comparedTo = 2;
  2663  
  2664    // Revision contains information about the revision the comparison has been performed to
  2665    optional string revision = 3;
  2666  
  2667    // Revisions contains information about the revisions of multiple sources the comparison has been performed to
  2668    repeated string revisions = 4;
  2669  }
  2670  
  2671  // SyncStrategy controls the manner in which a sync is performed
  2672  message SyncStrategy {
  2673    // Apply will perform a `kubectl apply` to perform the sync.
  2674    optional SyncStrategyApply apply = 1;
  2675  
  2676    // Hook will submit any referenced resources to perform the sync. This is the default strategy
  2677    optional SyncStrategyHook hook = 2;
  2678  }
  2679  
  2680  // SyncStrategyApply uses `kubectl apply` to perform the apply
  2681  message SyncStrategyApply {
  2682    // Force indicates whether or not to supply the --force flag to `kubectl apply`.
  2683    // The --force flag deletes and re-create the resource, when PATCH encounters conflict and has
  2684    // retried for 5 times.
  2685    optional bool force = 1;
  2686  }
  2687  
  2688  // SyncStrategyHook will perform a sync using hooks annotations.
  2689  // If no hook annotation is specified falls back to `kubectl apply`.
  2690  message SyncStrategyHook {
  2691    // Embed SyncStrategyApply type to inherit any `apply` options
  2692    // +optional
  2693    optional SyncStrategyApply syncStrategyApply = 1;
  2694  }
  2695  
  2696  // SyncWindow contains the kind, time, duration and attributes that are used to assign the syncWindows to apps
  2697  message SyncWindow {
  2698    // Kind defines if the window allows or blocks syncs
  2699    optional string kind = 1;
  2700  
  2701    // Schedule is the time the window will begin, specified in cron format
  2702    optional string schedule = 2;
  2703  
  2704    // Duration is the amount of time the sync window will be open
  2705    optional string duration = 3;
  2706  
  2707    // Applications contains a list of applications that the window will apply to
  2708    repeated string applications = 4;
  2709  
  2710    // Namespaces contains a list of namespaces that the window will apply to
  2711    repeated string namespaces = 5;
  2712  
  2713    // Clusters contains a list of clusters that the window will apply to
  2714    repeated string clusters = 6;
  2715  
  2716    // ManualSync enables manual syncs when they would otherwise be blocked
  2717    optional bool manualSync = 7;
  2718  
  2719    // TimeZone of the sync that will be applied to the schedule
  2720    optional string timeZone = 8;
  2721  
  2722    // UseAndOperator use AND operator for matching applications, namespaces and clusters instead of the default OR operator
  2723    optional bool andOperator = 9;
  2724  
  2725    // Description of the sync that will be applied to the schedule, can be used to add any information such as a ticket number for example
  2726    optional string description = 10;
  2727  }
  2728  
  2729  // TLSClientConfig contains settings to enable transport layer security
  2730  message TLSClientConfig {
  2731    // Insecure specifies that the server should be accessed without verifying the TLS certificate. For testing only.
  2732    optional bool insecure = 1;
  2733  
  2734    // ServerName is passed to the server for SNI and is used in the client to check server
  2735    // certificates against. If ServerName is empty, the hostname used to contact the
  2736    // server is used.
  2737    optional string serverName = 2;
  2738  
  2739    // CertData holds PEM-encoded bytes (typically read from a client certificate file).
  2740    // CertData takes precedence over CertFile
  2741    optional bytes certData = 3;
  2742  
  2743    // KeyData holds PEM-encoded bytes (typically read from a client certificate key file).
  2744    // KeyData takes precedence over KeyFile
  2745    optional bytes keyData = 4;
  2746  
  2747    // CAData holds PEM-encoded bytes (typically read from a root certificates bundle).
  2748    // CAData takes precedence over CAFile
  2749    optional bytes caData = 5;
  2750  }
  2751  
  2752  message TagFilter {
  2753    optional string key = 1;
  2754  
  2755    optional string value = 2;
  2756  }
  2757