syntax = "proto2"; option go_package = "github.com/argoproj/argo-cd/v2/pkg/apiclient/application"; // Application Service // // Application Service API performs CRUD actions against application resources package application; import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "k8s.io/api/core/v1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1/generated.proto"; import "github.com/argoproj/argo-cd/v2/reposerver/repository/repository.proto"; // ApplicationQuery is a query for application resources message ApplicationQuery { // the application's name optional string name = 1; // forces application reconciliation if set to true optional string refresh = 2; // the project names to restrict returned list applications repeated string project = 3 [(gogoproto.customname) = "Projects"]; // when specified with a watch call, shows changes that occur after that particular version of a resource. optional string resourceVersion = 4 [(gogoproto.nullable) = false]; // the selector to to restrict returned list to applications only with matched labels optional string selector = 5 [(gogoproto.nullable) = false]; // the repoURL to restrict returned list applications optional string repo = 6 [(gogoproto.nullable) = false]; } message NodeQuery { // the application's name optional string name = 1; } message RevisionMetadataQuery{ // the application's name required string name = 1; // the revision of the app required string revision = 2; } // ApplicationEventsQuery is a query for application resource events message ApplicationResourceEventsQuery { required string name = 1; required string resourceNamespace = 2 [(gogoproto.nullable) = false]; required string resourceName = 3 [(gogoproto.nullable) = false]; required string resourceUID = 4 [(gogoproto.nullable) = false]; } // ManifestQuery is a query for manifest resources message ApplicationManifestQuery { required string name = 1; optional string revision = 2 [(gogoproto.nullable) = false]; } message ApplicationResponse {} message ApplicationCreateRequest { required github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Application application = 1 [(gogoproto.nullable) = false]; optional bool upsert = 2; optional bool validate = 3; } message ApplicationUpdateRequest { required github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Application application = 1; optional bool validate = 2; } message ApplicationDeleteRequest { required string name = 1; optional bool cascade = 2; optional string propagationPolicy = 3; } message SyncOptions { repeated string items = 1; } // ApplicationSyncRequest is a request to apply the config state to live state message ApplicationSyncRequest { required string name = 1; optional string revision = 2 [(gogoproto.nullable) = false]; optional bool dryRun = 3 [(gogoproto.nullable) = false]; optional bool prune = 4 [(gogoproto.nullable) = false]; optional github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.SyncStrategy strategy = 5; repeated github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.SyncOperationResource resources = 7 [(gogoproto.nullable) = false]; repeated string manifests = 8; repeated github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Info infos = 9; optional github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.RetryStrategy retryStrategy = 10; optional SyncOptions syncOptions = 11; } // ApplicationUpdateSpecRequest is a request to update application spec message ApplicationUpdateSpecRequest { required string name = 1; required github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ApplicationSpec spec = 2 [(gogoproto.nullable) = false]; optional bool validate = 3; } // ApplicationPatchRequest is a request to patch an application message ApplicationPatchRequest { required string name = 1; required string patch = 2 [(gogoproto.nullable) = false]; required string patchType = 3 [(gogoproto.nullable) = false]; } message ApplicationRollbackRequest { required string name = 1; required int64 id = 2 [(gogoproto.customname) = "ID", (gogoproto.nullable) = false]; optional bool dryRun = 3 [(gogoproto.nullable) = false]; optional bool prune = 4 [(gogoproto.nullable) = false]; } message ApplicationResourceRequest { required string name = 1; required string namespace = 2 [(gogoproto.nullable) = false]; required string resourceName = 3 [(gogoproto.nullable) = false]; required string version = 4 [(gogoproto.nullable) = false]; required string group = 5 [(gogoproto.nullable) = false]; required string kind = 6 [(gogoproto.nullable) = false]; } message ApplicationResourcePatchRequest { required string name = 1; required string namespace = 2 [(gogoproto.nullable) = false]; required string resourceName = 3 [(gogoproto.nullable) = false]; required string version = 4 [(gogoproto.nullable) = false]; required string group = 5 [(gogoproto.nullable) = false]; required string kind = 6 [(gogoproto.nullable) = false]; required string patch = 7 [(gogoproto.nullable) = false]; required string patchType = 8 [(gogoproto.nullable) = false]; } message ApplicationResourceDeleteRequest { required string name = 1; required string namespace = 2 [(gogoproto.nullable) = false]; required string resourceName = 3 [(gogoproto.nullable) = false]; required string version = 4 [(gogoproto.nullable) = false]; required string group = 5 [(gogoproto.nullable) = false]; required string kind = 6 [(gogoproto.nullable) = false]; optional bool force = 7 [(gogoproto.nullable) = true]; optional bool orphan = 8 [(gogoproto.nullable) = true]; } message ResourceActionRunRequest { required string name = 1; required string namespace = 2 [(gogoproto.nullable) = false]; required string resourceName = 3 [(gogoproto.nullable) = false]; required string version = 4 [(gogoproto.nullable) = false]; required string group = 5 [(gogoproto.nullable) = false]; required string kind = 6 [(gogoproto.nullable) = false]; required string action = 7 [(gogoproto.nullable) = false]; } message ResourceActionsListResponse { repeated github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ResourceAction actions = 1 [(gogoproto.nullable) = false]; } message ApplicationResourceResponse { required string manifest = 1 [(gogoproto.nullable) = false]; } message ApplicationPodLogsQuery { required string name = 1; required string namespace = 2 [(gogoproto.nullable) = false]; optional string podName = 3; required string container = 4 [(gogoproto.nullable) = false]; required int64 sinceSeconds = 5 [(gogoproto.nullable) = false]; optional k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 6; required int64 tailLines = 7 [(gogoproto.nullable) = false]; required bool follow = 8 [(gogoproto.nullable) = false]; optional string untilTime = 9; optional string filter = 10; optional string kind = 11; optional string group = 12; optional string resourceName = 13 ; } message LogEntry { required string content = 1 [(gogoproto.nullable) = false]; // deprecated in favor of timeStampStr since meta.v1.Time don't support nano time required k8s.io.apimachinery.pkg.apis.meta.v1.Time timeStamp = 2 [(gogoproto.nullable) = false, deprecated=true]; required bool last = 3 [(gogoproto.nullable) = false]; required string timeStampStr = 4 [(gogoproto.nullable) = false]; required string podName = 5 [(gogoproto.nullable) = false]; } message OperationTerminateRequest { required string name = 1; } message ApplicationSyncWindowsQuery { required string name = 1; } message ApplicationSyncWindowsResponse { repeated ApplicationSyncWindow activeWindows = 1; repeated ApplicationSyncWindow assignedWindows = 2; required bool canSync = 3; } message ApplicationSyncWindow { required string kind = 1; required string schedule = 2; required string duration = 3; required bool manualSync = 4; } message OperationTerminateResponse { } message ResourcesQuery { required string applicationName = 1 [(gogoproto.nullable) = true]; optional string namespace = 2 [(gogoproto.nullable) = false]; optional string name = 3 [(gogoproto.nullable) = false]; optional string version = 4 [(gogoproto.nullable) = false]; optional string group = 5 [(gogoproto.nullable) = false]; optional string kind = 6 [(gogoproto.nullable) = false]; } message ManagedResourcesResponse { repeated github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ResourceDiff items = 1; } // ApplicationService service ApplicationService { // List returns list of applications rpc List(ApplicationQuery) returns (github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ApplicationList) { option (google.api.http).get = "/api/v1/applications"; } // ListResourceEvents returns a list of event resources rpc ListResourceEvents(ApplicationResourceEventsQuery) returns (k8s.io.api.core.v1.EventList) { option (google.api.http).get = "/api/v1/applications/{name}/events"; } // Watch returns stream of application change events rpc Watch(ApplicationQuery) returns (stream github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ApplicationWatchEvent) { option (google.api.http).get = "/api/v1/stream/applications"; } // Create creates an application rpc Create (ApplicationCreateRequest) returns (github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Application) { option (google.api.http) = { post: "/api/v1/applications" body: "application" }; } // Get returns an application by name rpc Get (ApplicationQuery) returns (github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Application) { option (google.api.http).get = "/api/v1/applications/{name}"; } // Get returns sync windows of the application rpc GetApplicationSyncWindows (ApplicationSyncWindowsQuery) returns (ApplicationSyncWindowsResponse) { option (google.api.http).get = "/api/v1/applications/{name}/syncwindows"; } // Get the meta-data (author, date, tags, message) for a specific revision of the application rpc RevisionMetadata (RevisionMetadataQuery) returns (github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.RevisionMetadata) { option (google.api.http).get = "/api/v1/applications/{name}/revisions/{revision}/metadata"; } // GetManifests returns application manifests rpc GetManifests (ApplicationManifestQuery) returns (repository.ManifestResponse) { option (google.api.http).get = "/api/v1/applications/{name}/manifests"; } // Update updates an application rpc Update(ApplicationUpdateRequest) returns (github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Application) { option (google.api.http) = { put: "/api/v1/applications/{application.metadata.name}" body: "application" }; } // UpdateSpec updates an application spec rpc UpdateSpec(ApplicationUpdateSpecRequest) returns (github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ApplicationSpec) { option (google.api.http) = { put: "/api/v1/applications/{name}/spec" body: "spec" }; } // Patch patch an application rpc Patch(ApplicationPatchRequest) returns (github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Application) { option (google.api.http) = { patch: "/api/v1/applications/{name}" body: "*" }; } // Delete deletes an application rpc Delete(ApplicationDeleteRequest) returns (ApplicationResponse) { option (google.api.http).delete = "/api/v1/applications/{name}"; } // Sync syncs an application to its target state rpc Sync(ApplicationSyncRequest) returns (github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Application) { option (google.api.http) = { post: "/api/v1/applications/{name}/sync" body: "*" }; } // ManagedResources returns list of managed resources rpc ManagedResources(ResourcesQuery) returns (ManagedResourcesResponse) { option (google.api.http).get = "/api/v1/applications/{applicationName}/managed-resources"; } // ResourceTree returns resource tree rpc ResourceTree(ResourcesQuery) returns (github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ApplicationTree) { option (google.api.http).get = "/api/v1/applications/{applicationName}/resource-tree"; } // Watch returns stream of application resource tree rpc WatchResourceTree(ResourcesQuery) returns (stream github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ApplicationTree) { option (google.api.http).get = "/api/v1/stream/applications/{applicationName}/resource-tree"; } // Rollback syncs an application to its target state rpc Rollback(ApplicationRollbackRequest) returns (github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Application) { option (google.api.http) = { post: "/api/v1/applications/{name}/rollback" body: "*" }; } // TerminateOperation terminates the currently running operation rpc TerminateOperation(OperationTerminateRequest) returns (OperationTerminateResponse) { option (google.api.http) = { delete: "/api/v1/applications/{name}/operation"; }; } // GetResource returns single application resource rpc GetResource(ApplicationResourceRequest) returns (ApplicationResourceResponse) { option (google.api.http).get = "/api/v1/applications/{name}/resource"; } // PatchResource patch single application resource rpc PatchResource(ApplicationResourcePatchRequest) returns (ApplicationResourceResponse) { option (google.api.http) = { post: "/api/v1/applications/{name}/resource" body: "patch" }; } // ListResourceActions returns list of resource actions rpc ListResourceActions(ApplicationResourceRequest) returns (ResourceActionsListResponse) { option (google.api.http).get = "/api/v1/applications/{name}/resource/actions"; } // RunResourceAction run resource action rpc RunResourceAction(ResourceActionRunRequest) returns (ApplicationResponse) { option (google.api.http) = { post: "/api/v1/applications/{name}/resource/actions" body: "action" }; } // DeleteResource deletes a single application resource rpc DeleteResource(ApplicationResourceDeleteRequest) returns (ApplicationResponse) { option (google.api.http).delete = "/api/v1/applications/{name}/resource"; } // PodLogs returns stream of log entries for the specified pod. Pod rpc PodLogs(ApplicationPodLogsQuery) returns (stream LogEntry) { option (google.api.http) = { get: "/api/v1/applications/{name}/pods/{podName}/logs" additional_bindings { get: "/api/v1/applications/{name}/logs" } }; } }