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