1// Copyright 2022 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.cloud.recommender.v1beta1; 18 19import "google/api/annotations.proto"; 20import "google/api/client.proto"; 21import "google/api/field_behavior.proto"; 22import "google/api/resource.proto"; 23import "google/cloud/recommender/v1beta1/insight.proto"; 24import "google/cloud/recommender/v1beta1/insight_type_config.proto"; 25import "google/cloud/recommender/v1beta1/recommendation.proto"; 26import "google/cloud/recommender/v1beta1/recommender_config.proto"; 27import "google/protobuf/field_mask.proto"; 28 29option csharp_namespace = "Google.Cloud.Recommender.V1Beta1"; 30option go_package = "cloud.google.com/go/recommender/apiv1beta1/recommenderpb;recommenderpb"; 31option java_multiple_files = true; 32option java_outer_classname = "RecommenderProto"; 33option java_package = "com.google.cloud.recommender.v1beta1"; 34option objc_class_prefix = "CREC"; 35 36// Provides insights and recommendations for cloud customers for various 37// categories like performance optimization, cost savings, reliability, feature 38// discovery, etc. Insights and recommendations are generated automatically 39// based on analysis of user resources, configuration and monitoring metrics. 40service Recommender { 41 option (google.api.default_host) = "recommender.googleapis.com"; 42 option (google.api.oauth_scopes) = 43 "https://www.googleapis.com/auth/cloud-platform"; 44 45 // Lists insights for the specified Cloud Resource. Requires the 46 // recommender.*.list IAM permission for the specified insight type. 47 rpc ListInsights(ListInsightsRequest) returns (ListInsightsResponse) { 48 option (google.api.http) = { 49 get: "/v1beta1/{parent=projects/*/locations/*/insightTypes/*}/insights" 50 additional_bindings { 51 get: "/v1beta1/{parent=billingAccounts/*/locations/*/insightTypes/*}/insights" 52 } 53 additional_bindings { 54 get: "/v1beta1/{parent=folders/*/locations/*/insightTypes/*}/insights" 55 } 56 additional_bindings { 57 get: "/v1beta1/{parent=organizations/*/locations/*/insightTypes/*}/insights" 58 } 59 }; 60 option (google.api.method_signature) = "parent"; 61 } 62 63 // Gets the requested insight. Requires the recommender.*.get IAM permission 64 // for the specified insight type. 65 rpc GetInsight(GetInsightRequest) returns (Insight) { 66 option (google.api.http) = { 67 get: "/v1beta1/{name=projects/*/locations/*/insightTypes/*/insights/*}" 68 additional_bindings { 69 get: "/v1beta1/{name=billingAccounts/*/locations/*/insightTypes/*/insights/*}" 70 } 71 additional_bindings { 72 get: "/v1beta1/{name=folders/*/locations/*/insightTypes/*/insights/*}" 73 } 74 additional_bindings { 75 get: "/v1beta1/{name=organizations/*/locations/*/insightTypes/*/insights/*}" 76 } 77 }; 78 option (google.api.method_signature) = "name"; 79 } 80 81 // Marks the Insight State as Accepted. Users can use this method to 82 // indicate to the Recommender API that they have applied some action based 83 // on the insight. This stops the insight content from being updated. 84 // 85 // MarkInsightAccepted can be applied to insights in ACTIVE state. Requires 86 // the recommender.*.update IAM permission for the specified insight. 87 rpc MarkInsightAccepted(MarkInsightAcceptedRequest) returns (Insight) { 88 option (google.api.http) = { 89 post: "/v1beta1/{name=projects/*/locations/*/insightTypes/*/insights/*}:markAccepted" 90 body: "*" 91 additional_bindings { 92 post: "/v1beta1/{name=billingAccounts/*/locations/*/insightTypes/*/insights/*}:markAccepted" 93 body: "*" 94 } 95 additional_bindings { 96 post: "/v1beta1/{name=folders/*/locations/*/insightTypes/*/insights/*}:markAccepted" 97 body: "*" 98 } 99 additional_bindings { 100 post: "/v1beta1/{name=organizations/*/locations/*/insightTypes/*/insights/*}:markAccepted" 101 body: "*" 102 } 103 }; 104 option (google.api.method_signature) = "name,state_metadata,etag"; 105 } 106 107 // Lists recommendations for the specified Cloud Resource. Requires the 108 // recommender.*.list IAM permission for the specified recommender. 109 rpc ListRecommendations(ListRecommendationsRequest) 110 returns (ListRecommendationsResponse) { 111 option (google.api.http) = { 112 get: "/v1beta1/{parent=projects/*/locations/*/recommenders/*}/recommendations" 113 additional_bindings { 114 get: "/v1beta1/{parent=billingAccounts/*/locations/*/recommenders/*}/recommendations" 115 } 116 additional_bindings { 117 get: "/v1beta1/{parent=folders/*/locations/*/recommenders/*}/recommendations" 118 } 119 additional_bindings { 120 get: "/v1beta1/{parent=organizations/*/locations/*/recommenders/*}/recommendations" 121 } 122 }; 123 option (google.api.method_signature) = "parent,filter"; 124 } 125 126 // Gets the requested recommendation. Requires the recommender.*.get 127 // IAM permission for the specified recommender. 128 rpc GetRecommendation(GetRecommendationRequest) returns (Recommendation) { 129 option (google.api.http) = { 130 get: "/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}" 131 additional_bindings { 132 get: "/v1beta1/{name=billingAccounts/*/locations/*/recommenders/*/recommendations/*}" 133 } 134 additional_bindings { 135 get: "/v1beta1/{name=folders/*/locations/*/recommenders/*/recommendations/*}" 136 } 137 additional_bindings { 138 get: "/v1beta1/{name=organizations/*/locations/*/recommenders/*/recommendations/*}" 139 } 140 }; 141 option (google.api.method_signature) = "name"; 142 } 143 144 // Marks the Recommendation State as Claimed. Users can use this method to 145 // indicate to the Recommender API that they are starting to apply the 146 // recommendation themselves. This stops the recommendation content from being 147 // updated. Associated insights are frozen and placed in the ACCEPTED state. 148 // 149 // MarkRecommendationClaimed can be applied to recommendations in CLAIMED or 150 // ACTIVE state. 151 // 152 // Requires the recommender.*.update IAM permission for the specified 153 // recommender. 154 rpc MarkRecommendationClaimed(MarkRecommendationClaimedRequest) 155 returns (Recommendation) { 156 option (google.api.http) = { 157 post: "/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markClaimed" 158 body: "*" 159 additional_bindings { 160 post: "/v1beta1/{name=billingAccounts/*/locations/*/recommenders/*/recommendations/*}:markClaimed" 161 body: "*" 162 } 163 additional_bindings { 164 post: "/v1beta1/{name=folders/*/locations/*/recommenders/*/recommendations/*}:markClaimed" 165 body: "*" 166 } 167 additional_bindings { 168 post: "/v1beta1/{name=organizations/*/locations/*/recommenders/*/recommendations/*}:markClaimed" 169 body: "*" 170 } 171 }; 172 option (google.api.method_signature) = "name,state_metadata,etag"; 173 } 174 175 // Marks the Recommendation State as Succeeded. Users can use this method to 176 // indicate to the Recommender API that they have applied the recommendation 177 // themselves, and the operation was successful. This stops the recommendation 178 // content from being updated. Associated insights are frozen and placed in 179 // the ACCEPTED state. 180 // 181 // MarkRecommendationSucceeded can be applied to recommendations in ACTIVE, 182 // CLAIMED, SUCCEEDED, or FAILED state. 183 // 184 // Requires the recommender.*.update IAM permission for the specified 185 // recommender. 186 rpc MarkRecommendationSucceeded(MarkRecommendationSucceededRequest) 187 returns (Recommendation) { 188 option (google.api.http) = { 189 post: "/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markSucceeded" 190 body: "*" 191 additional_bindings { 192 post: "/v1beta1/{name=billingAccounts/*/locations/*/recommenders/*/recommendations/*}:markSucceeded" 193 body: "*" 194 } 195 additional_bindings { 196 post: "/v1beta1/{name=folders/*/locations/*/recommenders/*/recommendations/*}:markSucceeded" 197 body: "*" 198 } 199 additional_bindings { 200 post: "/v1beta1/{name=organizations/*/locations/*/recommenders/*/recommendations/*}:markSucceeded" 201 body: "*" 202 } 203 }; 204 option (google.api.method_signature) = "name,state_metadata,etag"; 205 } 206 207 // Marks the Recommendation State as Failed. Users can use this method to 208 // indicate to the Recommender API that they have applied the recommendation 209 // themselves, and the operation failed. This stops the recommendation content 210 // from being updated. Associated insights are frozen and placed in the 211 // ACCEPTED state. 212 // 213 // MarkRecommendationFailed can be applied to recommendations in ACTIVE, 214 // CLAIMED, SUCCEEDED, or FAILED state. 215 // 216 // Requires the recommender.*.update IAM permission for the specified 217 // recommender. 218 rpc MarkRecommendationFailed(MarkRecommendationFailedRequest) 219 returns (Recommendation) { 220 option (google.api.http) = { 221 post: "/v1beta1/{name=projects/*/locations/*/recommenders/*/recommendations/*}:markFailed" 222 body: "*" 223 additional_bindings { 224 post: "/v1beta1/{name=billingAccounts/*/locations/*/recommenders/*/recommendations/*}:markFailed" 225 body: "*" 226 } 227 additional_bindings { 228 post: "/v1beta1/{name=folders/*/locations/*/recommenders/*/recommendations/*}:markFailed" 229 body: "*" 230 } 231 additional_bindings { 232 post: "/v1beta1/{name=organizations/*/locations/*/recommenders/*/recommendations/*}:markFailed" 233 body: "*" 234 } 235 }; 236 option (google.api.method_signature) = "name,state_metadata,etag"; 237 } 238 239 // Gets the requested Recommender Config. There is only one instance of the 240 // config for each Recommender. 241 rpc GetRecommenderConfig(GetRecommenderConfigRequest) 242 returns (RecommenderConfig) { 243 option (google.api.http) = { 244 get: "/v1beta1/{name=projects/*/locations/*/recommenders/*/config}" 245 additional_bindings { 246 get: "/v1beta1/{name=organizations/*/locations/*/recommenders/*/config}" 247 } 248 }; 249 option (google.api.method_signature) = "name"; 250 } 251 252 // Updates a Recommender Config. This will create a new revision of the 253 // config. 254 rpc UpdateRecommenderConfig(UpdateRecommenderConfigRequest) 255 returns (RecommenderConfig) { 256 option (google.api.http) = { 257 patch: "/v1beta1/{recommender_config.name=projects/*/locations/*/recommenders/*/config}" 258 body: "recommender_config" 259 additional_bindings { 260 post: "/v1beta1/{recommender_config.name=organizations/*/locations/*/recommenders/*/config}" 261 body: "recommender_config" 262 } 263 }; 264 option (google.api.method_signature) = "recommender_config,update_mask"; 265 } 266 267 // Gets the requested InsightTypeConfig. There is only one instance of the 268 // config for each InsightType. 269 rpc GetInsightTypeConfig(GetInsightTypeConfigRequest) 270 returns (InsightTypeConfig) { 271 option (google.api.http) = { 272 get: "/v1beta1/{name=projects/*/locations/*/insightTypes/*/config}" 273 additional_bindings { 274 get: "/v1beta1/{name=organizations/*/locations/*/insightTypes/*/config}" 275 } 276 }; 277 option (google.api.method_signature) = "name"; 278 } 279 280 // Updates an InsightTypeConfig change. This will create a new revision of the 281 // config. 282 rpc UpdateInsightTypeConfig(UpdateInsightTypeConfigRequest) 283 returns (InsightTypeConfig) { 284 option (google.api.http) = { 285 patch: "/v1beta1/{insight_type_config.name=projects/*/locations/*/insightTypes/*/config}" 286 body: "insight_type_config" 287 additional_bindings { 288 post: "/v1beta1/{insight_type_config.name=organizations/*/locations/*/insightTypes/*/config}" 289 body: "insight_type_config" 290 } 291 }; 292 option (google.api.method_signature) = "insight_type_config,update_mask"; 293 } 294 295 // Lists all available Recommenders. 296 // No IAM permissions are required. 297 rpc ListRecommenders(ListRecommendersRequest) 298 returns (ListRecommendersResponse) { 299 option (google.api.http) = { 300 get: "/v1beta1/recommenders" 301 }; 302 } 303 304 // Lists available InsightTypes. 305 // No IAM permissions are required. 306 rpc ListInsightTypes(ListInsightTypesRequest) 307 returns (ListInsightTypesResponse) { 308 option (google.api.http) = { 309 get: "/v1beta1/insightTypes" 310 }; 311 } 312} 313 314// Request for the `ListInsights` method. 315message ListInsightsRequest { 316 // Required. The container resource on which to execute the request. 317 // Acceptable formats: 318 // 319 // * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` 320 // 321 // * `projects/[PROJECT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` 322 // 323 // * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` 324 // 325 // * `folders/[FOLDER_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` 326 // 327 // * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` 328 // 329 // LOCATION here refers to GCP Locations: 330 // https://cloud.google.com/about/locations/ 331 // INSIGHT_TYPE_ID refers to supported insight types: 332 // https://cloud.google.com/recommender/docs/insights/insight-types. 333 string parent = 1 [ 334 (google.api.field_behavior) = REQUIRED, 335 (google.api.resource_reference) = { 336 type: "recommender.googleapis.com/InsightType" 337 } 338 ]; 339 340 // Optional. The maximum number of results to return from this request. 341 // Non-positive values are ignored. If not specified, the server will 342 // determine the number of results to return. 343 int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; 344 345 // Optional. If present, retrieves the next batch of results from the 346 // preceding call to this method. `page_token` must be the value of 347 // `next_page_token` from the previous response. The values of other method 348 // parameters must be identical to those in the previous call. 349 string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; 350 351 // Optional. Filter expression to restrict the insights returned. Supported 352 // filter fields: 353 // 354 // * `stateInfo.state` 355 // 356 // * `insightSubtype` 357 // 358 // * `severity` 359 // 360 // Examples: 361 // 362 // * `stateInfo.state = ACTIVE OR stateInfo.state = DISMISSED` 363 // 364 // * `insightSubtype = PERMISSIONS_USAGE` 365 // 366 // * `severity = CRITICAL OR severity = HIGH` 367 // 368 // * `stateInfo.state = ACTIVE AND (severity = CRITICAL OR severity = HIGH)` 369 // 370 // (These expressions are based on the filter language described at 371 // https://google.aip.dev/160) 372 string filter = 4 [(google.api.field_behavior) = OPTIONAL]; 373} 374 375// Response to the `ListInsights` method. 376message ListInsightsResponse { 377 // The set of insights for the `parent` resource. 378 repeated Insight insights = 1; 379 380 // A token that can be used to request the next page of results. This field is 381 // empty if there are no additional results. 382 string next_page_token = 2; 383} 384 385// Request to the `GetInsight` method. 386message GetInsightRequest { 387 // Required. Name of the insight. 388 string name = 1 [ 389 (google.api.field_behavior) = REQUIRED, 390 (google.api.resource_reference) = { 391 type: "recommender.googleapis.com/Insight" 392 } 393 ]; 394} 395 396// Request for the `MarkInsightAccepted` method. 397message MarkInsightAcceptedRequest { 398 // Required. Name of the insight. 399 string name = 1 [ 400 (google.api.field_behavior) = REQUIRED, 401 (google.api.resource_reference) = { 402 type: "recommender.googleapis.com/Insight" 403 } 404 ]; 405 406 // Optional. State properties user wish to include with this state. Full 407 // replace of the current state_metadata. 408 map<string, string> state_metadata = 2 409 [(google.api.field_behavior) = OPTIONAL]; 410 411 // Required. Fingerprint of the Insight. Provides optimistic locking. 412 string etag = 3 [(google.api.field_behavior) = REQUIRED]; 413} 414 415// Request for the `ListRecommendations` method. 416message ListRecommendationsRequest { 417 // Required. The container resource on which to execute the request. 418 // Acceptable formats: 419 // 420 // * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]` 421 // 422 // * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]` 423 // 424 // * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]` 425 // 426 // * `folders/[FOLDER_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]` 427 // 428 // * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]` 429 // 430 // LOCATION here refers to GCP Locations: 431 // https://cloud.google.com/about/locations/ 432 // RECOMMENDER_ID refers to supported recommenders: 433 // https://cloud.google.com/recommender/docs/recommenders. 434 string parent = 1 [ 435 (google.api.field_behavior) = REQUIRED, 436 (google.api.resource_reference) = { 437 type: "recommender.googleapis.com/Recommender" 438 } 439 ]; 440 441 // Optional. The maximum number of results to return from this request. 442 // Non-positive values are ignored. If not specified, the server will 443 // determine the number of results to return. 444 int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; 445 446 // Optional. If present, retrieves the next batch of results from the 447 // preceding call to this method. `page_token` must be the value of 448 // `next_page_token` from the previous response. The values of other method 449 // parameters must be identical to those in the previous call. 450 string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; 451 452 // Filter expression to restrict the recommendations returned. Supported 453 // filter fields: 454 // 455 // * `state_info.state` 456 // 457 // * `recommenderSubtype` 458 // 459 // * `priority` 460 // 461 // Examples: 462 // 463 // * `stateInfo.state = ACTIVE OR stateInfo.state = DISMISSED` 464 // 465 // * `recommenderSubtype = REMOVE_ROLE OR recommenderSubtype = REPLACE_ROLE` 466 // 467 // * `priority = P1 OR priority = P2` 468 // 469 // * `stateInfo.state = ACTIVE AND (priority = P1 OR priority = P2)` 470 // 471 // (These expressions are based on the filter language described at 472 // https://google.aip.dev/160) 473 string filter = 5; 474} 475 476// Response to the `ListRecommendations` method. 477message ListRecommendationsResponse { 478 // The set of recommendations for the `parent` resource. 479 repeated Recommendation recommendations = 1; 480 481 // A token that can be used to request the next page of results. This field is 482 // empty if there are no additional results. 483 string next_page_token = 2; 484} 485 486// Request to the `GetRecommendation` method. 487message GetRecommendationRequest { 488 // Required. Name of the recommendation. 489 string name = 1 [ 490 (google.api.field_behavior) = REQUIRED, 491 (google.api.resource_reference) = { 492 type: "recommender.googleapis.com/Recommendation" 493 } 494 ]; 495} 496 497// Request for the `MarkRecommendationClaimed` Method. 498message MarkRecommendationClaimedRequest { 499 // Required. Name of the recommendation. 500 string name = 1 [ 501 (google.api.field_behavior) = REQUIRED, 502 (google.api.resource_reference) = { 503 type: "recommender.googleapis.com/Recommendation" 504 } 505 ]; 506 507 // State properties to include with this state. Overwrites any existing 508 // `state_metadata`. 509 // Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`. 510 // Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`. 511 map<string, string> state_metadata = 2; 512 513 // Required. Fingerprint of the Recommendation. Provides optimistic locking. 514 string etag = 3 [(google.api.field_behavior) = REQUIRED]; 515} 516 517// Request for the `MarkRecommendationSucceeded` Method. 518message MarkRecommendationSucceededRequest { 519 // Required. Name of the recommendation. 520 string name = 1 [ 521 (google.api.field_behavior) = REQUIRED, 522 (google.api.resource_reference) = { 523 type: "recommender.googleapis.com/Recommendation" 524 } 525 ]; 526 527 // State properties to include with this state. Overwrites any existing 528 // `state_metadata`. 529 // Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`. 530 // Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`. 531 map<string, string> state_metadata = 2; 532 533 // Required. Fingerprint of the Recommendation. Provides optimistic locking. 534 string etag = 3 [(google.api.field_behavior) = REQUIRED]; 535} 536 537// Request for the `MarkRecommendationFailed` Method. 538message MarkRecommendationFailedRequest { 539 // Required. Name of the recommendation. 540 string name = 1 [ 541 (google.api.field_behavior) = REQUIRED, 542 (google.api.resource_reference) = { 543 type: "recommender.googleapis.com/Recommendation" 544 } 545 ]; 546 547 // State properties to include with this state. Overwrites any existing 548 // `state_metadata`. 549 // Keys must match the regex `/^[a-z0-9][a-z0-9_.-]{0,62}$/`. 550 // Values must match the regex `/^[a-zA-Z0-9_./-]{0,255}$/`. 551 map<string, string> state_metadata = 2; 552 553 // Required. Fingerprint of the Recommendation. Provides optimistic locking. 554 string etag = 3 [(google.api.field_behavior) = REQUIRED]; 555} 556 557// Request for the GetRecommenderConfig` method. 558message GetRecommenderConfigRequest { 559 // Required. Name of the Recommendation Config to get. 560 // 561 // Acceptable formats: 562 // 563 // * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config` 564 // 565 // * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config` 566 // 567 // * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config` 568 string name = 1 [ 569 (google.api.field_behavior) = REQUIRED, 570 (google.api.resource_reference) = { 571 type: "recommender.googleapis.com/RecommenderConfig" 572 } 573 ]; 574} 575 576// Request for the `UpdateRecommenderConfig` method. 577message UpdateRecommenderConfigRequest { 578 // Required. The RecommenderConfig to update. 579 RecommenderConfig recommender_config = 1 580 [(google.api.field_behavior) = REQUIRED]; 581 582 // The list of fields to be updated. 583 google.protobuf.FieldMask update_mask = 2; 584 585 // If true, validate the request and preview the change, but do not actually 586 // update it. 587 bool validate_only = 3; 588} 589 590// Request for the GetInsightTypeConfig` method. 591message GetInsightTypeConfigRequest { 592 // Required. Name of the InsightTypeConfig to get. 593 // 594 // Acceptable formats: 595 // 596 // * `projects/[PROJECT_NUMBER]/locations/global/recommenders/[INSIGHT_TYPE_ID]/config` 597 // 598 // * `projects/[PROJECT_ID]/locations/global/recommenders/[INSIGHT_TYPE_ID]/config` 599 // 600 // * `organizations/[ORGANIZATION_ID]/locations/global/recommenders/[INSIGHT_TYPE_ID]/config` 601 string name = 1 [ 602 (google.api.field_behavior) = REQUIRED, 603 (google.api.resource_reference) = { 604 type: "recommender.googleapis.com/InsightTypeConfig" 605 } 606 ]; 607} 608 609// Request for the `UpdateInsightTypeConfig` method. 610message UpdateInsightTypeConfigRequest { 611 // Required. The InsightTypeConfig to update. 612 InsightTypeConfig insight_type_config = 1 613 [(google.api.field_behavior) = REQUIRED]; 614 615 // The list of fields to be updated. 616 google.protobuf.FieldMask update_mask = 2; 617 618 // If true, validate the request and preview the change, but do not actually 619 // update it. 620 bool validate_only = 3; 621} 622 623// Request for the `ListRecommender` method. 624message ListRecommendersRequest { 625 // The number of RecommenderTypes to return per page. The service may return 626 // fewer than this value. 627 int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL]; 628 629 // A page token, received from a previous `ListRecommenders` call. 630 // Provide this to retrieve the subsequent page. 631 string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; 632} 633 634// Response for the `ListRecommender` method. 635message ListRecommendersResponse { 636 // The set of recommenders available 637 repeated RecommenderType recommenders = 1; 638 639 // A token, which can be sent as `page_token` to retrieve the next page. 640 // If this field is omitted, there are no subsequent pages. 641 string next_page_token = 2; 642} 643 644// Request for the `ListInsightTypes` method. 645message ListInsightTypesRequest { 646 // The number of InsightTypes to return per page. The service may return 647 // fewer than this value. 648 int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL]; 649 650 // A page token, received from a previous `ListRecommenders` call. 651 // Provide this to retrieve the subsequent page. 652 string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; 653} 654 655// Response for the `ListInsightTypes` method. 656message ListInsightTypesResponse { 657 // The set of recommenders available 658 repeated InsightType insight_types = 1; 659 660 // A token, which can be sent as `page_token` to retrieve the next page. 661 // If this field is omitted, there are no subsequent pages. 662 string next_page_token = 2; 663} 664