123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- // Copyright 2021 Google LLC
- //
- // 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.resourcesettings.v1;
- import "google/api/annotations.proto";
- import "google/api/client.proto";
- import "google/api/field_behavior.proto";
- import "google/api/resource.proto";
- option cc_enable_arenas = true;
- option go_package = "google.golang.org/genproto/googleapis/cloud/resourcesettings/v1;resourcesettings";
- option java_multiple_files = true;
- option java_outer_classname = "ResourceSettingsProto";
- option java_package = "com.google.cloud.resourcesettings.v1";
- // Client library namespace
- option csharp_namespace = "Google.Cloud.ResourceSettings.V1";
- option php_namespace = "Google\\Cloud\\ResourceSettings\\V1";
- option ruby_package = "Google::Cloud::ResourceSettings::V1";
- // An interface to interact with resource settings and setting values throughout
- // the resource hierarchy.
- //
- // Services may surface a number of settings for users to control how their
- // resources behave. Values of settings applied on a given Cloud resource are
- // evaluated hierarchically and inherited by all descendants of that resource.
- //
- // For all requests, returns a `google.rpc.Status` with
- // `google.rpc.Code.PERMISSION_DENIED` if the IAM check fails or the `parent`
- // resource is not in a Cloud Organization.
- // For all requests, returns a `google.rpc.Status` with
- // `google.rpc.Code.INVALID_ARGUMENT` if the request is malformed.
- service ResourceSettingsService {
- option (google.api.default_host) = "resourcesettings.googleapis.com";
- option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
- // Lists all the settings that are available on the Cloud resource `parent`.
- rpc ListSettings(ListSettingsRequest) returns (ListSettingsResponse) {
- option (google.api.http) = {
- get: "/v1/{parent=organizations/*}/settings"
- additional_bindings {
- get: "/v1/{parent=folders/*}/settings"
- }
- additional_bindings {
- get: "/v1/{parent=projects/*}/settings"
- }
- };
- option (google.api.method_signature) = "parent";
- }
- // Gets a setting.
- //
- // Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the
- // setting does not exist.
- rpc GetSetting(GetSettingRequest) returns (Setting) {
- option (google.api.http) = {
- get: "/v1/{name=organizations/*/settings/*}"
- additional_bindings {
- get: "/v1/{name=folders/*/settings/*}"
- }
- additional_bindings {
- get: "/v1/{name=projects/*/settings/*}"
- }
- };
- option (google.api.method_signature) = "name";
- }
- // Updates a setting.
- //
- // Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the
- // setting does not exist.
- // Returns a `google.rpc.Status` with `google.rpc.Code.FAILED_PRECONDITION` if
- // the setting is flagged as read only.
- // Returns a `google.rpc.Status` with `google.rpc.Code.ABORTED` if the etag
- // supplied in the request does not match the persisted etag of the setting
- // value.
- //
- // On success, the response will contain only `name`, `local_value` and
- // `etag`. The `metadata` and `effective_value` cannot be updated through
- // this API.
- //
- // Note: the supplied setting will perform a full overwrite of the
- // `local_value` field.
- rpc UpdateSetting(UpdateSettingRequest) returns (Setting) {
- option (google.api.http) = {
- patch: "/v1/{setting.name=organizations/*/settings/*}"
- body: "setting"
- additional_bindings {
- patch: "/v1/{setting.name=folders/*/settings/*}"
- body: "setting"
- }
- additional_bindings {
- patch: "/v1/{setting.name=projects/*/settings/*}"
- body: "setting"
- }
- };
- }
- }
- // The schema for settings.
- message Setting {
- option (google.api.resource) = {
- type: "resourcesettings.googleapis.com/Setting"
- pattern: "projects/{project_number}/settings/{setting_name}"
- pattern: "folders/{folder}/settings/{setting_name}"
- pattern: "organizations/{organization}/settings/{setting_name}"
- };
- // The resource name of the setting. Must be in one of the following forms:
- //
- // * `projects/{project_number}/settings/{setting_name}`
- // * `folders/{folder_id}/settings/{setting_name}`
- // * `organizations/{organization_id}/settings/{setting_name}`
- //
- // For example, "/projects/123/settings/gcp-enableMyFeature"
- string name = 1;
- // Output only. Metadata about a setting which is not editable by the end user.
- SettingMetadata metadata = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
- // The configured value of the setting at the given parent resource (ignoring
- // the resource hierarchy). The data type of [Value][google.cloud.resourcesettings.v1.Value] must always be
- // consistent with the data type defined in [Setting.metadata][google.cloud.resourcesettings.v1.Setting.metadata].
- Value local_value = 8;
- // Output only. The computed effective value of the setting at the given parent resource
- // (based on the resource hierarchy).
- //
- // The effective value evaluates to one of the following options in the given
- // order (the next option is used if the previous one does not exist):
- //
- // 1. the local setting value on the given resource: [Setting.local_value][google.cloud.resourcesettings.v1.Setting.local_value]
- // 2. if one of the given resource's ancestors have a local setting value,
- // the local value at the nearest such ancestor
- // 3. the setting's default value: [SettingMetadata.default_value][google.cloud.resourcesettings.v1.SettingMetadata.default_value]
- // 4. an empty value (defined as a `Value` with all fields unset)
- //
- // The data type of [Value][google.cloud.resourcesettings.v1.Value] must always be
- // consistent with the data type defined in [Setting.metadata][google.cloud.resourcesettings.v1.Setting.metadata].
- Value effective_value = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
- // A fingerprint used for optimistic concurrency. See
- // [UpdateSetting][google.cloud.resourcesettings.v1.ResourceSettingsService.UpdateSetting] for more
- // details.
- string etag = 10;
- }
- // Metadata about a setting which is not editable by the end user.
- message SettingMetadata {
- // The data type for setting values of this setting. See [Value][google.cloud.resourcesettings.v1.Value] for more
- // details on the available data types.
- enum DataType {
- // Unspecified data type.
- DATA_TYPE_UNSPECIFIED = 0;
- // A boolean setting.
- BOOLEAN = 1;
- // A string setting.
- STRING = 2;
- // A string set setting.
- STRING_SET = 3;
- // A Enum setting
- ENUM_VALUE = 4;
- }
- // The human readable name for this setting.
- string display_name = 1;
- // A detailed description of what this setting does.
- string description = 2;
- // A flag indicating that values of this setting cannot be modified (see
- // documentation of the specific setting for updates and reasons).
- bool read_only = 3;
- // The data type for this setting.
- DataType data_type = 4;
- // The value provided by [Setting.effective_value][google.cloud.resourcesettings.v1.Setting.effective_value] if no setting value is
- // explicitly set.
- //
- // Note: not all settings have a default value.
- Value default_value = 5;
- }
- // The data in a setting value.
- message Value {
- // A string set value that can hold a set of strings. The maximum length of
- // each string is 200 characters and there can be a maximum of 50 strings in
- // the string set.
- message StringSet {
- // The strings in the set
- repeated string values = 1;
- }
- // A enum value that can hold any enum type setting values.
- // Each enum type is represented by a number, this representation
- // is stored in the definitions.
- message EnumValue {
- // The value of this enum
- string value = 1;
- }
- // Selects the data type and associated value.
- oneof value {
- // Defines this value as being a boolean value.
- bool boolean_value = 1;
- // Defines this value as being a string value.
- string string_value = 2;
- // Defines this value as being a StringSet.
- StringSet string_set_value = 3;
- // Defines this value as being a Enum.
- EnumValue enum_value = 4;
- }
- }
- // The request for ListSettings.
- message ListSettingsRequest {
- // Required. The Cloud resource that parents the setting. Must be in one of the
- // following forms:
- //
- // * `projects/{project_number}`
- // * `projects/{project_id}`
- // * `folders/{folder_id}`
- // * `organizations/{organization_id}`
- string parent = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "*"
- }
- ];
- // Unused. The size of the page to be returned.
- int32 page_size = 2;
- // Unused. A page token used to retrieve the next page.
- string page_token = 3;
- // The SettingView for this request.
- SettingView view = 4;
- }
- // The response from ListSettings.
- message ListSettingsResponse {
- // A list of settings that are available at the specified Cloud resource.
- repeated Setting settings = 1;
- // Unused. A page token used to retrieve the next page.
- string next_page_token = 2;
- }
- // The request for GetSetting.
- message GetSettingRequest {
- // Required. The name of the setting to get. See [Setting][google.cloud.resourcesettings.v1.Setting] for naming
- // requirements.
- string name = 1 [
- (google.api.field_behavior) = REQUIRED,
- (google.api.resource_reference) = {
- type: "resourcesettings.googleapis.com/Setting"
- }
- ];
- // The SettingView for this request.
- SettingView view = 2;
- }
- // The request for UpdateSetting.
- message UpdateSettingRequest {
- // Required. The setting to update. See [Setting][google.cloud.resourcesettings.v1.Setting] for field requirements.
- Setting setting = 1 [(google.api.field_behavior) = REQUIRED];
- }
- // View options for Settings.
- enum SettingView {
- // The default / unset value.
- // The API will default to the SETTING_VIEW_BASIC view.
- SETTING_VIEW_UNSPECIFIED = 0;
- // Include [Setting.metadata][google.cloud.resourcesettings.v1.Setting.metadata], but nothing else.
- // This is the default value (for both ListSettings and GetSetting).
- SETTING_VIEW_BASIC = 1;
- // Include [Setting.effective_value][google.cloud.resourcesettings.v1.Setting.effective_value], but nothing else.
- SETTING_VIEW_EFFECTIVE_VALUE = 2;
- // Include [Setting.local_value][google.cloud.resourcesettings.v1.Setting.local_value], but nothing else.
- SETTING_VIEW_LOCAL_VALUE = 3;
- }
|