1// Copyright 2023 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15syntax = "proto3"; 16 17package google.api; 18 19option go_package = "google.golang.org/genproto/googleapis/api/configchange;configchange"; 20option java_multiple_files = true; 21option java_outer_classname = "ConfigChangeProto"; 22option java_package = "com.google.api"; 23option objc_class_prefix = "GAPI"; 24 25// Output generated from semantically comparing two versions of a service 26// configuration. 27// 28// Includes detailed information about a field that have changed with 29// applicable advice about potential consequences for the change, such as 30// backwards-incompatibility. 31message ConfigChange { 32 // Object hierarchy path to the change, with levels separated by a '.' 33 // character. For repeated fields, an applicable unique identifier field is 34 // used for the index (usually selector, name, or id). For maps, the term 35 // 'key' is used. If the field has no unique identifier, the numeric index 36 // is used. 37 // Examples: 38 // - visibility.rules[selector=="google.LibraryService.ListBooks"].restriction 39 // - quota.metric_rules[selector=="google"].metric_costs[key=="reads"].value 40 // - logging.producer_destinations[0] 41 string element = 1; 42 43 // Value of the changed object in the old Service configuration, 44 // in JSON format. This field will not be populated if ChangeType == ADDED. 45 string old_value = 2; 46 47 // Value of the changed object in the new Service configuration, 48 // in JSON format. This field will not be populated if ChangeType == REMOVED. 49 string new_value = 3; 50 51 // The type for this change, either ADDED, REMOVED, or MODIFIED. 52 ChangeType change_type = 4; 53 54 // Collection of advice provided for this change, useful for determining the 55 // possible impact of this change. 56 repeated Advice advices = 5; 57} 58 59// Generated advice about this change, used for providing more 60// information about how a change will affect the existing service. 61message Advice { 62 // Useful description for why this advice was applied and what actions should 63 // be taken to mitigate any implied risks. 64 string description = 2; 65} 66 67// Classifies set of possible modifications to an object in the service 68// configuration. 69enum ChangeType { 70 // No value was provided. 71 CHANGE_TYPE_UNSPECIFIED = 0; 72 73 // The changed object exists in the 'new' service configuration, but not 74 // in the 'old' service configuration. 75 ADDED = 1; 76 77 // The changed object exists in the 'old' service configuration, but not 78 // in the 'new' service configuration. 79 REMOVED = 2; 80 81 // The changed object exists in both service configurations, but its value 82 // is different. 83 MODIFIED = 3; 84} 85