| // Copyright 2017 Google Inc. | |
| // | |
| // Licensed under the Apache License, Version 2.0 (the "License"); | |
| // you may not use this file except in compliance with the License. | |
| // You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| syntax = "proto3"; | |
| package google.cloud.runtimeconfig.v1beta1; | |
| import "google/api/annotations.proto"; | |
| import "google/cloud/runtimeconfig/v1beta1/resources.proto"; | |
| import "google/longrunning/operations.proto"; | |
| import "google/protobuf/empty.proto"; | |
| import "google/protobuf/timestamp.proto"; | |
| option csharp_namespace = "Google.Cloud.RuntimeConfig.V1Beta1"; | |
| option go_package = "google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1;runtimeconfig"; | |
| option java_multiple_files = true; | |
| option java_package = "com.google.cloud.runtimeconfig.v1beta1"; | |
| // RuntimeConfig API represents configuration objects and operations on those | |
| // configuration objects. | |
| // RuntimeConfig objects consist of Variables logically grouped in the those | |
| // objects. | |
| // Variables are simple key-value pairs. Variables can be watched for changes or | |
| // deletions. Variable key can be hieararchical, e.g. ports/serving_port, | |
| // ports/monitoring_port, etc. Variable names can be hierarchical. No variable | |
| // name can be prefix of another. | |
| // Config objects represent logical containers for variables, e.g. flags, | |
| // passwords, etc. | |
| service RuntimeConfigManager { | |
| // Lists all the RuntimeConfig resources within project. | |
| rpc ListConfigs(ListConfigsRequest) returns (ListConfigsResponse) { | |
| option (google.api.http) = { get: "/v1beta1/{parent=projects/*}/configs" }; | |
| } | |
| // Gets information about a RuntimeConfig resource. | |
| rpc GetConfig(GetConfigRequest) returns (RuntimeConfig) { | |
| option (google.api.http) = { get: "/v1beta1/{name=projects/*/configs/*}" }; | |
| } | |
| // Creates a new RuntimeConfig resource. The configuration name must be | |
| // unique within project. | |
| rpc CreateConfig(CreateConfigRequest) returns (RuntimeConfig) { | |
| option (google.api.http) = { post: "/v1beta1/{parent=projects/*}/configs" body: "config" }; | |
| } | |
| // Updates a RuntimeConfig resource. The configuration must exist beforehand. | |
| rpc UpdateConfig(UpdateConfigRequest) returns (RuntimeConfig) { | |
| option (google.api.http) = { put: "/v1beta1/{name=projects/*/configs/*}" body: "config" }; | |
| } | |
| // Deletes a RuntimeConfig resource. | |
| rpc DeleteConfig(DeleteConfigRequest) returns (google.protobuf.Empty) { | |
| option (google.api.http) = { delete: "/v1beta1/{name=projects/*/configs/*}" }; | |
| } | |
| // Lists variables within given a configuration, matching any provided filters. | |
| // This only lists variable names, not the values, unless `return_values` is | |
| // true, in which case only variables that user has IAM permission to | |
| // GetVariable will be returned. | |
| rpc ListVariables(ListVariablesRequest) returns (ListVariablesResponse) { | |
| option (google.api.http) = { get: "/v1beta1/{parent=projects/*/configs/*}/variables" }; | |
| } | |
| // Gets information about a single variable. | |
| rpc GetVariable(GetVariableRequest) returns (Variable) { | |
| option (google.api.http) = { get: "/v1beta1/{name=projects/*/configs/*/variables/**}" }; | |
| } | |
| // Watches a specific variable and waits for a change in the variable's value. | |
| // When there is a change, this method returns the new value or times out. | |
| // | |
| // If a variable is deleted while being watched, the `variableState` state is | |
| // set to `DELETED` and the method returns the last known variable `value`. | |
| // | |
| // If you set the deadline for watching to a larger value than internal timeout | |
| // (60 seconds), the current variable value is returned and the `variableState` | |
| // will be `VARIABLE_STATE_UNSPECIFIED`. | |
| // | |
| // To learn more about creating a watcher, read the | |
| // [Watching a Variable for Changes](/deployment-manager/runtime-configurator/watching-a-variable) | |
| // documentation. | |
| rpc WatchVariable(WatchVariableRequest) returns (Variable) { | |
| option (google.api.http) = { post: "/v1beta1/{name=projects/*/configs/*/variables/**}:watch" body: "*" }; | |
| } | |
| // Creates a variable within the given configuration. You cannot create | |
| // a variable with a name that is a prefix of an existing variable name, or a | |
| // name that has an existing variable name as a prefix. | |
| // | |
| // To learn more about creating a variable, read the | |
| // [Setting and Getting Data](/deployment-manager/runtime-configurator/set-and-get-variables) | |
| // documentation. | |
| rpc CreateVariable(CreateVariableRequest) returns (Variable) { | |
| option (google.api.http) = { post: "/v1beta1/{parent=projects/*/configs/*}/variables" body: "variable" }; | |
| } | |
| // Updates an existing variable with a new value. | |
| rpc UpdateVariable(UpdateVariableRequest) returns (Variable) { | |
| option (google.api.http) = { put: "/v1beta1/{name=projects/*/configs/*/variables/**}" body: "variable" }; | |
| } | |
| // Deletes a variable or multiple variables. | |
| // | |
| // If you specify a variable name, then that variable is deleted. If you | |
| // specify a prefix and `recursive` is true, then all variables with that | |
| // prefix are deleted. You must set a `recursive` to true if you delete | |
| // variables by prefix. | |
| rpc DeleteVariable(DeleteVariableRequest) returns (google.protobuf.Empty) { | |
| option (google.api.http) = { delete: "/v1beta1/{name=projects/*/configs/*/variables/**}" }; | |
| } | |
| // List waiters within the given configuration. | |
| rpc ListWaiters(ListWaitersRequest) returns (ListWaitersResponse) { | |
| option (google.api.http) = { get: "/v1beta1/{parent=projects/*/configs/*}/waiters" }; | |
| } | |
| // Gets information about a single waiter. | |
| rpc GetWaiter(GetWaiterRequest) returns (Waiter) { | |
| option (google.api.http) = { get: "/v1beta1/{name=projects/*/configs/*/waiters/*}" }; | |
| } | |
| // Creates a Waiter resource. This operation returns a long-running Operation | |
| // resource which can be polled for completion. However, a waiter with the | |
| // given name will exist (and can be retrieved) prior to the operation | |
| // completing. If the operation fails, the failed Waiter resource will | |
| // still exist and must be deleted prior to subsequent creation attempts. | |
| rpc CreateWaiter(CreateWaiterRequest) returns (google.longrunning.Operation) { | |
| option (google.api.http) = { post: "/v1beta1/{parent=projects/*/configs/*}/waiters" body: "waiter" }; | |
| } | |
| // Deletes the waiter with the specified name. | |
| rpc DeleteWaiter(DeleteWaiterRequest) returns (google.protobuf.Empty) { | |
| option (google.api.http) = { delete: "/v1beta1/{name=projects/*/configs/*/waiters/*}" }; | |
| } | |
| } | |
| // Request for the `ListConfigs()` method. | |
| message ListConfigsRequest { | |
| // The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848) | |
| // for this request, in the format `projects/[PROJECT_ID]`. | |
| string parent = 1; | |
| // Specifies the number of results to return per page. If there are fewer | |
| // elements than the specified number, returns all elements. | |
| int32 page_size = 2; | |
| // Specifies a page token to use. Set `pageToken` to a `nextPageToken` | |
| // returned by a previous list request to get the next page of results. | |
| string page_token = 3; | |
| } | |
| // `ListConfigs()` returns the following response. The order of returned | |
| // objects is arbitrary; that is, it is not ordered in any particular way. | |
| message ListConfigsResponse { | |
| // A list of the configurations in the project. The order of returned | |
| // objects is arbitrary; that is, it is not ordered in any particular way. | |
| repeated RuntimeConfig configs = 1; | |
| // This token allows you to get the next page of results for list requests. | |
| // If the number of results is larger than `pageSize`, use the `nextPageToken` | |
| // as a value for the query parameter `pageToken` in the next list request. | |
| // Subsequent list requests will have their own `nextPageToken` to continue | |
| // paging through the results | |
| string next_page_token = 2; | |
| } | |
| // Gets a RuntimeConfig resource. | |
| message GetConfigRequest { | |
| // The name of the RuntimeConfig resource to retrieve, in the format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` | |
| string name = 2; | |
| } | |
| // Creates a RuntimeConfig resource. | |
| message CreateConfigRequest { | |
| // The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848) | |
| // for this request, in the format `projects/[PROJECT_ID]`. | |
| string parent = 1; | |
| // The RuntimeConfig to create. | |
| RuntimeConfig config = 2; | |
| // An optional but recommended unique `request_id`. If the server | |
| // receives two `create()` requests with the same | |
| // `request_id`, then the second request will be ignored and the | |
| // first resource created and stored in the backend is returned. | |
| // Empty `request_id` fields are ignored. | |
| // | |
| // It is responsibility of the client to ensure uniqueness of the | |
| // `request_id` strings. | |
| // | |
| // `request_id` strings are limited to 64 characters. | |
| string request_id = 3; | |
| } | |
| // Request message for `UpdateConfig()` method. | |
| message UpdateConfigRequest { | |
| // The name of the RuntimeConfig resource to update, in the format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` | |
| string name = 1; | |
| // The config resource to update. | |
| RuntimeConfig config = 2; | |
| } | |
| // Request for the `DeleteConfig()` method. | |
| message DeleteConfigRequest { | |
| // The RuntimeConfig resource to delete, in the format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` | |
| string name = 1; | |
| } | |
| // Request for the `ListVariables()` method. | |
| message ListVariablesRequest { | |
| // The path to the RuntimeConfig resource for which you want to list variables. | |
| // The configuration must exist beforehand; the path must by in the format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` | |
| string parent = 1; | |
| // Filters variables by matching the specified filter. For example: | |
| // | |
| // `projects/example-project/config/[CONFIG_NAME]/variables/example-variable`. | |
| string filter = 2; | |
| // Specifies the number of results to return per page. If there are fewer | |
| // elements than the specified number, returns all elements. | |
| int32 page_size = 3; | |
| // Specifies a page token to use. Set `pageToken` to a `nextPageToken` | |
| // returned by a previous list request to get the next page of results. | |
| string page_token = 4; | |
| // The flag indicates whether the user wants to return values of variables. | |
| // If true, then only those variables that user has IAM GetVariable permission | |
| // will be returned along with their values. | |
| bool return_values = 5; | |
| } | |
| // Response for the `ListVariables()` method. | |
| message ListVariablesResponse { | |
| // A list of variables and their values. The order of returned variable | |
| // objects is arbitrary. | |
| repeated Variable variables = 1; | |
| // This token allows you to get the next page of results for list requests. | |
| // If the number of results is larger than `pageSize`, use the `nextPageToken` | |
| // as a value for the query parameter `pageToken` in the next list request. | |
| // Subsequent list requests will have their own `nextPageToken` to continue | |
| // paging through the results | |
| string next_page_token = 2; | |
| } | |
| // Request for the `WatchVariable()` method. | |
| message WatchVariableRequest { | |
| // The name of the variable to watch, in the format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` | |
| string name = 1; | |
| // If specified, checks the current timestamp of the variable and if the | |
| // current timestamp is newer than `newerThan` timestamp, the method returns | |
| // immediately. | |
| // | |
| // If not specified or the variable has an older timestamp, the watcher waits | |
| // for a the value to change before returning. | |
| google.protobuf.Timestamp newer_than = 4; | |
| } | |
| // Request for the `GetVariable()` method. | |
| message GetVariableRequest { | |
| // The name of the variable to return, in the format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIBLE_NAME]` | |
| string name = 1; | |
| } | |
| // Request for the `CreateVariable()` method. | |
| message CreateVariableRequest { | |
| // The path to the RutimeConfig resource that this variable should belong to. | |
| // The configuration must exist beforehand; the path must by in the format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` | |
| string parent = 1; | |
| // The variable to create. | |
| Variable variable = 2; | |
| // An optional but recommended unique `request_id`. If the server | |
| // receives two `create()` requests with the same | |
| // `request_id`, then the second request will be ignored and the | |
| // first resource created and stored in the backend is returned. | |
| // Empty `request_id` fields are ignored. | |
| // | |
| // It is responsibility of the client to ensure uniqueness of the | |
| // `request_id` strings. | |
| // | |
| // `request_id` strings are limited to 64 characters. | |
| string request_id = 3; | |
| } | |
| // Request for the `UpdateVariable()` method. | |
| message UpdateVariableRequest { | |
| // The name of the variable to update, in the format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]` | |
| string name = 1; | |
| // The variable to update. | |
| Variable variable = 2; | |
| } | |
| // Request for the `DeleteVariable()` method. | |
| message DeleteVariableRequest { | |
| // The name of the variable to delete, in the format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]` | |
| string name = 1; | |
| // Set to `true` to recursively delete multiple variables with the same | |
| // prefix. | |
| bool recursive = 2; | |
| } | |
| // Request for the `ListWaiters()` method. | |
| message ListWaitersRequest { | |
| // The path to the configuration for which you want to get a list of waiters. | |
| // The configuration must exist beforehand; the path must by in the format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` | |
| string parent = 1; | |
| // Specifies the number of results to return per page. If there are fewer | |
| // elements than the specified number, returns all elements. | |
| int32 page_size = 2; | |
| // Specifies a page token to use. Set `pageToken` to a `nextPageToken` | |
| // returned by a previous list request to get the next page of results. | |
| string page_token = 3; | |
| } | |
| // Response for the `ListWaiters()` method. | |
| // Order of returned waiter objects is arbitrary. | |
| message ListWaitersResponse { | |
| // Found waiters in the project. | |
| repeated Waiter waiters = 1; | |
| // This token allows you to get the next page of results for list requests. | |
| // If the number of results is larger than `pageSize`, use the `nextPageToken` | |
| // as a value for the query parameter `pageToken` in the next list request. | |
| // Subsequent list requests will have their own `nextPageToken` to continue | |
| // paging through the results | |
| string next_page_token = 2; | |
| } | |
| // Request for the `GetWaiter()` method. | |
| message GetWaiterRequest { | |
| // The fully-qualified name of the Waiter resource object to retrieve, in the | |
| // format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]` | |
| string name = 1; | |
| } | |
| // Request message for `CreateWaiter()` method. | |
| message CreateWaiterRequest { | |
| // The path to the configuration that will own the waiter. | |
| // The configuration must exist beforehand; the path must by in the format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`. | |
| string parent = 1; | |
| // The Waiter resource to create. | |
| Waiter waiter = 2; | |
| // An optional but recommended unique `request_id`. If the server | |
| // receives two `create()` requests with the same | |
| // `request_id`, then the second request will be ignored and the | |
| // first resource created and stored in the backend is returned. | |
| // Empty `request_id` fields are ignored. | |
| // | |
| // It is responsibility of the client to ensure uniqueness of the | |
| // `request_id` strings. | |
| // | |
| // `request_id` strings are limited to 64 characters. | |
| string request_id = 3; | |
| } | |
| // Request for the `DeleteWaiter()` method. | |
| message DeleteWaiterRequest { | |
| // The Waiter resource to delete, in the format: | |
| // | |
| // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]` | |
| string name = 1; | |
| } |