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 Worker 24*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.Recommender.V1"; 25*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/recommender/apiv1/recommenderpb;recommenderpb"; 26*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 27*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "InsightProto"; 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/InsightType" 32*d5c09012SAndroid Build Coastguard Worker pattern: "projects/{project}/locations/{location}/insightTypes/{insight_type}" 33*d5c09012SAndroid Build Coastguard Worker pattern: "billingAccounts/{billing_account}/locations/{location}/insightTypes/{insight_type}" 34*d5c09012SAndroid Build Coastguard Worker pattern: "folders/{folder}/locations/{location}/insightTypes/{insight_type}" 35*d5c09012SAndroid Build Coastguard Worker pattern: "organizations/{organization}/locations/{location}/insightTypes/{insight_type}" 36*d5c09012SAndroid Build Coastguard Worker}; 37*d5c09012SAndroid Build Coastguard Worker 38*d5c09012SAndroid Build Coastguard Worker// An insight along with the information used to derive the insight. The insight 39*d5c09012SAndroid Build Coastguard Worker// may have associated recommendations as well. 40*d5c09012SAndroid Build Coastguard Workermessage Insight { 41*d5c09012SAndroid Build Coastguard Worker option (google.api.resource) = { 42*d5c09012SAndroid Build Coastguard Worker type: "recommender.googleapis.com/Insight" 43*d5c09012SAndroid Build Coastguard Worker pattern: "projects/{project}/locations/{location}/insightTypes/{insight_type}/insights/{insight}" 44*d5c09012SAndroid Build Coastguard Worker pattern: "billingAccounts/{billing_account}/locations/{location}/insightTypes/{insight_type}/insights/{insight}" 45*d5c09012SAndroid Build Coastguard Worker pattern: "folders/{folder}/locations/{location}/insightTypes/{insight_type}/insights/{insight}" 46*d5c09012SAndroid Build Coastguard Worker pattern: "organizations/{organization}/locations/{location}/insightTypes/{insight_type}/insights/{insight}" 47*d5c09012SAndroid Build Coastguard Worker }; 48*d5c09012SAndroid Build Coastguard Worker 49*d5c09012SAndroid Build Coastguard Worker // Insight category. 50*d5c09012SAndroid Build Coastguard Worker enum Category { 51*d5c09012SAndroid Build Coastguard Worker // Unspecified category. 52*d5c09012SAndroid Build Coastguard Worker CATEGORY_UNSPECIFIED = 0; 53*d5c09012SAndroid Build Coastguard Worker 54*d5c09012SAndroid Build Coastguard Worker // The insight is related to cost. 55*d5c09012SAndroid Build Coastguard Worker COST = 1; 56*d5c09012SAndroid Build Coastguard Worker 57*d5c09012SAndroid Build Coastguard Worker // The insight is related to security. 58*d5c09012SAndroid Build Coastguard Worker SECURITY = 2; 59*d5c09012SAndroid Build Coastguard Worker 60*d5c09012SAndroid Build Coastguard Worker // The insight is related to performance. 61*d5c09012SAndroid Build Coastguard Worker PERFORMANCE = 3; 62*d5c09012SAndroid Build Coastguard Worker 63*d5c09012SAndroid Build Coastguard Worker // This insight is related to manageability. 64*d5c09012SAndroid Build Coastguard Worker MANAGEABILITY = 4; 65*d5c09012SAndroid Build Coastguard Worker 66*d5c09012SAndroid Build Coastguard Worker // The insight is related to sustainability. 67*d5c09012SAndroid Build Coastguard Worker SUSTAINABILITY = 5; 68*d5c09012SAndroid Build Coastguard Worker 69*d5c09012SAndroid Build Coastguard Worker // This insight is related to reliability. 70*d5c09012SAndroid Build Coastguard Worker RELIABILITY = 6; 71*d5c09012SAndroid Build Coastguard Worker } 72*d5c09012SAndroid Build Coastguard Worker 73*d5c09012SAndroid Build Coastguard Worker // Insight severity levels. 74*d5c09012SAndroid Build Coastguard Worker enum Severity { 75*d5c09012SAndroid Build Coastguard Worker // Insight has unspecified severity. 76*d5c09012SAndroid Build Coastguard Worker SEVERITY_UNSPECIFIED = 0; 77*d5c09012SAndroid Build Coastguard Worker 78*d5c09012SAndroid Build Coastguard Worker // Insight has low severity. 79*d5c09012SAndroid Build Coastguard Worker LOW = 1; 80*d5c09012SAndroid Build Coastguard Worker 81*d5c09012SAndroid Build Coastguard Worker // Insight has medium severity. 82*d5c09012SAndroid Build Coastguard Worker MEDIUM = 2; 83*d5c09012SAndroid Build Coastguard Worker 84*d5c09012SAndroid Build Coastguard Worker // Insight has high severity. 85*d5c09012SAndroid Build Coastguard Worker HIGH = 3; 86*d5c09012SAndroid Build Coastguard Worker 87*d5c09012SAndroid Build Coastguard Worker // Insight has critical severity. 88*d5c09012SAndroid Build Coastguard Worker CRITICAL = 4; 89*d5c09012SAndroid Build Coastguard Worker } 90*d5c09012SAndroid Build Coastguard Worker 91*d5c09012SAndroid Build Coastguard Worker // Reference to an associated recommendation. 92*d5c09012SAndroid Build Coastguard Worker message RecommendationReference { 93*d5c09012SAndroid Build Coastguard Worker // Recommendation resource name, e.g. 94*d5c09012SAndroid Build Coastguard Worker // projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID] 95*d5c09012SAndroid Build Coastguard Worker string recommendation = 1; 96*d5c09012SAndroid Build Coastguard Worker } 97*d5c09012SAndroid Build Coastguard Worker 98*d5c09012SAndroid Build Coastguard Worker // Name of the insight. 99*d5c09012SAndroid Build Coastguard Worker string name = 1; 100*d5c09012SAndroid Build Coastguard Worker 101*d5c09012SAndroid Build Coastguard Worker // Free-form human readable summary in English. The maximum length is 500 102*d5c09012SAndroid Build Coastguard Worker // characters. 103*d5c09012SAndroid Build Coastguard Worker string description = 2; 104*d5c09012SAndroid Build Coastguard Worker 105*d5c09012SAndroid Build Coastguard Worker // Fully qualified resource names that this insight is targeting. 106*d5c09012SAndroid Build Coastguard Worker repeated string target_resources = 9; 107*d5c09012SAndroid Build Coastguard Worker 108*d5c09012SAndroid Build Coastguard Worker // Insight subtype. Insight content schema will be stable for a given subtype. 109*d5c09012SAndroid Build Coastguard Worker string insight_subtype = 10; 110*d5c09012SAndroid Build Coastguard Worker 111*d5c09012SAndroid Build Coastguard Worker // A struct of custom fields to explain the insight. 112*d5c09012SAndroid Build Coastguard Worker // Example: "grantedPermissionsCount": "1000" 113*d5c09012SAndroid Build Coastguard Worker google.protobuf.Struct content = 3; 114*d5c09012SAndroid Build Coastguard Worker 115*d5c09012SAndroid Build Coastguard Worker // Timestamp of the latest data used to generate the insight. 116*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp last_refresh_time = 4; 117*d5c09012SAndroid Build Coastguard Worker 118*d5c09012SAndroid Build Coastguard Worker // Observation period that led to the insight. The source data used to 119*d5c09012SAndroid Build Coastguard Worker // generate the insight ends at last_refresh_time and begins at 120*d5c09012SAndroid Build Coastguard Worker // (last_refresh_time - observation_period). 121*d5c09012SAndroid Build Coastguard Worker google.protobuf.Duration observation_period = 5; 122*d5c09012SAndroid Build Coastguard Worker 123*d5c09012SAndroid Build Coastguard Worker // Information state and metadata. 124*d5c09012SAndroid Build Coastguard Worker InsightStateInfo state_info = 6; 125*d5c09012SAndroid Build Coastguard Worker 126*d5c09012SAndroid Build Coastguard Worker // Category being targeted by the insight. 127*d5c09012SAndroid Build Coastguard Worker Category category = 7; 128*d5c09012SAndroid Build Coastguard Worker 129*d5c09012SAndroid Build Coastguard Worker // Insight's severity. 130*d5c09012SAndroid Build Coastguard Worker Severity severity = 15; 131*d5c09012SAndroid Build Coastguard Worker 132*d5c09012SAndroid Build Coastguard Worker // Fingerprint of the Insight. Provides optimistic locking when updating 133*d5c09012SAndroid Build Coastguard Worker // states. 134*d5c09012SAndroid Build Coastguard Worker string etag = 11; 135*d5c09012SAndroid Build Coastguard Worker 136*d5c09012SAndroid Build Coastguard Worker // Recommendations derived from this insight. 137*d5c09012SAndroid Build Coastguard Worker repeated RecommendationReference associated_recommendations = 8; 138*d5c09012SAndroid Build Coastguard Worker} 139*d5c09012SAndroid Build Coastguard Worker 140*d5c09012SAndroid Build Coastguard Worker// Information related to insight state. 141*d5c09012SAndroid Build Coastguard Workermessage InsightStateInfo { 142*d5c09012SAndroid Build Coastguard Worker // Represents insight state. 143*d5c09012SAndroid Build Coastguard Worker enum State { 144*d5c09012SAndroid Build Coastguard Worker // Unspecified state. 145*d5c09012SAndroid Build Coastguard Worker STATE_UNSPECIFIED = 0; 146*d5c09012SAndroid Build Coastguard Worker 147*d5c09012SAndroid Build Coastguard Worker // Insight is active. Content for ACTIVE insights can be updated by Google. 148*d5c09012SAndroid Build Coastguard Worker // ACTIVE insights can be marked DISMISSED OR ACCEPTED. 149*d5c09012SAndroid Build Coastguard Worker ACTIVE = 1; 150*d5c09012SAndroid Build Coastguard Worker 151*d5c09012SAndroid Build Coastguard Worker // Some action has been taken based on this insight. Insights become 152*d5c09012SAndroid Build Coastguard Worker // accepted when a recommendation derived from the insight has been marked 153*d5c09012SAndroid Build Coastguard Worker // CLAIMED, SUCCEEDED, or FAILED. ACTIVE insights can also be marked 154*d5c09012SAndroid Build Coastguard Worker // ACCEPTED explicitly. Content for ACCEPTED insights is immutable. ACCEPTED 155*d5c09012SAndroid Build Coastguard Worker // insights can only be marked ACCEPTED (which may update state metadata). 156*d5c09012SAndroid Build Coastguard Worker ACCEPTED = 2; 157*d5c09012SAndroid Build Coastguard Worker 158*d5c09012SAndroid Build Coastguard Worker // Insight is dismissed. Content for DISMISSED insights can be updated by 159*d5c09012SAndroid Build Coastguard Worker // Google. DISMISSED insights can be marked as ACTIVE. 160*d5c09012SAndroid Build Coastguard Worker DISMISSED = 3; 161*d5c09012SAndroid Build Coastguard Worker } 162*d5c09012SAndroid Build Coastguard Worker 163*d5c09012SAndroid Build Coastguard Worker // Insight state. 164*d5c09012SAndroid Build Coastguard Worker State state = 1; 165*d5c09012SAndroid Build Coastguard Worker 166*d5c09012SAndroid Build Coastguard Worker // A map of metadata for the state, provided by user or automations systems. 167*d5c09012SAndroid Build Coastguard Worker map<string, string> state_metadata = 2; 168*d5c09012SAndroid Build Coastguard Worker} 169