1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.recommender.v1; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto"; 20*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/duration.proto"; 21*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/struct.proto"; 22*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto"; 23*d5c09012SAndroid Build Coastguard Workerimport "google/type/money.proto"; 24*d5c09012SAndroid Build Coastguard Worker 25*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.Recommender.V1"; 26*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/recommender/apiv1/recommenderpb;recommenderpb"; 27*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 28*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.recommender.v1"; 29*d5c09012SAndroid Build Coastguard Workeroption objc_class_prefix = "CREC"; 30*d5c09012SAndroid Build Coastguard Workeroption (google.api.resource_definition) = { 31*d5c09012SAndroid Build Coastguard Worker type: "recommender.googleapis.com/Recommender" 32*d5c09012SAndroid Build Coastguard Worker pattern: "projects/{project}/locations/{location}/recommenders/{recommender}" 33*d5c09012SAndroid Build Coastguard Worker pattern: "billingAccounts/{billing_account}/locations/{location}/recommenders/{recommender}" 34*d5c09012SAndroid Build Coastguard Worker pattern: "folders/{folder}/locations/{location}/recommenders/{recommender}" 35*d5c09012SAndroid Build Coastguard Worker pattern: "organizations/{organization}/locations/{location}/recommenders/{recommender}" 36*d5c09012SAndroid Build Coastguard Worker}; 37*d5c09012SAndroid Build Coastguard Worker 38*d5c09012SAndroid Build Coastguard Worker// A recommendation along with a suggested action. E.g., a rightsizing 39*d5c09012SAndroid Build Coastguard Worker// recommendation for an underutilized VM, IAM role recommendations, etc 40*d5c09012SAndroid Build Coastguard Workermessage Recommendation { 41*d5c09012SAndroid Build Coastguard Worker option (google.api.resource) = { 42*d5c09012SAndroid Build Coastguard Worker type: "recommender.googleapis.com/Recommendation" 43*d5c09012SAndroid Build Coastguard Worker pattern: "projects/{project}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}" 44*d5c09012SAndroid Build Coastguard Worker pattern: "billingAccounts/{billing_account}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}" 45*d5c09012SAndroid Build Coastguard Worker pattern: "folders/{folder}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}" 46*d5c09012SAndroid Build Coastguard Worker pattern: "organizations/{organization}/locations/{location}/recommenders/{recommender}/recommendations/{recommendation}" 47*d5c09012SAndroid Build Coastguard Worker }; 48*d5c09012SAndroid Build Coastguard Worker 49*d5c09012SAndroid Build Coastguard Worker // Recommendation priority levels. 50*d5c09012SAndroid Build Coastguard Worker enum Priority { 51*d5c09012SAndroid Build Coastguard Worker // Recommendation has unspecified priority. 52*d5c09012SAndroid Build Coastguard Worker PRIORITY_UNSPECIFIED = 0; 53*d5c09012SAndroid Build Coastguard Worker 54*d5c09012SAndroid Build Coastguard Worker // Recommendation has P4 priority (lowest priority). 55*d5c09012SAndroid Build Coastguard Worker P4 = 1; 56*d5c09012SAndroid Build Coastguard Worker 57*d5c09012SAndroid Build Coastguard Worker // Recommendation has P3 priority (second lowest priority). 58*d5c09012SAndroid Build Coastguard Worker P3 = 2; 59*d5c09012SAndroid Build Coastguard Worker 60*d5c09012SAndroid Build Coastguard Worker // Recommendation has P2 priority (second highest priority). 61*d5c09012SAndroid Build Coastguard Worker P2 = 3; 62*d5c09012SAndroid Build Coastguard Worker 63*d5c09012SAndroid Build Coastguard Worker // Recommendation has P1 priority (highest priority). 64*d5c09012SAndroid Build Coastguard Worker P1 = 4; 65*d5c09012SAndroid Build Coastguard Worker } 66*d5c09012SAndroid Build Coastguard Worker 67*d5c09012SAndroid Build Coastguard Worker // Reference to an associated insight. 68*d5c09012SAndroid Build Coastguard Worker message InsightReference { 69*d5c09012SAndroid Build Coastguard Worker // Insight resource name, e.g. 70*d5c09012SAndroid Build Coastguard Worker // projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]/insights/[INSIGHT_ID] 71*d5c09012SAndroid Build Coastguard Worker string insight = 1; 72*d5c09012SAndroid Build Coastguard Worker } 73*d5c09012SAndroid Build Coastguard Worker 74*d5c09012SAndroid Build Coastguard Worker // Name of recommendation. 75*d5c09012SAndroid Build Coastguard Worker string name = 1; 76*d5c09012SAndroid Build Coastguard Worker 77*d5c09012SAndroid Build Coastguard Worker // Free-form human readable summary in English. The maximum length is 500 78*d5c09012SAndroid Build Coastguard Worker // characters. 79*d5c09012SAndroid Build Coastguard Worker string description = 2; 80*d5c09012SAndroid Build Coastguard Worker 81*d5c09012SAndroid Build Coastguard Worker // Contains an identifier for a subtype of recommendations produced for the 82*d5c09012SAndroid Build Coastguard Worker // same recommender. Subtype is a function of content and impact, meaning a 83*d5c09012SAndroid Build Coastguard Worker // new subtype might be added when significant changes to `content` or 84*d5c09012SAndroid Build Coastguard Worker // `primary_impact.category` are introduced. See the Recommenders section 85*d5c09012SAndroid Build Coastguard Worker // to see a list of subtypes for a given Recommender. 86*d5c09012SAndroid Build Coastguard Worker // 87*d5c09012SAndroid Build Coastguard Worker // Examples: 88*d5c09012SAndroid Build Coastguard Worker // For recommender = "google.iam.policy.Recommender", 89*d5c09012SAndroid Build Coastguard Worker // recommender_subtype can be one of "REMOVE_ROLE"/"REPLACE_ROLE" 90*d5c09012SAndroid Build Coastguard Worker string recommender_subtype = 12; 91*d5c09012SAndroid Build Coastguard Worker 92*d5c09012SAndroid Build Coastguard Worker // Last time this recommendation was refreshed by the system that created it 93*d5c09012SAndroid Build Coastguard Worker // in the first place. 94*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp last_refresh_time = 4; 95*d5c09012SAndroid Build Coastguard Worker 96*d5c09012SAndroid Build Coastguard Worker // The primary impact that this recommendation can have while trying to 97*d5c09012SAndroid Build Coastguard Worker // optimize for one category. 98*d5c09012SAndroid Build Coastguard Worker Impact primary_impact = 5; 99*d5c09012SAndroid Build Coastguard Worker 100*d5c09012SAndroid Build Coastguard Worker // Optional set of additional impact that this recommendation may have when 101*d5c09012SAndroid Build Coastguard Worker // trying to optimize for the primary category. These may be positive 102*d5c09012SAndroid Build Coastguard Worker // or negative. 103*d5c09012SAndroid Build Coastguard Worker repeated Impact additional_impact = 6; 104*d5c09012SAndroid Build Coastguard Worker 105*d5c09012SAndroid Build Coastguard Worker // Recommendation's priority. 106*d5c09012SAndroid Build Coastguard Worker Priority priority = 17; 107*d5c09012SAndroid Build Coastguard Worker 108*d5c09012SAndroid Build Coastguard Worker // Content of the recommendation describing recommended changes to resources. 109*d5c09012SAndroid Build Coastguard Worker RecommendationContent content = 7; 110*d5c09012SAndroid Build Coastguard Worker 111*d5c09012SAndroid Build Coastguard Worker // Information for state. Contains state and metadata. 112*d5c09012SAndroid Build Coastguard Worker RecommendationStateInfo state_info = 10; 113*d5c09012SAndroid Build Coastguard Worker 114*d5c09012SAndroid Build Coastguard Worker // Fingerprint of the Recommendation. Provides optimistic locking when 115*d5c09012SAndroid Build Coastguard Worker // updating states. 116*d5c09012SAndroid Build Coastguard Worker string etag = 11; 117*d5c09012SAndroid Build Coastguard Worker 118*d5c09012SAndroid Build Coastguard Worker // Insights that led to this recommendation. 119*d5c09012SAndroid Build Coastguard Worker repeated InsightReference associated_insights = 14; 120*d5c09012SAndroid Build Coastguard Worker 121*d5c09012SAndroid Build Coastguard Worker // Corresponds to a mutually exclusive group ID within a recommender. 122*d5c09012SAndroid Build Coastguard Worker // A non-empty ID indicates that the recommendation belongs to a mutually 123*d5c09012SAndroid Build Coastguard Worker // exclusive group. This means that only one recommendation within the group 124*d5c09012SAndroid Build Coastguard Worker // is suggested to be applied. 125*d5c09012SAndroid Build Coastguard Worker string xor_group_id = 18; 126*d5c09012SAndroid Build Coastguard Worker} 127*d5c09012SAndroid Build Coastguard Worker 128*d5c09012SAndroid Build Coastguard Worker// Contains what resources are changing and how they are changing. 129*d5c09012SAndroid Build Coastguard Workermessage RecommendationContent { 130*d5c09012SAndroid Build Coastguard Worker // Operations to one or more Google Cloud resources grouped in such a way 131*d5c09012SAndroid Build Coastguard Worker // that, all operations within one group are expected to be performed 132*d5c09012SAndroid Build Coastguard Worker // atomically and in an order. 133*d5c09012SAndroid Build Coastguard Worker repeated OperationGroup operation_groups = 2; 134*d5c09012SAndroid Build Coastguard Worker 135*d5c09012SAndroid Build Coastguard Worker // Condensed overview information about the recommendation. 136*d5c09012SAndroid Build Coastguard Worker google.protobuf.Struct overview = 3; 137*d5c09012SAndroid Build Coastguard Worker} 138*d5c09012SAndroid Build Coastguard Worker 139*d5c09012SAndroid Build Coastguard Worker// Group of operations that need to be performed atomically. 140*d5c09012SAndroid Build Coastguard Workermessage OperationGroup { 141*d5c09012SAndroid Build Coastguard Worker // List of operations across one or more resources that belong to this group. 142*d5c09012SAndroid Build Coastguard Worker // Loosely based on RFC6902 and should be performed in the order they appear. 143*d5c09012SAndroid Build Coastguard Worker repeated Operation operations = 1; 144*d5c09012SAndroid Build Coastguard Worker} 145*d5c09012SAndroid Build Coastguard Worker 146*d5c09012SAndroid Build Coastguard Worker// Contains an operation for a resource loosely based on the JSON-PATCH format 147*d5c09012SAndroid Build Coastguard Worker// with support for: 148*d5c09012SAndroid Build Coastguard Worker// 149*d5c09012SAndroid Build Coastguard Worker// * Custom filters for describing partial array patch. 150*d5c09012SAndroid Build Coastguard Worker// * Extended path values for describing nested arrays. 151*d5c09012SAndroid Build Coastguard Worker// * Custom fields for describing the resource for which the operation is being 152*d5c09012SAndroid Build Coastguard Worker// described. 153*d5c09012SAndroid Build Coastguard Worker// * Allows extension to custom operations not natively supported by RFC6902. 154*d5c09012SAndroid Build Coastguard Worker// See https://tools.ietf.org/html/rfc6902 for details on the original RFC. 155*d5c09012SAndroid Build Coastguard Workermessage Operation { 156*d5c09012SAndroid Build Coastguard Worker // Type of this operation. Contains one of 'add', 'remove', 'replace', 'move', 157*d5c09012SAndroid Build Coastguard Worker // 'copy', 'test' and custom operations. This field is case-insensitive and 158*d5c09012SAndroid Build Coastguard Worker // always populated. 159*d5c09012SAndroid Build Coastguard Worker string action = 1; 160*d5c09012SAndroid Build Coastguard Worker 161*d5c09012SAndroid Build Coastguard Worker // Type of GCP resource being modified/tested. This field is always populated. 162*d5c09012SAndroid Build Coastguard Worker // Example: cloudresourcemanager.googleapis.com/Project, 163*d5c09012SAndroid Build Coastguard Worker // compute.googleapis.com/Instance 164*d5c09012SAndroid Build Coastguard Worker string resource_type = 2; 165*d5c09012SAndroid Build Coastguard Worker 166*d5c09012SAndroid Build Coastguard Worker // Contains the fully qualified resource name. This field is always populated. 167*d5c09012SAndroid Build Coastguard Worker // ex: //cloudresourcemanager.googleapis.com/projects/foo. 168*d5c09012SAndroid Build Coastguard Worker string resource = 3; 169*d5c09012SAndroid Build Coastguard Worker 170*d5c09012SAndroid Build Coastguard Worker // Path to the target field being operated on. If the operation is at the 171*d5c09012SAndroid Build Coastguard Worker // resource level, then path should be "/". This field is always populated. 172*d5c09012SAndroid Build Coastguard Worker string path = 4; 173*d5c09012SAndroid Build Coastguard Worker 174*d5c09012SAndroid Build Coastguard Worker // Can be set with action 'copy' to copy resource configuration across 175*d5c09012SAndroid Build Coastguard Worker // different resources of the same type. Example: A resource clone can be 176*d5c09012SAndroid Build Coastguard Worker // done via action = 'copy', path = "/", from = "/", 177*d5c09012SAndroid Build Coastguard Worker // source_resource = <source> and resource_name = <target>. 178*d5c09012SAndroid Build Coastguard Worker // This field is empty for all other values of `action`. 179*d5c09012SAndroid Build Coastguard Worker string source_resource = 5; 180*d5c09012SAndroid Build Coastguard Worker 181*d5c09012SAndroid Build Coastguard Worker // Can be set with action 'copy' or 'move' to indicate the source field within 182*d5c09012SAndroid Build Coastguard Worker // resource or source_resource, ignored if provided for other operation types. 183*d5c09012SAndroid Build Coastguard Worker string source_path = 6; 184*d5c09012SAndroid Build Coastguard Worker 185*d5c09012SAndroid Build Coastguard Worker // One of the fields in the following block will be set and intend to 186*d5c09012SAndroid Build Coastguard Worker // describe a value for 'path' field. 187*d5c09012SAndroid Build Coastguard Worker oneof path_value { 188*d5c09012SAndroid Build Coastguard Worker // Value for the `path` field. Will be set for actions:'add'/'replace'. 189*d5c09012SAndroid Build Coastguard Worker // Maybe set for action: 'test'. Either this or `value_matcher` will be set 190*d5c09012SAndroid Build Coastguard Worker // for 'test' operation. An exact match must be performed. 191*d5c09012SAndroid Build Coastguard Worker google.protobuf.Value value = 7; 192*d5c09012SAndroid Build Coastguard Worker 193*d5c09012SAndroid Build Coastguard Worker // Can be set for action 'test' for advanced matching for the value of 194*d5c09012SAndroid Build Coastguard Worker // 'path' field. Either this or `value` will be set for 'test' operation. 195*d5c09012SAndroid Build Coastguard Worker ValueMatcher value_matcher = 10; 196*d5c09012SAndroid Build Coastguard Worker } 197*d5c09012SAndroid Build Coastguard Worker 198*d5c09012SAndroid Build Coastguard Worker // Set of filters to apply if `path` refers to array elements or nested array 199*d5c09012SAndroid Build Coastguard Worker // elements in order to narrow down to a single unique element that is being 200*d5c09012SAndroid Build Coastguard Worker // tested/modified. 201*d5c09012SAndroid Build Coastguard Worker // This is intended to be an exact match per filter. To perform advanced 202*d5c09012SAndroid Build Coastguard Worker // matching, use path_value_matchers. 203*d5c09012SAndroid Build Coastguard Worker // 204*d5c09012SAndroid Build Coastguard Worker // * Example: 205*d5c09012SAndroid Build Coastguard Worker // ``` 206*d5c09012SAndroid Build Coastguard Worker // { 207*d5c09012SAndroid Build Coastguard Worker // "/versions/*/name" : "it-123" 208*d5c09012SAndroid Build Coastguard Worker // "/versions/*/targetSize/percent": 20 209*d5c09012SAndroid Build Coastguard Worker // } 210*d5c09012SAndroid Build Coastguard Worker // ``` 211*d5c09012SAndroid Build Coastguard Worker // * Example: 212*d5c09012SAndroid Build Coastguard Worker // ``` 213*d5c09012SAndroid Build Coastguard Worker // { 214*d5c09012SAndroid Build Coastguard Worker // "/bindings/*/role": "roles/owner" 215*d5c09012SAndroid Build Coastguard Worker // "/bindings/*/condition" : null 216*d5c09012SAndroid Build Coastguard Worker // } 217*d5c09012SAndroid Build Coastguard Worker // ``` 218*d5c09012SAndroid Build Coastguard Worker // * Example: 219*d5c09012SAndroid Build Coastguard Worker // ``` 220*d5c09012SAndroid Build Coastguard Worker // { 221*d5c09012SAndroid Build Coastguard Worker // "/bindings/*/role": "roles/owner" 222*d5c09012SAndroid Build Coastguard Worker // "/bindings/*/members/*" : ["[email protected]", "[email protected]"] 223*d5c09012SAndroid Build Coastguard Worker // } 224*d5c09012SAndroid Build Coastguard Worker // ``` 225*d5c09012SAndroid Build Coastguard Worker // When both path_filters and path_value_matchers are set, an implicit AND 226*d5c09012SAndroid Build Coastguard Worker // must be performed. 227*d5c09012SAndroid Build Coastguard Worker map<string, google.protobuf.Value> path_filters = 8; 228*d5c09012SAndroid Build Coastguard Worker 229*d5c09012SAndroid Build Coastguard Worker // Similar to path_filters, this contains set of filters to apply if `path` 230*d5c09012SAndroid Build Coastguard Worker // field refers to array elements. This is meant to support value matching 231*d5c09012SAndroid Build Coastguard Worker // beyond exact match. To perform exact match, use path_filters. 232*d5c09012SAndroid Build Coastguard Worker // When both path_filters and path_value_matchers are set, an implicit AND 233*d5c09012SAndroid Build Coastguard Worker // must be performed. 234*d5c09012SAndroid Build Coastguard Worker map<string, ValueMatcher> path_value_matchers = 11; 235*d5c09012SAndroid Build Coastguard Worker} 236*d5c09012SAndroid Build Coastguard Worker 237*d5c09012SAndroid Build Coastguard Worker// Contains various matching options for values for a GCP resource field. 238*d5c09012SAndroid Build Coastguard Workermessage ValueMatcher { 239*d5c09012SAndroid Build Coastguard Worker oneof match_variant { 240*d5c09012SAndroid Build Coastguard Worker // To be used for full regex matching. The regular expression is using the 241*d5c09012SAndroid Build Coastguard Worker // Google RE2 syntax (https://github.com/google/re2/wiki/Syntax), so to be 242*d5c09012SAndroid Build Coastguard Worker // used with RE2::FullMatch 243*d5c09012SAndroid Build Coastguard Worker string matches_pattern = 1; 244*d5c09012SAndroid Build Coastguard Worker } 245*d5c09012SAndroid Build Coastguard Worker} 246*d5c09012SAndroid Build Coastguard Worker 247*d5c09012SAndroid Build Coastguard Worker// Contains metadata about how much money a recommendation can save or incur. 248*d5c09012SAndroid Build Coastguard Workermessage CostProjection { 249*d5c09012SAndroid Build Coastguard Worker // An approximate projection on amount saved or amount incurred. Negative cost 250*d5c09012SAndroid Build Coastguard Worker // units indicate cost savings and positive cost units indicate increase. 251*d5c09012SAndroid Build Coastguard Worker // See google.type.Money documentation for positive/negative units. 252*d5c09012SAndroid Build Coastguard Worker // 253*d5c09012SAndroid Build Coastguard Worker // A user's permissions may affect whether the cost is computed using list 254*d5c09012SAndroid Build Coastguard Worker // prices or custom contract prices. 255*d5c09012SAndroid Build Coastguard Worker google.type.Money cost = 1; 256*d5c09012SAndroid Build Coastguard Worker 257*d5c09012SAndroid Build Coastguard Worker // Duration for which this cost applies. 258*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration duration = 2; 259*d5c09012SAndroid Build Coastguard Worker 260*d5c09012SAndroid Build Coastguard Worker // The approximate cost savings in the billing account's local currency. 261*d5c09012SAndroid Build Coastguard Worker google.type.Money cost_in_local_currency = 3; 262*d5c09012SAndroid Build Coastguard Worker} 263*d5c09012SAndroid Build Coastguard Worker 264*d5c09012SAndroid Build Coastguard Worker// Contains various ways of describing the impact on Security. 265*d5c09012SAndroid Build Coastguard Workermessage SecurityProjection { 266*d5c09012SAndroid Build Coastguard Worker // Additional security impact details that is provided by the recommender. 267*d5c09012SAndroid Build Coastguard Worker google.protobuf.Struct details = 2; 268*d5c09012SAndroid Build Coastguard Worker} 269*d5c09012SAndroid Build Coastguard Worker 270*d5c09012SAndroid Build Coastguard Worker// Contains metadata about how much sustainability a recommendation can save or 271*d5c09012SAndroid Build Coastguard Worker// incur. 272*d5c09012SAndroid Build Coastguard Workermessage SustainabilityProjection { 273*d5c09012SAndroid Build Coastguard Worker // Carbon Footprint generated in kg of CO2 equivalent. 274*d5c09012SAndroid Build Coastguard Worker // Chose kg_c_o2e so that the name renders correctly in camelCase (kgCO2e). 275*d5c09012SAndroid Build Coastguard Worker double kg_c_o2e = 1; 276*d5c09012SAndroid Build Coastguard Worker 277*d5c09012SAndroid Build Coastguard Worker // Duration for which this sustainability applies. 278*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration duration = 2; 279*d5c09012SAndroid Build Coastguard Worker} 280*d5c09012SAndroid Build Coastguard Worker 281*d5c09012SAndroid Build Coastguard Worker// Contains information on the impact of a reliability recommendation. 282*d5c09012SAndroid Build Coastguard Workermessage ReliabilityProjection { 283*d5c09012SAndroid Build Coastguard Worker // The risk associated with the reliability issue. 284*d5c09012SAndroid Build Coastguard Worker enum RiskType { 285*d5c09012SAndroid Build Coastguard Worker // Default unspecified risk. Don't use directly. 286*d5c09012SAndroid Build Coastguard Worker RISK_TYPE_UNSPECIFIED = 0; 287*d5c09012SAndroid Build Coastguard Worker 288*d5c09012SAndroid Build Coastguard Worker // Potential service downtime. 289*d5c09012SAndroid Build Coastguard Worker SERVICE_DISRUPTION = 1; 290*d5c09012SAndroid Build Coastguard Worker 291*d5c09012SAndroid Build Coastguard Worker // Potential data loss. 292*d5c09012SAndroid Build Coastguard Worker DATA_LOSS = 2; 293*d5c09012SAndroid Build Coastguard Worker 294*d5c09012SAndroid Build Coastguard Worker // Potential access denial. The service is still up but some or all clients 295*d5c09012SAndroid Build Coastguard Worker // can't access it. 296*d5c09012SAndroid Build Coastguard Worker ACCESS_DENY = 3; 297*d5c09012SAndroid Build Coastguard Worker } 298*d5c09012SAndroid Build Coastguard Worker 299*d5c09012SAndroid Build Coastguard Worker // Reliability risks mitigated by this recommendation. 300*d5c09012SAndroid Build Coastguard Worker repeated RiskType risks = 1; 301*d5c09012SAndroid Build Coastguard Worker 302*d5c09012SAndroid Build Coastguard Worker // Per-recommender projection. 303*d5c09012SAndroid Build Coastguard Worker google.protobuf.Struct details = 2; 304*d5c09012SAndroid Build Coastguard Worker} 305*d5c09012SAndroid Build Coastguard Worker 306*d5c09012SAndroid Build Coastguard Worker// Contains the impact a recommendation can have for a given category. 307*d5c09012SAndroid Build Coastguard Workermessage Impact { 308*d5c09012SAndroid Build Coastguard Worker // The category of the impact. 309*d5c09012SAndroid Build Coastguard Worker enum Category { 310*d5c09012SAndroid Build Coastguard Worker // Default unspecified category. Don't use directly. 311*d5c09012SAndroid Build Coastguard Worker CATEGORY_UNSPECIFIED = 0; 312*d5c09012SAndroid Build Coastguard Worker 313*d5c09012SAndroid Build Coastguard Worker // Indicates a potential increase or decrease in cost. 314*d5c09012SAndroid Build Coastguard Worker COST = 1; 315*d5c09012SAndroid Build Coastguard Worker 316*d5c09012SAndroid Build Coastguard Worker // Indicates a potential increase or decrease in security. 317*d5c09012SAndroid Build Coastguard Worker SECURITY = 2; 318*d5c09012SAndroid Build Coastguard Worker 319*d5c09012SAndroid Build Coastguard Worker // Indicates a potential increase or decrease in performance. 320*d5c09012SAndroid Build Coastguard Worker PERFORMANCE = 3; 321*d5c09012SAndroid Build Coastguard Worker 322*d5c09012SAndroid Build Coastguard Worker // Indicates a potential increase or decrease in manageability. 323*d5c09012SAndroid Build Coastguard Worker MANAGEABILITY = 4; 324*d5c09012SAndroid Build Coastguard Worker 325*d5c09012SAndroid Build Coastguard Worker // Indicates a potential increase or decrease in sustainability. 326*d5c09012SAndroid Build Coastguard Worker SUSTAINABILITY = 5; 327*d5c09012SAndroid Build Coastguard Worker 328*d5c09012SAndroid Build Coastguard Worker // Indicates a potential increase or decrease in reliability. 329*d5c09012SAndroid Build Coastguard Worker RELIABILITY = 6; 330*d5c09012SAndroid Build Coastguard Worker } 331*d5c09012SAndroid Build Coastguard Worker 332*d5c09012SAndroid Build Coastguard Worker // Category that is being targeted. 333*d5c09012SAndroid Build Coastguard Worker Category category = 1; 334*d5c09012SAndroid Build Coastguard Worker 335*d5c09012SAndroid Build Coastguard Worker // Contains projections (if any) for this category. 336*d5c09012SAndroid Build Coastguard Worker oneof projection { 337*d5c09012SAndroid Build Coastguard Worker // Use with CategoryType.COST 338*d5c09012SAndroid Build Coastguard Worker CostProjection cost_projection = 100; 339*d5c09012SAndroid Build Coastguard Worker 340*d5c09012SAndroid Build Coastguard Worker // Use with CategoryType.SECURITY 341*d5c09012SAndroid Build Coastguard Worker SecurityProjection security_projection = 101; 342*d5c09012SAndroid Build Coastguard Worker 343*d5c09012SAndroid Build Coastguard Worker // Use with CategoryType.SUSTAINABILITY 344*d5c09012SAndroid Build Coastguard Worker SustainabilityProjection sustainability_projection = 102; 345*d5c09012SAndroid Build Coastguard Worker 346*d5c09012SAndroid Build Coastguard Worker // Use with CategoryType.RELIABILITY 347*d5c09012SAndroid Build Coastguard Worker ReliabilityProjection reliability_projection = 103; 348*d5c09012SAndroid Build Coastguard Worker } 349*d5c09012SAndroid Build Coastguard Worker} 350*d5c09012SAndroid Build Coastguard Worker 351*d5c09012SAndroid Build Coastguard Worker// Information for state. Contains state and metadata. 352*d5c09012SAndroid Build Coastguard Workermessage RecommendationStateInfo { 353*d5c09012SAndroid Build Coastguard Worker // Represents Recommendation State. 354*d5c09012SAndroid Build Coastguard Worker enum State { 355*d5c09012SAndroid Build Coastguard Worker // Default state. Don't use directly. 356*d5c09012SAndroid Build Coastguard Worker STATE_UNSPECIFIED = 0; 357*d5c09012SAndroid Build Coastguard Worker 358*d5c09012SAndroid Build Coastguard Worker // Recommendation is active and can be applied. Recommendations content can 359*d5c09012SAndroid Build Coastguard Worker // be updated by Google. 360*d5c09012SAndroid Build Coastguard Worker // 361*d5c09012SAndroid Build Coastguard Worker // ACTIVE recommendations can be marked as CLAIMED, SUCCEEDED, or FAILED. 362*d5c09012SAndroid Build Coastguard Worker ACTIVE = 1; 363*d5c09012SAndroid Build Coastguard Worker 364*d5c09012SAndroid Build Coastguard Worker // Recommendation is in claimed state. Recommendations content is 365*d5c09012SAndroid Build Coastguard Worker // immutable and cannot be updated by Google. 366*d5c09012SAndroid Build Coastguard Worker // 367*d5c09012SAndroid Build Coastguard Worker // CLAIMED recommendations can be marked as CLAIMED, SUCCEEDED, or FAILED. 368*d5c09012SAndroid Build Coastguard Worker CLAIMED = 6; 369*d5c09012SAndroid Build Coastguard Worker 370*d5c09012SAndroid Build Coastguard Worker // Recommendation is in succeeded state. Recommendations content is 371*d5c09012SAndroid Build Coastguard Worker // immutable and cannot be updated by Google. 372*d5c09012SAndroid Build Coastguard Worker // 373*d5c09012SAndroid Build Coastguard Worker // SUCCEEDED recommendations can be marked as SUCCEEDED, or FAILED. 374*d5c09012SAndroid Build Coastguard Worker SUCCEEDED = 3; 375*d5c09012SAndroid Build Coastguard Worker 376*d5c09012SAndroid Build Coastguard Worker // Recommendation is in failed state. Recommendations content is immutable 377*d5c09012SAndroid Build Coastguard Worker // and cannot be updated by Google. 378*d5c09012SAndroid Build Coastguard Worker // 379*d5c09012SAndroid Build Coastguard Worker // FAILED recommendations can be marked as SUCCEEDED, or FAILED. 380*d5c09012SAndroid Build Coastguard Worker FAILED = 4; 381*d5c09012SAndroid Build Coastguard Worker 382*d5c09012SAndroid Build Coastguard Worker // Recommendation is in dismissed state. Recommendation content can be 383*d5c09012SAndroid Build Coastguard Worker // updated by Google. 384*d5c09012SAndroid Build Coastguard Worker // 385*d5c09012SAndroid Build Coastguard Worker // DISMISSED recommendations can be marked as ACTIVE. 386*d5c09012SAndroid Build Coastguard Worker DISMISSED = 5; 387*d5c09012SAndroid Build Coastguard Worker } 388*d5c09012SAndroid Build Coastguard Worker 389*d5c09012SAndroid Build Coastguard Worker // The state of the recommendation, Eg ACTIVE, SUCCEEDED, FAILED. 390*d5c09012SAndroid Build Coastguard Worker State state = 1; 391*d5c09012SAndroid Build Coastguard Worker 392*d5c09012SAndroid Build Coastguard Worker // A map of metadata for the state, provided by user or automations systems. 393*d5c09012SAndroid Build Coastguard Worker map<string, string> state_metadata = 2; 394*d5c09012SAndroid Build Coastguard Worker} 395