catalog_service.proto 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522
  1. // Copyright 2021 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.retail.v2beta;
  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/retail/v2beta/catalog.proto";
  21. import "google/protobuf/empty.proto";
  22. import "google/protobuf/field_mask.proto";
  23. import "google/protobuf/timestamp.proto";
  24. option csharp_namespace = "Google.Cloud.Retail.V2Beta";
  25. option go_package = "google.golang.org/genproto/googleapis/cloud/retail/v2beta;retail";
  26. option java_multiple_files = true;
  27. option java_outer_classname = "CatalogServiceProto";
  28. option java_package = "com.google.cloud.retail.v2beta";
  29. option objc_class_prefix = "RETAIL";
  30. option php_namespace = "Google\\Cloud\\Retail\\V2beta";
  31. option ruby_package = "Google::Cloud::Retail::V2beta";
  32. // Service for managing catalog configuration.
  33. service CatalogService {
  34. option (google.api.default_host) = "retail.googleapis.com";
  35. option (google.api.oauth_scopes) =
  36. "https://www.googleapis.com/auth/cloud-platform";
  37. // Lists all the [Catalog][google.cloud.retail.v2beta.Catalog]s associated
  38. // with the project.
  39. rpc ListCatalogs(ListCatalogsRequest) returns (ListCatalogsResponse) {
  40. option (google.api.http) = {
  41. get: "/v2beta/{parent=projects/*/locations/*}/catalogs"
  42. };
  43. option (google.api.method_signature) = "parent";
  44. }
  45. // Updates the [Catalog][google.cloud.retail.v2beta.Catalog]s.
  46. rpc UpdateCatalog(UpdateCatalogRequest) returns (Catalog) {
  47. option (google.api.http) = {
  48. patch: "/v2beta/{catalog.name=projects/*/locations/*/catalogs/*}"
  49. body: "catalog"
  50. };
  51. option (google.api.method_signature) = "catalog,update_mask";
  52. }
  53. // Set a specified branch id as default branch. API methods such as
  54. // [SearchService.Search][google.cloud.retail.v2beta.SearchService.Search],
  55. // [ProductService.GetProduct][google.cloud.retail.v2beta.ProductService.GetProduct],
  56. // [ProductService.ListProducts][google.cloud.retail.v2beta.ProductService.ListProducts]
  57. // will treat requests using "default_branch" to the actual branch id set as
  58. // default.
  59. //
  60. // For example, if `projects/*/locations/*/catalogs/*/branches/1` is set as
  61. // default, setting
  62. // [SearchRequest.branch][google.cloud.retail.v2beta.SearchRequest.branch] to
  63. // `projects/*/locations/*/catalogs/*/branches/default_branch` is equivalent
  64. // to setting
  65. // [SearchRequest.branch][google.cloud.retail.v2beta.SearchRequest.branch] to
  66. // `projects/*/locations/*/catalogs/*/branches/1`.
  67. //
  68. // Using multiple branches can be useful when developers would like
  69. // to have a staging branch to test and verify for future usage. When it
  70. // becomes ready, developers switch on the staging branch using this API while
  71. // keeping using `projects/*/locations/*/catalogs/*/branches/default_branch`
  72. // as [SearchRequest.branch][google.cloud.retail.v2beta.SearchRequest.branch]
  73. // to route the traffic to this staging branch.
  74. //
  75. // CAUTION: If you have live predict/search traffic, switching the default
  76. // branch could potentially cause outages if the ID space of the new branch is
  77. // very different from the old one.
  78. //
  79. // More specifically:
  80. //
  81. // * PredictionService will only return product IDs from branch {newBranch}.
  82. // * SearchService will only return product IDs from branch {newBranch}
  83. // (if branch is not explicitly set).
  84. // * UserEventService will only join events with products from branch
  85. // {newBranch}.
  86. rpc SetDefaultBranch(SetDefaultBranchRequest)
  87. returns (google.protobuf.Empty) {
  88. option (google.api.http) = {
  89. post: "/v2beta/{catalog=projects/*/locations/*/catalogs/*}:setDefaultBranch"
  90. body: "*"
  91. };
  92. option (google.api.method_signature) = "catalog";
  93. }
  94. // Get which branch is currently default branch set by
  95. // [CatalogService.SetDefaultBranch][google.cloud.retail.v2beta.CatalogService.SetDefaultBranch]
  96. // method under a specified parent catalog.
  97. rpc GetDefaultBranch(GetDefaultBranchRequest)
  98. returns (GetDefaultBranchResponse) {
  99. option (google.api.http) = {
  100. get: "/v2beta/{catalog=projects/*/locations/*/catalogs/*}:getDefaultBranch"
  101. };
  102. option (google.api.method_signature) = "catalog";
  103. }
  104. // Gets a [CompletionConfig][google.cloud.retail.v2beta.CompletionConfig].
  105. rpc GetCompletionConfig(GetCompletionConfigRequest)
  106. returns (CompletionConfig) {
  107. option (google.api.http) = {
  108. get: "/v2beta/{name=projects/*/locations/*/catalogs/*/completionConfig}"
  109. };
  110. option (google.api.method_signature) = "name";
  111. }
  112. // Updates the
  113. // [CompletionConfig][google.cloud.retail.v2beta.CompletionConfig]s.
  114. rpc UpdateCompletionConfig(UpdateCompletionConfigRequest)
  115. returns (CompletionConfig) {
  116. option (google.api.http) = {
  117. patch: "/v2beta/{completion_config.name=projects/*/locations/*/catalogs/*/completionConfig}"
  118. body: "completion_config"
  119. };
  120. option (google.api.method_signature) = "completion_config,update_mask";
  121. }
  122. // Gets an [AttributesConfig][google.cloud.retail.v2beta.AttributesConfig].
  123. rpc GetAttributesConfig(GetAttributesConfigRequest)
  124. returns (AttributesConfig) {
  125. option (google.api.http) = {
  126. get: "/v2beta/{name=projects/*/locations/*/catalogs/*/attributesConfig}"
  127. };
  128. option (google.api.method_signature) = "name";
  129. }
  130. // Updates the
  131. // [AttributesConfig][google.cloud.retail.v2beta.AttributesConfig].
  132. //
  133. // The catalog attributes in the request will be updated in the catalog, or
  134. // inserted if they do not exist. Existing catalog attributes not included in
  135. // the request will remain unchanged. Attributes that are assigned to
  136. // products, but do not exist at the catalog level, are always included in the
  137. // response. The product attribute is assigned default values for missing
  138. // catalog attribute fields, e.g., searchable and dynamic facetable options.
  139. rpc UpdateAttributesConfig(UpdateAttributesConfigRequest)
  140. returns (AttributesConfig) {
  141. option (google.api.http) = {
  142. patch: "/v2beta/{attributes_config.name=projects/*/locations/*/catalogs/*/attributesConfig}"
  143. body: "attributes_config"
  144. };
  145. option (google.api.method_signature) = "attributes_config,update_mask";
  146. }
  147. // Adds the specified
  148. // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] to the
  149. // [AttributesConfig][google.cloud.retail.v2beta.AttributesConfig].
  150. //
  151. // If the [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] to
  152. // add already exists, an ALREADY_EXISTS error is returned.
  153. rpc AddCatalogAttribute(AddCatalogAttributeRequest)
  154. returns (AttributesConfig) {
  155. option (google.api.http) = {
  156. post: "/v2beta/{attributes_config=projects/*/locations/*/catalogs/*/attributesConfig}:addCatalogAttribute"
  157. body: "*"
  158. };
  159. }
  160. // Removes the specified
  161. // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] from the
  162. // [AttributesConfig][google.cloud.retail.v2beta.AttributesConfig].
  163. //
  164. // If the [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] to
  165. // remove does not exist, a NOT_FOUND error is returned.
  166. rpc RemoveCatalogAttribute(RemoveCatalogAttributeRequest)
  167. returns (AttributesConfig) {
  168. option (google.api.http) = {
  169. post: "/v2beta/{attributes_config=projects/*/locations/*/catalogs/*/attributesConfig}:removeCatalogAttribute"
  170. body: "*"
  171. };
  172. }
  173. // Removes all specified
  174. // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute]s from the
  175. // [AttributesConfig][google.cloud.retail.v2beta.AttributesConfig].
  176. rpc BatchRemoveCatalogAttributes(BatchRemoveCatalogAttributesRequest)
  177. returns (BatchRemoveCatalogAttributesResponse) {
  178. option (google.api.http) = {
  179. post: "/v2beta/{attributes_config=projects/*/locations/*/catalogs/*/attributesConfig}:batchRemoveCatalogAttributes"
  180. body: "*"
  181. };
  182. }
  183. // Replaces the specified
  184. // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] in the
  185. // [AttributesConfig][google.cloud.retail.v2beta.AttributesConfig] by updating
  186. // the catalog attribute with the same
  187. // [CatalogAttribute.key][google.cloud.retail.v2beta.CatalogAttribute.key].
  188. //
  189. // If the [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] to
  190. // replace does not exist, a NOT_FOUND error is returned.
  191. rpc ReplaceCatalogAttribute(ReplaceCatalogAttributeRequest)
  192. returns (AttributesConfig) {
  193. option (google.api.http) = {
  194. post: "/v2beta/{attributes_config=projects/*/locations/*/catalogs/*/attributesConfig}:replaceCatalogAttribute"
  195. body: "*"
  196. };
  197. }
  198. }
  199. // Request for
  200. // [CatalogService.ListCatalogs][google.cloud.retail.v2beta.CatalogService.ListCatalogs]
  201. // method.
  202. message ListCatalogsRequest {
  203. // Required. The account resource name with an associated location.
  204. //
  205. // If the caller does not have permission to list
  206. // [Catalog][google.cloud.retail.v2beta.Catalog]s under this location,
  207. // regardless of whether or not this location exists, a PERMISSION_DENIED
  208. // error is returned.
  209. string parent = 1 [
  210. (google.api.field_behavior) = REQUIRED,
  211. (google.api.resource_reference) = {
  212. type: "locations.googleapis.com/Location"
  213. }
  214. ];
  215. // Maximum number of [Catalog][google.cloud.retail.v2beta.Catalog]s to return.
  216. // If unspecified, defaults to 50. The maximum allowed value is 1000. Values
  217. // above 1000 will be coerced to 1000.
  218. //
  219. // If this field is negative, an INVALID_ARGUMENT is returned.
  220. int32 page_size = 2;
  221. // A page token
  222. // [ListCatalogsResponse.next_page_token][google.cloud.retail.v2beta.ListCatalogsResponse.next_page_token],
  223. // received from a previous
  224. // [CatalogService.ListCatalogs][google.cloud.retail.v2beta.CatalogService.ListCatalogs]
  225. // call. Provide this to retrieve the subsequent page.
  226. //
  227. // When paginating, all other parameters provided to
  228. // [CatalogService.ListCatalogs][google.cloud.retail.v2beta.CatalogService.ListCatalogs]
  229. // must match the call that provided the page token. Otherwise, an
  230. // INVALID_ARGUMENT error is returned.
  231. string page_token = 3;
  232. }
  233. // Response for
  234. // [CatalogService.ListCatalogs][google.cloud.retail.v2beta.CatalogService.ListCatalogs]
  235. // method.
  236. message ListCatalogsResponse {
  237. // All the customer's [Catalog][google.cloud.retail.v2beta.Catalog]s.
  238. repeated Catalog catalogs = 1;
  239. // A token that can be sent as
  240. // [ListCatalogsRequest.page_token][google.cloud.retail.v2beta.ListCatalogsRequest.page_token]
  241. // to retrieve the next page. If this field is omitted, there are no
  242. // subsequent pages.
  243. string next_page_token = 2;
  244. }
  245. // Request for
  246. // [CatalogService.UpdateCatalog][google.cloud.retail.v2beta.CatalogService.UpdateCatalog]
  247. // method.
  248. message UpdateCatalogRequest {
  249. // Required. The [Catalog][google.cloud.retail.v2beta.Catalog] to update.
  250. //
  251. // If the caller does not have permission to update the
  252. // [Catalog][google.cloud.retail.v2beta.Catalog], regardless of whether or not
  253. // it exists, a PERMISSION_DENIED error is returned.
  254. //
  255. // If the [Catalog][google.cloud.retail.v2beta.Catalog] to update does not
  256. // exist, a NOT_FOUND error is returned.
  257. Catalog catalog = 1 [(google.api.field_behavior) = REQUIRED];
  258. // Indicates which fields in the provided
  259. // [Catalog][google.cloud.retail.v2beta.Catalog] to update.
  260. //
  261. // If an unsupported or unknown field is provided, an INVALID_ARGUMENT error
  262. // is returned.
  263. google.protobuf.FieldMask update_mask = 2;
  264. }
  265. // Request message to set a specified branch as new default_branch.
  266. message SetDefaultBranchRequest {
  267. // Full resource name of the catalog, such as
  268. // `projects/*/locations/global/catalogs/default_catalog`.
  269. string catalog = 1 [
  270. (google.api.resource_reference) = { type: "retail.googleapis.com/Catalog" }
  271. ];
  272. // The final component of the resource name of a branch.
  273. //
  274. // This field must be one of "0", "1" or "2". Otherwise, an INVALID_ARGUMENT
  275. // error is returned.
  276. //
  277. // If there are no sufficient active products in the targeted branch and
  278. // [force][google.cloud.retail.v2beta.SetDefaultBranchRequest.force] is not
  279. // set, a FAILED_PRECONDITION error is returned.
  280. string branch_id = 2 [
  281. (google.api.resource_reference) = { type: "retail.googleapis.com/Branch" }
  282. ];
  283. // Some note on this request, this can be retrieved by
  284. // [CatalogService.GetDefaultBranch][google.cloud.retail.v2beta.CatalogService.GetDefaultBranch]
  285. // before next valid default branch set occurs.
  286. //
  287. // This field must be a UTF-8 encoded string with a length limit of 1,000
  288. // characters. Otherwise, an INVALID_ARGUMENT error is returned.
  289. string note = 3;
  290. // If set to true, it permits switching to a branch with
  291. // [branch_id][google.cloud.retail.v2beta.SetDefaultBranchRequest.branch_id]
  292. // even if it has no sufficient active products.
  293. bool force = 4;
  294. }
  295. // Request message to show which branch is currently the default branch.
  296. message GetDefaultBranchRequest {
  297. // The parent catalog resource name, such as
  298. // `projects/*/locations/global/catalogs/default_catalog`.
  299. string catalog = 1 [
  300. (google.api.resource_reference) = { type: "retail.googleapis.com/Catalog" }
  301. ];
  302. }
  303. // Response message of
  304. // [CatalogService.GetDefaultBranch][google.cloud.retail.v2beta.CatalogService.GetDefaultBranch].
  305. message GetDefaultBranchResponse {
  306. // Full resource name of the branch id currently set as default branch.
  307. string branch = 1 [
  308. (google.api.resource_reference) = { type: "retail.googleapis.com/Branch" }
  309. ];
  310. // The time when this branch is set to default.
  311. google.protobuf.Timestamp set_time = 2;
  312. // This corresponds to
  313. // [SetDefaultBranchRequest.note][google.cloud.retail.v2beta.SetDefaultBranchRequest.note]
  314. // field, when this branch was set as default.
  315. string note = 3;
  316. }
  317. // Request for
  318. // [CatalogService.GetCompletionConfig][google.cloud.retail.v2beta.CatalogService.GetCompletionConfig]
  319. // method.
  320. message GetCompletionConfigRequest {
  321. // Required. Full CompletionConfig resource name. Format:
  322. // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/completionConfig`
  323. string name = 1 [
  324. (google.api.field_behavior) = REQUIRED,
  325. (google.api.resource_reference) = {
  326. type: "retail.googleapis.com/CompletionConfig"
  327. }
  328. ];
  329. }
  330. // Request for
  331. // [CatalogService.UpdateCompletionConfig][google.cloud.retail.v2beta.CatalogService.UpdateCompletionConfig]
  332. // method.
  333. message UpdateCompletionConfigRequest {
  334. // Required. The
  335. // [CompletionConfig][google.cloud.retail.v2beta.CompletionConfig] to update.
  336. //
  337. // If the caller does not have permission to update the
  338. // [CompletionConfig][google.cloud.retail.v2beta.CompletionConfig], then a
  339. // PERMISSION_DENIED error is returned.
  340. //
  341. // If the [CompletionConfig][google.cloud.retail.v2beta.CompletionConfig] to
  342. // update does not exist, a NOT_FOUND error is returned.
  343. CompletionConfig completion_config = 1
  344. [(google.api.field_behavior) = REQUIRED];
  345. // Indicates which fields in the provided
  346. // [CompletionConfig][google.cloud.retail.v2beta.CompletionConfig] to update.
  347. // The following are the only supported fields:
  348. //
  349. // * [CompletionConfig.matching_order][google.cloud.retail.v2beta.CompletionConfig.matching_order]
  350. // * [CompletionConfig.max_suggestions][google.cloud.retail.v2beta.CompletionConfig.max_suggestions]
  351. // * [CompletionConfig.min_prefix_length][google.cloud.retail.v2beta.CompletionConfig.min_prefix_length]
  352. // * [CompletionConfig.auto_learning][google.cloud.retail.v2beta.CompletionConfig.auto_learning]
  353. //
  354. // If not set, all supported fields are updated.
  355. google.protobuf.FieldMask update_mask = 2;
  356. }
  357. // Request for
  358. // [CatalogService.GetAttributesConfig][google.cloud.retail.v2beta.CatalogService.GetAttributesConfig]
  359. // method.
  360. message GetAttributesConfigRequest {
  361. // Required. Full AttributesConfig resource name. Format:
  362. // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/attributesConfig`
  363. string name = 1 [
  364. (google.api.field_behavior) = REQUIRED,
  365. (google.api.resource_reference) = {
  366. type: "retail.googleapis.com/AttributesConfig"
  367. }
  368. ];
  369. }
  370. // Request for
  371. // [CatalogService.UpdateAttributesConfig][google.cloud.retail.v2beta.CatalogService.UpdateAttributesConfig]
  372. // method.
  373. message UpdateAttributesConfigRequest {
  374. // Required. The
  375. // [AttributesConfig][google.cloud.retail.v2beta.AttributesConfig] to update.
  376. AttributesConfig attributes_config = 1
  377. [(google.api.field_behavior) = REQUIRED];
  378. // Indicates which fields in the provided
  379. // [AttributesConfig][google.cloud.retail.v2beta.AttributesConfig] to update.
  380. // The following is the only supported field:
  381. //
  382. // * [AttributesConfig.catalog_attributes][google.cloud.retail.v2beta.AttributesConfig.catalog_attributes]
  383. //
  384. // If not set, all supported fields are updated.
  385. google.protobuf.FieldMask update_mask = 2;
  386. }
  387. // Request for
  388. // [CatalogService.AddCatalogAttribute][google.cloud.retail.v2beta.CatalogService.AddCatalogAttribute]
  389. // method.
  390. message AddCatalogAttributeRequest {
  391. // Required. Full AttributesConfig resource name. Format:
  392. // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/attributesConfig`
  393. string attributes_config = 1 [
  394. (google.api.field_behavior) = REQUIRED,
  395. (google.api.resource_reference) = {
  396. type: "retail.googleapis.com/AttributesConfig"
  397. }
  398. ];
  399. // Required. The
  400. // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] to add.
  401. CatalogAttribute catalog_attribute = 2
  402. [(google.api.field_behavior) = REQUIRED];
  403. }
  404. // Request for
  405. // [CatalogService.RemoveCatalogAttribute][google.cloud.retail.v2beta.CatalogService.RemoveCatalogAttribute]
  406. // method.
  407. message RemoveCatalogAttributeRequest {
  408. // Required. Full AttributesConfig resource name. Format:
  409. // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/attributesConfig`
  410. string attributes_config = 1 [
  411. (google.api.field_behavior) = REQUIRED,
  412. (google.api.resource_reference) = {
  413. type: "retail.googleapis.com/AttributesConfig"
  414. }
  415. ];
  416. // Required. The attribute name key of the
  417. // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] to remove.
  418. string key = 2 [(google.api.field_behavior) = REQUIRED];
  419. }
  420. // Request for
  421. // [CatalogService.BatchRemoveCatalogAttributes][google.cloud.retail.v2beta.CatalogService.BatchRemoveCatalogAttributes]
  422. // method.
  423. message BatchRemoveCatalogAttributesRequest {
  424. // Required. The attributes config resource shared by all catalog attributes
  425. // being deleted. Format:
  426. // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/attributesConfig`
  427. string attributes_config = 1 [
  428. (google.api.field_behavior) = REQUIRED,
  429. (google.api.resource_reference) = {
  430. type: "retail.googleapis.com/AttributesConfig"
  431. }
  432. ];
  433. // Required. The attribute name keys of the
  434. // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute]s to delete.
  435. // A maximum of 1000 catalog attributes can be deleted in a batch.
  436. repeated string attribute_keys = 2 [(google.api.field_behavior) = REQUIRED];
  437. }
  438. // Response of the
  439. // [CatalogService.BatchRemoveCatalogAttributes][google.cloud.retail.v2beta.CatalogService.BatchRemoveCatalogAttributes].
  440. message BatchRemoveCatalogAttributesResponse {
  441. // Catalog attributes that were deleted. Only attributes that are not [in
  442. // use][CatalogAttribute.in_use] by products can be deleted.
  443. repeated string deleted_catalog_attributes = 1;
  444. // Catalog attributes that were reset. Attributes that are [in
  445. // use][CatalogAttribute.in_use] by products cannot be deleted, however their
  446. // configuration properties will reset to default values upon removal request.
  447. repeated string reset_catalog_attributes = 2;
  448. }
  449. // Request for
  450. // [CatalogService.ReplaceCatalogAttribute][google.cloud.retail.v2beta.CatalogService.ReplaceCatalogAttribute]
  451. // method.
  452. message ReplaceCatalogAttributeRequest {
  453. // Required. Full AttributesConfig resource name. Format:
  454. // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/attributesConfig`
  455. string attributes_config = 1 [
  456. (google.api.field_behavior) = REQUIRED,
  457. (google.api.resource_reference) = {
  458. type: "retail.googleapis.com/AttributesConfig"
  459. }
  460. ];
  461. // Required. The updated
  462. // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute].
  463. CatalogAttribute catalog_attribute = 2
  464. [(google.api.field_behavior) = REQUIRED];
  465. // Indicates which fields in the provided
  466. // [CatalogAttribute][google.cloud.retail.v2beta.CatalogAttribute] to update.
  467. // The following are NOT supported:
  468. //
  469. // * [CatalogAttribute.key][google.cloud.retail.v2beta.CatalogAttribute.key]
  470. //
  471. // If not set, all supported fields are updated.
  472. google.protobuf.FieldMask update_mask = 3;
  473. }