از روش UpdateCssProductInput با مشخص کردن محصول cssProductInput.name
و بدنه JSON حاوی دادههایی که میخواهید برای محصول بهروزرسانی کنید، یک محصول CSS موجود را بهروزرسانی کنید.
توجه : این روش فقط ویژگی های ارائه شده در درخواست به روز رسانی را به روز می کند. پاسخ شامل همان ویژگیهای درخواست است و وضعیت کامل CssProductInput
را پس از اعمال بهروزرسانی نشان نمیدهد. برای تعیین وضعیت نهایی CssProductInput
نباید به پاسخ تکیه کنید.
PATCH https://css.googleapis.com/v1/accounts/{ACCOUNT_ID}/cssProductInputs/{CSS_PRODUCT_ID}
برای افزودن یا اصلاح یک ویژگی در یک محصول، فیلد را با مقدار جدید در بدنه JSON مشخص کنید. مثال نشان داده شده پیوند عنوان و عنوان پیشنهاد نام محصول موجود 123/cssProductInputs/de~DE~B019G4
با مقدار مشخصه ارائه شده در بدنه درخواست به روز می کند و همه فیلدهای دیگر را دست نخورده باقی می گذارد.
HTTP
PATCH https://css.googleapis.com/v1/accounts/{ACCOUNT_ID}/cssProductInputs/{CSS_PRODUCT_ID}
{
"attributes": {
"title": "new item title",
"headlineOfferLink": "headline-offer.com"
}
}
CURL
curl --location --request PATCH 'https://css.googleapis.com/v1/accounts/{ACCOUNT_ID}/cssProductInputs/{CSS_PRODUCT_ID}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API_TOKEN>' \
--data '{"attributes":{"numberOfOffers":"99","headlineOfferPrice":{"currency_code":"EUR","amount_micros":"1200000"}}}'
جاوا
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package shopping.css.samples.v1.cssproducts;
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.protobuf.FieldMask;
import com.google.shopping.css.v1.CssProductInput;
import com.google.shopping.css.v1.CssProductInputsServiceClient;
import com.google.shopping.css.v1.CssProductInputsServiceSettings;
import com.google.shopping.css.v1.UpdateCssProductInputRequest;
import shopping.css.samples.utils.Authenticator;
import shopping.css.samples.utils.Config;
/** This class demonstrates how to update a CSS Product for a given Account */
public class UpdateCssProductInput {
private static String getName(String domainId, String productId) {
return String.format("accounts/%s/cssProductInputs/%s", domainId, productId);
}
public static void updateCssProductInput(Config config, String productId) throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
String name = getName(config.getDomainId().toString(), productId);
CssProductInputsServiceSettings cssProductInputsServiceSettings =
CssProductInputsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
try (CssProductInputsServiceClient cssProductInputsServiceClient =
CssProductInputsServiceClient.create(cssProductInputsServiceSettings)) {
// Updates the title of the CSS Product leaving the rest of the fields unchanged
UpdateCssProductInputRequest request =
UpdateCssProductInputRequest.newBuilder()
.setCssProductInput(
CssProductInput.newBuilder()
.setName(name)
.setAttributes(
com.google.shopping.css.v1.Attributes.newBuilder()
.setTitle("Attribute Title")
.setHeadlineOfferLink("abc.com")
.setHeadlineOfferCondition("New")
.setDescription("CSS Product description 0")
.build())
.build())
.setUpdateMask(FieldMask.newBuilder().addPaths("title").build())
.build();
System.out.println("Updating CSS Product");
CssProductInput response = cssProductInputsServiceClient.updateCssProductInput(request);
System.out.print("CSS product updated:");
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
final Config config = Config.load();
// The ID uniquely identifying each product. In
// the format languageCode~countryCode~rawProvidedId
final String productId = "de~DE~rawProvidedId17";
updateCssProductInput(config, productId);
}
}
فقط فیلدهای سطح بالا را می توان با درخواست cssProductInputs.update
به روز کرد. اگر میخواهید فیلدهای تودرتو را بهروزرسانی کنید، باید کل شی سطح بالا را ارائه دهید.
مثال نشان داده شده، شی سطح بالای headlineOfferPrice
، از جمله فیلدهای تودرتوی یک محصول موجود، را با داده های محصول ارائه شده در بدنه درخواست به روز می کند و همه فیلدهای دیگر را دست نخورده باقی می گذارد.
PATCH https://css.googleapis.com/v1/accounts/{ACCOUNT_ID}/cssProductInputs/{CSS_PRODUCT_ID}
{
"attributes": {
"headlineOfferPrice": {
"amountMicros": "17.99",
"currencyCode": "USD"
}
}
}
برای انتخاب فیلدهای خاص برای به روز رسانی بدون ایجاد تغییرات در قسمت های دیگر موجود در متن درخواست، می توانید یک updateMask
مشخص کنید. این پارامتر رشته پرس و جو باید فهرستی از فیلدهایی باشد که باید با ویرگول از هم جدا شده باشند. updateMask
زمانی مفید است که می خواهید ادعا کنید که فقط فیلدهای نامگذاری شده به روز می شوند. همانطور که در مثال نشان داده شده است، مشخص نکردن updateMask
معادل علامت گذاری تمام فیلدهای درخواست به روز رسانی است. با این حال، اگر یک updateMask
به طور صریح ارائه نشده باشد، امکان حذف ویژگی های موجود وجود ندارد.
مثال نشان داده شده تنها title
مورد موجود را با داده های محصول مربوطه ارائه شده در بدنه درخواست به روز می کند و همه فیلدهای دیگر از جمله headline offer link
دست نخورده می گذارد.
PATCH https://css.googleapis.com/v1/accounts/{ACCOUNT_ID}/cssProductInputs/{CSS_PRODUCT_ID}?updateMask=title
{
"attributes": {
"title":"item-title",
"headlineOfferLink":"headline-offer-newer.com"
}
}
اگر فیلدی در لیست updateMask ارائه شده باشد اما در متن درخواست نباشد، در صورت وجود آن فیلد از منبع Product حذف خواهد شد.
مثال نشان داده شده از updateMask برای حذف مقدار title
فیلد استفاده می کند.
PATCH https://css.googleapis.com/v1/accounts/{ACCOUNT_ID}/cssProductInputs/{CSS_PRODUCT_ID}?updateMask=title
ACCOUNT_ID : شناسه منحصر به فرد برای حساب، به عنوان مثال، 123
.
CSS_PRODUCT_ID : شناسه محصول CSS، به عنوان مثال، de~DE~B019G4
.
برای حذف قسمت title
، آن را از بدنه درخواست خارج کنید. همچنین می توانید درخواست را بدون بدنه یا بدنه خالی ارسال کنید. فیلدهایی که در updateMask نیستند بدون تغییر می مانند.