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