/// <summary>
 /// Updates the [Catalog][google.cloud.retail.v2.Catalog]s.
 /// </summary>
 /// <param name="catalog">
 /// Required. The [Catalog][google.cloud.retail.v2.Catalog] to update.
 ///
 /// If the caller does not have permission to update the
 /// [Catalog][google.cloud.retail.v2.Catalog], regardless of whether or not it
 /// exists, a PERMISSION_DENIED error is returned.
 ///
 /// If the [Catalog][google.cloud.retail.v2.Catalog] to update does not exist,
 /// a NOT_FOUND error is returned.
 /// </param>
 /// <param name="updateMask">
 /// Indicates which fields in the provided
 /// [Catalog][google.cloud.retail.v2.Catalog] to update. If not set, will only
 /// update the
 /// [Catalog.product_level_config][google.cloud.retail.v2.Catalog.product_level_config]
 /// field, which is also the only currently supported field to update.
 ///
 /// If an unsupported or unknown field is provided, an INVALID_ARGUMENT error
 /// is returned.
 /// </param>
 /// <param name="cancellationToken">A <see cref="st::CancellationToken"/> to use for this RPC.</param>
 /// <returns>A Task containing the RPC response.</returns>
 public virtual stt::Task <Catalog> UpdateCatalogAsync(Catalog catalog, wkt::FieldMask updateMask, st::CancellationToken cancellationToken) =>
 UpdateCatalogAsync(catalog, updateMask, gaxgrpc::CallSettings.FromCancellationToken(cancellationToken));
 /// <summary>
 /// Updates the [Catalog][google.cloud.retail.v2.Catalog]s.
 /// </summary>
 /// <param name="catalog">
 /// Required. The [Catalog][google.cloud.retail.v2.Catalog] to update.
 ///
 /// If the caller does not have permission to update the
 /// [Catalog][google.cloud.retail.v2.Catalog], regardless of whether or not it
 /// exists, a PERMISSION_DENIED error is returned.
 ///
 /// If the [Catalog][google.cloud.retail.v2.Catalog] to update does not exist,
 /// a NOT_FOUND error is returned.
 /// </param>
 /// <param name="updateMask">
 /// Indicates which fields in the provided
 /// [Catalog][google.cloud.retail.v2.Catalog] to update. If not set, will only
 /// update the
 /// [Catalog.product_level_config][google.cloud.retail.v2.Catalog.product_level_config]
 /// field, which is also the only currently supported field to update.
 ///
 /// If an unsupported or unknown field is provided, an INVALID_ARGUMENT error
 /// is returned.
 /// </param>
 /// <param name="callSettings">If not null, applies overrides to this RPC call.</param>
 /// <returns>A Task containing the RPC response.</returns>
 public virtual stt::Task <Catalog> UpdateCatalogAsync(Catalog catalog, wkt::FieldMask updateMask, gaxgrpc::CallSettings callSettings = null) =>
 UpdateCatalogAsync(new UpdateCatalogRequest
 {
     Catalog    = gax::GaxPreconditions.CheckNotNull(catalog, nameof(catalog)),
     UpdateMask = updateMask,
 }, callSettings);