syntax = "proto2"; option go_package = "github.com/argoproj/argo-cd/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/pkg/apis/application/v1alpha1/generated.proto"; import "github.com/argoproj/argo-cd/reposerver/repository/repository.proto"; // ApplicationQuery is a query for application resources message ApplicationQuery { optional string name = 1; optional string refresh = 2; repeated string project = 3 [(gogoproto.customname) = "Projects"]; optional string resourceVersion = 4 [(gogoproto.nullable) = false]; } 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.pkg.apis.application.v1alpha1.Application application = 1 [(gogoproto.nullable) = false]; optional bool upsert = 2; } message ApplicationUpdateRequest { required github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.Application application = 1; } message ApplicationDeleteRequest { required string name = 1; optional bool cascade = 2; } // 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.pkg.apis.application.v1alpha1.SyncStrategy strategy = 5; repeated github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.SyncOperationResource resources = 7 [(gogoproto.nullable) = false]; repeated string manifests = 8; } // ApplicationUpdateSpecRequest is a request to update application spec message ApplicationUpdateSpecRequest { required string name = 1; required github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.ApplicationSpec spec = 2 [(gogoproto.nullable) = false]; } // 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]; } 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.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]; required 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]; } message LogEntry { required string content = 1 [(gogoproto.nullable) = false]; required k8s.io.apimachinery.pkg.apis.meta.v1.Time timeStamp = 2 [(gogoproto.nullable) = false]; } message OperationTerminateRequest { required string name = 1; } message OperationTerminateResponse { } message ResourcesQuery { required string applicationName = 1 [(gogoproto.nullable) = true]; } message ManagedResourcesResponse { repeated github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.ResourceDiff items = 1; } // ApplicationService service ApplicationService { // List returns list of applications rpc List(ApplicationQuery) returns (github.com.argoproj.argo_cd.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.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.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.pkg.apis.application.v1alpha1.Application) { option (google.api.http).get = "/api/v1/applications/{name}"; } // Get the meta-data (author, date, tags, message) for a specific revision of the application rpc RevisionMetadata(RevisionMetadataQuery) returns (github.com.argoproj.argo_cd.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.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.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.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.pkg.apis.application.v1alpha1.Application) { option (google.api.http) = { post: "/api/v1/applications/{name}/sync" body: "*" }; } rpc ManagedResources(ResourcesQuery) returns (ManagedResourcesResponse) { option (google.api.http).get = "/api/v1/applications/{applicationName}/managed-resources"; } rpc ResourceTree(ResourcesQuery) returns (github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.ApplicationTree) { option (google.api.http).get = "/api/v1/applications/{applicationName}/resource-tree"; } // Rollback syncs an application to its target state rpc Rollback(ApplicationRollbackRequest) returns (github.com.argoproj.argo_cd.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" }; } rpc ListResourceActions(ApplicationResourceRequest) returns (ResourceActionsListResponse) { option (google.api.http).get = "/api/v1/applications/{name}/resource/actions"; } 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"; } }