recommender_service.proto 22 KB

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