עדכון המלאי ב-AI Commerce Search

בדף הזה מוסבר איך לנהל עדכונים בזמן אמת של מחירים וכמויות בקטלוג של AI Commerce Search באמצעות AI Commerce Search API.

בזמן ששיטות Product ליצירה, לקריאה, לעדכון ולמחיקה (CRUD) משמשות לשינוי רחב של מאפייני Product, יש קבוצה של שיטות Product שאפשר להשתמש בהן לעדכון שדות ספציפיים למלאי ברמות שונות של גרנולריות.

הסבר על מלאי שטחי פרסום

באופן כללי, מלאי מתייחס בדרך כלל לרמות המלאי (כמות) ולמחיר של פריטים באתר מסחר אלקטרוני. ב-AI Commerce Search API,‏ inventory מתייחס למחיר, לזמינות, לכמות הזמינה, לפרטי המשלוח, למחיר המקומי ולמאפיינים מקומיים נוספים. השדות האלה מוגדרים בסכימת המוצר עם השדות הבאים:

מלאי ברמת המוצר

למוכרים עם אתר למסחר אלקטרוני וקטלוג מוצרים באינטרנט בלבד, הערך inventory בדרך כלל מייצג רק את המוצרים בקטלוג. המחיר, הזמינות וכל הנתונים האחרים מוגדרים בכל רשומה של מוצר בקטלוג. לא נעשה שימוש בשדות fulfillmentInfo ו-localInventories.

מלאי בחנות מקומית

קמעונאים שיש להם כמה מיקומים יכולים להוסיף נתוני מלאי מקומי (מחיר, זמינות ומשלוח) למיקומים (placeId) של מוצר באמצעות השיטה addLocalInventories. המוצרים עדיין מיוצגים על ידי רשומות המוצרים בקטלוג.

יש שני שדות נפרדים של מוצרים שמשמשים למלאי של חנויות מקומיות: Product.fulfillmentInfo ו-Product.localInventories. אפשר להשתמש באחת מהן או בשתיהן, בהתאם לדרישות. גם fulfillmentInfo וגם localInventories הן רשימות של מיקומים עם נתונים משויכים.

המאפיין fulfillmentInfo מציין איך המוצר נמכר במיקום מסוים, והמאפיין localInventories מציין את המחיר ומאפיינים מותאמים אישית אחרים לכל מיקום.

כדי לסמן מוצר כחסר במלאי או כלא זמין יותר במיקום מסוים, משתמשים בשיטה removeLocalInventories כדי להסיר את הערכים fulfillment ו-inventory ממוצר בplaceId מסוים.

שיטות לעדכון מלאי שטחי הפרסום

יכול להיות ששינויים בפרטי המלאי של מוצר יתרחשו בתדירות גבוהה בהרבה משינויים בפרטי הקטלוג שלו. לכן, אנחנו מספקים קבוצה ייעודית של שיטות לטיפול בעדכונים של כמויות גדולות של נתוני מלאי. השיטות האלה הן אסינכרוניות בגלל אופטימיזציות במורד הזרם שתומכות במאות עדכונים בו-זמניים לכל מוצר, בלי לפגוע בביצועים.

עדכונים מצטברים

כדי לשלוח עדכוני מלאי מצטברים, פועלים לפי המדריך לעדכוני מלאי של חנויות מקומיות. ה-methods החדשות יותר של ה-API מספקות שליטה מדויקת יותר במאפייני מלאי שטחי הפרסום בכל מיקום.

הערך fulfillment_info משמש לעיתים קרובות לקידוד של זמינות אספקת המוצר ברמת המקום עבור Product. במקרים מסוימים, יכול להיות שזמינות המימוש של חלק מהמקומות הספציפיים תשתנה. אתם יכולים להחליט לשלוח עדכונים שמתארים את השינוי הזה, במקום להשתמש בשיטה UpdateProduct כדי לציין מחדש את כל פרטי הביצוע של המוצר.

במקרים כאלה, אפשר להשתמש בשיטות AddFulfillmentPlaces ו-RemoveFulfillmentPlaces כדי לעדכן בהדרגה את שינויי המשלוח של מוצר מסוים, על סמך מזהי המקומות שנוספו או הוסרו לסוג משלוח מסוים.

Java

מידע על התקנת ספריית הלקוח של AI Commerce Search ושימוש בה מופיע במאמר ספריות הלקוח של AI Commerce Search. מידע נוסף מופיע במאמרי העזרה של AI Commerce Search Java API.

כדי לבצע אימות ב-AI Commerce Search, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

public static AddFulfillmentPlacesResponse addFulfillmentPlaces(
    Product productToUpdate, String fulfillmentInfoType, ImmutableList<String> placeIds)
    throws IOException, InterruptedException, ExecutionException {
  ProductServiceClient productClient = getProductServiceClient();

  AddFulfillmentPlacesRequest request = AddFulfillmentPlacesRequest.newBuilder()
      .setProduct(productToUpdate.getName())
      .setType(fulfillmentInfoType)
      .addAllPlaceIds(placeIds)
      .setAddTime(Timestamps.fromMillis(System.currentTimeMillis()))
      .build();

  AddFulfillmentPlacesResponse response = productClient
      .addFulfillmentPlacesAsync(request).get();

  productClient.shutdownNow();
  productClient.awaitTermination(2, TimeUnit.SECONDS);

  return response;
}

Proto

  {
    product: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch/products/p123"
    type: "pickup-in-store"
    place_ids: "store0"
    place_ids: "store1"
    add_time: {
      seconds: 100
      nanos: 100
    }
    allow_missing: true
  }
  

בדוגמה הזו AddFulfillmentPlacesRequest נוסף סוג ההזמנה "pickup-in-store" למזהי המקומות "store0" ו-"store1" עבור המוצר שצוין. מכיוון שהערך של AddFulfillmentPlacesRequest.allow_missing מוגדר כ-true, גם אם המוצר עדיין לא קיים, פרטי המלאי המעודכנים יישמרו עד שהמוצר ייווצר. העדכון מוטבע בחותמת זמן עם הערך AddFulfillmentPlacesRequest.add_time כדי למנוע מעדכונים ישנים לדרוס את סטטוס הביצוע של מזהי המקומות האלה. התכונות האלה מוסברות בפירוט בקטעים הבאים.

ההתנהגות זהה ל-RemoveFulfillmentPlacesRequest והסכימה דומה מאוד.

כש-fulfillment_types מתעדכן על ידי AddLocalInventories ו-RemoveLocalInventories, הוא משקף מיפוי מכל מזהה מקום לרשימה של סוגי מימוש שהוא תומך בהם. כש-fulfillment_info מתעדכן על ידי AddFulfillmentPlaces ו-RemoveFulfillmentPlaces, הוא משקף מיפוי מכל סוג ספציפי של מילוי הזמנה לרשימה של מזהי מקומות שתומכים בכל סוג. שני סוגי ה-API משנים את אותם נתוני מימוש בסיסיים, וההשפעה של שני סוגי ה-API משתקפת בערך Product.fulfillment_info.

עדכונים לא מצטברים

אי אפשר לעדכן את השיטות price_info,‏ availability ו-available_quantity באופן מצטבר, כי הן מייצגות מלאי ברמת המוצר ולא מידע ברמת המקום. מומלץ גם להוציא עדכונים לא מצטברים ל-fulfillment_info. במקום שינויים הדרגתיים בלבד, מומלץ להשתמש בSetInventory.

השיטה המומלצת לעדכון המחיר, הזמינות והכמות ברמת המוצר, כשנדרשים עדכונים רבים ותכופים, היא השיטה setInventory. השיטה setInventory היא אסינכרונית, ולכן יכול להיות שהעדכונים לא יתבצעו באופן מיידי. מכסת ברירת המחדל (300,000 בקשות בדקה) תומכת בהרבה יותר בקשות מאשר UpdateProduct.

בנוסף, השיטה setInventory משמשת לעדכונים של מידע על אספקת מוצרים בחנויות מקומיות כשפרמטר fulfillmentInfo נכלל בבקשה, אבל אי אפשר לעדכן את השדות localInventories. למאפיינים האלה, צריך להשתמש בשיטות addLocalInventories ו-removeLocalInventories.

נתוני המלאי בחנויות מקומיות נשמרים ברמת החנות, בנפרד מהקטלוג. אם יש לכם מלאי אונליין ומלאי בחנויות הפיזיות, אתם יכולים להשתמש בקטלוג המוצרים הראשי למלאי אונליין, או להשתמש בplaceId ספציפי (לדוגמה, -1 או online) כדי לייצג את המלאי אונליין. עם זאת, צריך להשתמש בקטלוג הראשי למלאי אונליין, כי בשדות המלאי של המוצרים צריך להזין ערכים תקינים של priceInfo ו-availability. אם משתמשים בפיד מלאי נפרד placeId למוצרים אונליין, צריך לדאוג לעדכן גם את המחיר והזמינות של המוצרים בקטלוג הראשי. מידע נוסף על עדכוני מלאי בחנויות מקומיות זמין במאמר עדכון מלאי בחנויות מקומיות.

Java

מידע על התקנת ספריית הלקוח של AI Commerce Search ושימוש בה מופיע במאמר ספריות הלקוח של AI Commerce Search. מידע נוסף מופיע במאמרי העזרה של AI Commerce Search Java API.

כדי לבצע אימות ב-AI Commerce Search, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

public static SetInventoryResponse setInventoryWithMask(Product productToUpdate,
    FieldMask updateMask)
    throws IOException, ExecutionException, InterruptedException {
  ProductServiceClient productClient = getProductServiceClient();

  SetInventoryRequest request = SetInventoryRequest.newBuilder()
      .setInventory(productToUpdate)
      .setSetMask(updateMask)
      .setSetTime(Timestamps.fromMillis(System.currentTimeMillis()))
      .setAllowMissing(true)
      .build();

  SetInventoryResponse response = productClient.setInventoryAsync(request).get();

  productClient.shutdownNow();
  productClient.awaitTermination(2, TimeUnit.SECONDS);

  return response;
}

Proto

  {
    product: {
      name: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch/products/p123"
      availability: IN_STOCK
      fulfillment_info: {
        type: "pickup-in-store"
        place_ids: "store0"
        place_ids: "store1"
        place_ids: "store2"
        place_ids: "store3"
      }
      fulfillment_info: {
        type: "same-day-delivery"
      }
    }
    set_time: {
      seconds: 100
      nanos: 100
    }
    set_mask: {
      paths: "availability"
      paths: "fulfillment_info"
    }
    allow_missing: true
  }
  

בבקשה הזו, השדות SetInventoryRequest.product.fulfillment_info מכילים תיאורים מלאים של מזהי המקומות שמתאימים לכל סוג של משלוח, ולא מפרטים מצטברים. העדכון ל"same-day-delivery" מציין שאין מזהי מקומות שעומדים בדרישות לסוג המשלוח הזה עבור המוצר הזה. כל שאר סוגי המימוש לא מתעדכנים בבקשה הזו. לכן, אפשר להשתמש בשיטה הזו כדי להחליף את מזהי המקומות רק עבור קבוצת משנה של סוגי אספקה, בלי לשנות את הסוגים האחרים.

כברירת מחדל,SetInventory יעודכן בכל השדות של מלאי שטחי הפרסום אם SetInventory.set_mask לא מוגדר או ריק. אם המסכה לא ריקה או אם שדה מלאי לא מופיע באופן מפורש ב-SetInventoryRequest.set_mask, המערכת תתעלם מכל ערך שצוין בשדה המלאי הזה בבקשת העדכון.

בדומה לעדכונים מצטברים, אפשר להשתמש בשדה SetInventoryRequest.set_time כדי להגדיר שעת עדכון שתהיה ביחס לשעת העדכון האחרונה שנרשמה של כל שדות מלאי שטחי הפרסום שעודכנו.

הגנות על חותמות זמן לעדכוני מלאי

יש כמה דרכים לעדכן את שדות המלאי של מוצר, וכדי למנוע עדכונים לא מסודרים, כל שדה מלאי משויך לזמן העדכון האחרון.

שעת העדכון האחרון מתועדת עבור price_info, availability, available_quantity וכל זוג של (fulfillment_info.place_ids, fulfillment_info.type).

השיטות AddFulfillmentPlaces,‏ RemoveFulfillmentPlaces ו-SetInventory מאפשרות למבצע הקריאה לציין זמן עדכון שבו הבקשה תונפק. העדכון יתבצע רק אם השעה שבה הוא בוצע מאוחרת מהשעה שבה בוצע העדכון האחרון של שדות המלאי הרלוונטיים.

לדוגמה, נניח שמזהה המקום "store1" מוגדר עם סוג אספקה "pickup-in- store", ומועד העדכון האחרון שנרשם הוא T. אם RemoveFulfillmentPlacesRequest.type = "pickup-in-store" ו-RemoveFulfillmentPlacesRequest.place_ids מכילים את "store1", הבקשה תנקה את "pickup-in-store" מ-"store1" אם ורק אם RemoveFulfillmentPlacesRequest.remove_time מאוחר יותר מהזמן T. אותו הדבר נכון לגבי AddFulfillmentPlacesRequests.

SetInventory פועל באופן דומה גם לעדכון של price_info,‏ availability ו-available_quantity. כשמעדכנים את fulfillment_info,‏ SetInventoryRequest מבקש באופן מרומז להוסיף את כל מזהי המקומות שצוינו לסוג מסוים של מימוש, ולהסיר את כל מזהי המקומות הקיימים שלא צוינו.

כשמערכת Google מעבדת את SetInventoryRequest, העדכון fulfillment_info מומר באופן מרומז ל-AddFulfillmentPlacesRequest ול-RemoveFulfillmentPlacesRequest לכל סוג מילוי הזמנה שצוין. המשמעות היא שאם יש מקום קיים "store1" עם אפשרות מימוש "pickup-in-store" שזמן העדכון האחרון שלו T עדכני יותר מ-SetInventoryRequest.set_time, לא יחולו ההוספה או ההסרה המרומזות ב-"store1" וב-"pickup-in-store".

מאפייני טרום-טעינה

setInventory הוא אסינכרוני, כלומר לא נאכפים אמצעי בקרה טקסונומיים או רפרנסיאליים כשמוסיפים או משנים שדות של מלאי שטחי פרסום. בשיטה הזו לא נדרש שהמוצר שאליו מתייחסת הבקשה כבר יהיה קיים.

כך הלקוחות יכולים להטמיע דפוסי טעינה מראש, שבהם אפשר להפריד את הניהול של שדות המלאי מתהליך הייבוא של הקטלוג הראשי או של המוצרים. לדוגמה, משתמשים יכולים לייבא את ההקשר של הזמינות או המחיר לפני שמייבאים את המוצר המשויך.

כל אחת משיטות העדכון של מלאי שטחי הפרסום מאפשרת למשתמש שקורא לשיטה להגדיר את allow_missing בבקשה. אם המדיניות allow_missing מוגדרת כ-true, עדכון מלאי של Product שלא קיים יעובד כאילו Product קיים, בהתאם למפרט של ה-method. פרטי המלאי יישמרו למשך יומיים לכל היותר אם קובץ ה-Product המתאים לא ייווצר באמצעות CreateProduct בפרק הזמן הזה.

Java

public static SetInventoryResponse setInventory(Product productToUpdate)
    throws IOException, ExecutionException, InterruptedException {
  ProductServiceClient productClient = getProductServiceClient();

  SetInventoryRequest request = SetInventoryRequest.newBuilder()
      .setInventory(productToUpdate)
      .setSetTime(Timestamps.fromMillis(System.currentTimeMillis()))
      .setAllowMissing(true)
      .build();

  SetInventoryResponse response = productClient.setInventoryAsync(request).get();

  productClient.shutdownNow();
  productClient.awaitTermination(2, TimeUnit.SECONDS);

  return response;
}

מתי כדאי להשתמש בשיטות Product

אפשר לעדכן שדות מלאי באמצעות שיטות CRUD של מוצרים, אבל חשוב שהמתקשר יהיה מודע להשפעות על נתוני מלאי קיימים או על נתוני מלאי שהיו קיימים לפני כן.

אלה שיטות סינכרוניות, כלומר האופטימיזציות במורד הזרם שמשמשות לשיטות מלאי לא חלות, והשימוש בשיטות האלה לעדכונים תכופים של מלאי עלול להיות יקר. כדאי להשתמש בשיטות שצוינו לעיל לעדכון המלאי, בכל מקום שבו הדבר אפשרי.

CreateProduct

כשמפעילים את CreateProduct עם שדות מלאי כלשהם, הערכים שצוינו ב-CreateProductRequest.product יחליפו את הערכים שנטענו מראש בשדות המתאימים. אם לא מוגדרים שדות מלאי, המערכת תשתמש אוטומטית בפרטי מלאי קיימים.

בנוסף, מועד העדכון האחרון של שדות המלאי שהוגדרו כברירת מחדל יאופס למועד הפעלת method.

CreateProduct עם מלאי שנטען מראש

PROTO

{
  parent: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch"
  product_id: "p123"
  product: {
    name: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch/products/p123"
    title: "some product"
    type: VARIANT
  }
}

בדוגמה הזו, לא מוגדרים שדות מלאי למוצר שנוצר, מה שאומר שאם תשתמשו בשיטות לעדכון מלאי, המערכת תשתמש אוטומטית בכל פרטי המלאי שנטענו מראש. האפשרות הזו שימושית אם עדכוני המלאי לא קשורים לעדכוני הקטלוג, ואתם רוצים שפריט Product שנוצר לאחרונה יסתנכרן עם מידע קיים על מלאי.

CreateProduct עם מלאי גלוי

PROTO

{
  parent: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch"
  product_id: "p123"
  product: {
    name: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch/products/p123"
    title: "some product"
    type: VARIANT
    availability: OUT_OF_STOCK
    fulfillment_info: {
      type: "pickup-in-store"
    }
    fulfillment_info: {
      type: "same-day-delivery"
    }
  }
}

בדוגמה הזו, נוצר Product עם שדות מלאי שהוגדרו באופן מפורש. הערכים בשדות האלה יחליפו את כל הערכים הקיימים, והמערכת תתעלם מזמן העדכון האחרון של השדות התואמים. לכן, הערך של המאפיין 'זמינות' של Product שנוצר לאחרונה יהיה OUT_OF_STOCK, ולא יהיו מזהי מקומות שיתמכו בסוגי המימוש "pickup-in-store" ו-"same-day-delivery".

CreateProduct עם פרטי מלאי יכול להיות שימושי אם אתם לא בטוחים שכל פרטי המלאי שנטענו מראש מדויקים, ואתם מעדיפים להגדיר במפורש את המלאי בזמן היצירה של Product כדי לסנכרן באופן מלא את הקטלוג והמלאי.

UpdateProduct

אפשר להשתמש בשיטה UpdateProduct כדי לעדכן מאפיינים ספציפיים בפריט קיים בקטלוג. אפשר לעשות את זה לשדה אחד או לכמה שדות בו-זמנית, ולמוצר אחד או לכמה מוצרים באמצעות שיטת הייבוא. אם משתמשים בשיטת הייבוא בלי המסכה, מתבצעת החלפה.

UpdateProduct משמש לעיתים קרובות לעדכונים בזמן אמת של מחירים וזמינות, אבל אפשר להשתמש בו כדי לעדכן כל שדה בלי לשלוח מחדש את כל הנתונים של מוצר. (בניגוד לcreateMethod או לimportProducts.

היתרון העיקרי בשימוש ב-UpdateProduct הוא שמדובר בבקשה סנכרונית. העדכונים באינדקס (ובחיפוש או בהמלצות) מתבצעים כמעט באופן מיידי. עם זאת, UpdateProduct לא מיועד לעדכונים בתדירות גבוהה מאוד. מכסת ברירת המחדל היא 12,000 בקשות כתיבה של מוצרים לדקה. בדרך כלל, כדאי להשתמש בשיטה הזו רק אם המחיר של פריט משתנה או אם מצב המלאי משתנה (לא לכל ירידה בכמות).

UpdateProduct יכול לשנות רק את המאפיינים ברמת המוצר. אי אפשר להשתמש בו כדי לשנות את מאפייני המלאי של החנות המקומית של localInventories או fulfillmentInfo.

כשמתקשרים באמצעות UpdateProduct או ImportProducts, חשוב לציין את הפרמטר updateMask. ‫updateMask מכיל רשימה של השדות לעדכון. רק השדות שצוינו ב-updateMask יעודכנו, גם אם יעברו עוד שדות בגוף הבקשה. אם לא מצוין updateMask בבקשת עדכון או ייבוא, כל השדות מתעדכנים בדיוק למה שמופיע בגוף הבקשה.

כשמפעילים את UpdateProduct ומסכת השדות UpdateProductRequest.update_mask מכילה שדות מלאי, הערכים שסופקו ב-UpdateProductRequest.product יחליפו את כל הערכים שנטענו מראש בשדות האלה.

בנוסף, מועד העדכון האחרון של שדות המלאי שהוגדרו כברירת מחדל יאופס למועד הפעלת method.

PROTO

{
  product: {
    name: "projects/123/locations/global/catalogs/default_catalog/branches/default_branch/products/p123"
    availability: IN_STOCK
    fulfillment_info: {
      type: "pickup-in-store"
      place_ids: "store0"
      place_ids: "store1"
      place_ids: "store2"
      place_ids: "store3"
    }
    fulfillment_info: {
      type: "same-day-delivery"
    }
  }
  update_mask: {
    paths: "availability"
    paths: "fulfillment_info"
  }
}

הדוגמה הזו דומה מאוד לדוגמה של SetInventory, אבל העדכון חל בלי קשר לזמן העדכון האחרון של כל שדה במלאי שטחי הפרסום.

  • UpdateProduct למלאי יכול להיות שימושי כשצריך לבצע סנכרון מלא של פרטי המלאי תוך התעלמות מהגנות על חותמות זמן.

  • אם מגדירים את UpdateProductRequest.allow_missing ל-true כדי לבצע Productupsert, אפשר לטעון מראש נתוני מלאי באמצעות UpdateProduct. השיטה הזו דורשת הגדרה של שדות ספציפיים בקטלוג, כמו UpdateProductRequest.product.title. לכן, כדאי להשתמש בשיטות לעדכון מלאי במקרים של טעינה מראש.

DeleteProduct

כשמפעילים את DeleteProduct, כל פרטי המלאי הקיימים של המוצר שצוין ב-DeleteProductRequest.name נמחקים, כולל כל הרשומות של זמן העדכון האחרון של כל שדה מלאי.

שיקולים להחלפת מאפיינים ברמת המוצר במאפיינים ברמת המלאי

חשוב לשים לב לשיקולים ולמגבלות הבאים שקשורים לכל אחת מהגישות:

תכונה מלאי ברמת המוצר מלאי בחנות מקומית
מסנן חיפוש ואמצעי בקרה לשיפור תוצאות החיפוש כן כן
הפורמט של מפתח המסנן ומפתח הפנים שצוין ב-facetSpec כן לא
היבטים זמינים לחיפוש כן לא
הוחזרו בתגובה לחיפוש כן כן (נפח אחסון שינוצל: variantRollupKeys)
מסננים ואמצעי בקרה לשיפור ב-Recommendations AI v2 כן לא
תכונה מלאי ברמת המוצר מלאי בחנות מקומית
מסנן חיפוש ואמצעי בקרה לשיפור התוצאות
הפורמט של מפתח המסנן ומפתח הפנים שצוין ב-facetSpec
היבטים זמינים לחיפוש
הוחזרו בתגובה לחיפוש (באמצעות variantRollupKeys)
מסננים ואמצעי בקרה לשיפור ב-Recommendations AI v2

יש חפיפה מסוימת בפונקציונליות של השיטות השונות לעדכון זמינות המוצר, האספקה והמחיר בחנות המקומית:

תכונה UpdateProduct setInventory addLocalInventories
עדכונים בזמן אמת
עדכון של שדות מוצרים
עדכון מחיר המוצר
עדכון זמינות המוצר
עדכון fulfillmentInfo
עדכון localInventories (מחירים מקומיים)
רצף חותמות זמן

דוגמאות

בקטע הזה מוסבר איך לעדכן את מלאי המוצרים באמצעות השיטות UpdateProduct ו-setInventory בפקודות curl.

  • UpdateProduct משתמש בשיטת ה-HTTP PATCH של REST API לעדכונים סינכרוניים בזמן אמת של שדות ברמת המוצר, כמו מחיר וזמינות. אפשר גם להשתמש בו לעדכונים בכמות גדולה באמצעות השיטה import עם updateMask.

  • השיטה האסינכרונית setInventory מוצגת לעדכון שדות מלאי ברמת המוצר (מחיר, זמינות, כמות) ופרטי משלוח מקומי באמצעות fulfillmentInfo, אבל אי אפשר לשנות מחירים מקומיים או מאפיינים שמאוחסנים ב-localInventories.

שימוש ב-UpdateProduct לעדכון מחיר וזמינות של מוצרים

כשמשתמשים ב-API בארכיטקטורת REST, ‏ UpdateProduct משתמש בשיטת ה-HTTP ‏PATCH. אותה כתובת URL של נקודת הקצה כמו CreateProduct, GetProduct, DeleteProduct משתמשת בשיטות HTTP PUT, GET ו-DELETE, בהתאמה. כדי לראות את דוגמאות ה-curl המתאימות, מרחיבים את הקישורים הבאים.

שימוש ב-setInventory לעדכון מחיר וזמינות של מוצרים

setInventory תומך רק בשדות הבאים:

  • availability
  • availableQuantity
  • priceInfo

כדי לראות את דוגמאות ה-curl המתאימות, מרחיבים את הקישורים הבאים.

בנוסף, כשמדובר במלאי בחנות מקומית, אפשר להעביר את placeIds ואת סוגי המשלוחים ב-fulfillmentInfo, כמו שמוצג בדוגמה הזו של curl:

מדריכים

המדריכים האלה יעזרו לכם להבין איך להשתמש ב-setInventory או להוסיף או להסיר שיטות משלוח.

מדריך להגדרת מלאי

במדריך הזה מוסבר איך לשלוח עדכוני מלאי באמצעות השיטה SetInventory במקום לעדכן את כל המוצר.

הוספת מדריך להשלמת הזמנה

מומלץ להשתמש בשיטה AddLocalInventories במקום בשיטה AddFulfillmentPlaces. ‫AddLocalInventories משיג את אותן תוצאות, אבל מאפשר שליטה מפורטת יותר בייבוא נתוני המלאי בחנויות מקומיות. לקבלת מידע נוסף, עיינו במאמרי העזרה בנושא AddLocalInventories.

במדריך הזה מוסבר איך לעדכן את פרטי אספקת המוצרים באמצעות השיטה AddFulfillmentPlaces. כך, בחיפוש יוצגו עדכונים לגבי מוצרים שזמינים ושאפשר לבצע לגביהם הזמנות. לדוגמה, קונה מחפש ג'ינס כחול בחנות, אבל המוצר חסר במלאי. ברגע שהג'ינס חוזר למלאי בחנות הזו או בכל חנות אחרת, הקונה רואה את העדכונים ויכול להמשיך בהזמנה.

הסרת המדריך בנושא מימוש כרטיסי רכב

מומלץ להשתמש בשיטה RemoveLocalInventories במקום בשיטה RemoveFulfillmentPlaces. ‫RmoveLocalInventories משיג את אותן תוצאות, אבל מאפשר שליטה מפורטת יותר בייבוא נתוני המלאי בחנויות מקומיות. לקבלת מידע נוסף, עיינו במאמרי העזרה בנושא RemoveLocalInventories.

במדריך הזה מוסבר איך לעדכן את פרטי אספקת המוצרים באמצעות השיטה RemoveFulfillmentPlaces. כך, AI Commerce Search יכול להציג עדכונים לגבי מוצרים שלא זמינים, ואי אפשר לספק הזמנות. כך, בחיפוש יוצגו עדכונים לגבי מוצרים שלא זמינים ואי אפשר לספק הזמנות שלהם. לדוגמה, קונה מחפש מכנסי ג'ינס כחולים בחנות. אם הג'ינס יהיה חסר במלאי בחנות הזו, הקונה יראה את זה ולא יוכל להמשיך בהזמנה.