xref: /aosp_15_r20/external/googleapis/google/api/config_change.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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