इलाके के हिसाब से बैच बनाने की सुविधा मैनेज करना

Merchant API में, रीजन का मतलब किसी ऐसे भौगोलिक इलाके से है जिसे accounts.products.regionalInventories संसाधन से जुड़े टारगेट के तौर पर इस्तेमाल किया जा सकता है. रीजन को पिन कोड के कलेक्शन के तौर पर तय किया जा सकता है. इसके अलावा, कुछ देशों में पहले से तय किए गए जियोटारगेट का इस्तेमाल करके भी रीजन तय किए जा सकते हैं. ज़्यादा जानकारी के लिए, रीजन सेट अप करना लेख पढ़ें.

Merchant API, रीजन मैनेज करने के लिए बैच एंडपॉइंट उपलब्ध कराता है. इनकी मदद से, एपीआई के एक कॉल में ज़्यादा से ज़्यादा 100 रीजन बनाए, अपडेट किए, और मिटाए जा सकते हैं. यह उन कारोबारियों या कंपनियों के लिए सबसे सही है जो बड़े पैमाने पर, क्षेत्र के हिसाब से प्रॉडक्ट की उपलब्धता और कीमत (आरएएपी) को मैनेज करती हैं. इससे, काम की क्षमता बढ़ती है और इंटिग्रेशन आसान हो जाता है.

खास जानकारी

बैच एपीआई की मदद से, इससे जुड़े तरीकों का इस्तेमाल करके ये काम किए जा सकते हैं:

  • एक ही अनुरोध में कई रीजन बनाना: regions:batchCreate
  • एक साथ कई रीजन मिटाना: regions:batchDelete
  • एक साथ कई रीजन अपडेट करना: regions:batchUpdate

ज़रूरी शर्तें

बैच में भेजे जाने वाले सभी अनुरोधों की पुष्टि के लिए, एडमिन उपयोगकर्ता की भूमिका ज़रूरी है.

कई रीजन बनाना

इस उदाहरण में, BatchCreateRegions के एक कॉल में दो नए रीजन बनाने का तरीका बताया गया है. इनमें से एक रीजन, पिन कोड के हिसाब से तय किया गया है, जबकि दूसरा जियो टारगेटिंग के हिसाब से.

अनुरोध

अनुरोध का यूआरएल इस तरह बनाएं:

POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchCreate

अनुरोध के मुख्य हिस्से में, requests की एक सूची होती है. इसमें हर ऑब्जेक्ट, regionId और बनाए जाने वाले region का डेटा तय करता है.

{
  "requests": [
    {
      "regionId": "seattle-area-98340",
      "region": {
        "displayName": "Seattle Region",
        "postalCodeArea": {
          "regionCode": "US",
          "postalCodes": [
            {
              "begin": "98340"
            }
          ]
        }
      }
    },
    {
      "regionId": "co-de-states",
      "region": {
        "displayName": "Colorado and Delaware",
        "geoTargetArea": {
          "geotargetCriteriaIds": [
            "21138",
            "21141"
          ]
        }
      }
    }
  ]
}

जवाब

अनुरोध पूरा होने पर, नए region ऑब्जेक्ट की सूची मिलती है.

{
  "regions": [
    {
      "name": "accounts/{ACCOUNT_ID}/regions/seattle-area-98340",
      "displayName": "Seattle Region",
      "postalCodeArea": {
        "regionCode": "US",
        "postalCodes": [
          {
            "begin": "98340"
          }
        ]
      },
      "regionalInventoryEligible": true,
      "shippingEligible": true
    },
    {
      "name": "accounts/{ACCOUNT_ID}/regions/co-de-states",
      "displayName": "Colorado and Delaware",
      "geotargetArea": {
        "geotargetCriteriaIds": [
          "21138",
          "21141"
        ]
      },
      "regionalInventoryEligible": false,
      "shippingEligible": false
    }
  ]
}

कई रीजन अपडेट करना

इस उदाहरण में, दो मौजूदा रीजन के लिए displayName और postalCodeArea अपडेट करने के लिए, BatchUpdateRegions का इस्तेमाल करने का तरीका बताया गया है. टारगेट किए गए रीजन को अपडेट करने के लिए, आपको region.name देना होगा.

अनुरोध

अनुरोध का यूआरएल इस तरह बनाएं:

POST https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchUpdate

अनुरोध के मुख्य हिस्से में, requests की एक सूची होती है. हर ऑब्जेक्ट में, अपडेट किए जाने वाले region का डेटा तय किया जाना चाहिए. region.name फ़ील्ड में, अपडेट किए जाने वाले रीजन का आईडी होना चाहिए. जैसे, "98005". संसाधन को accounts/{ACCOUNT_ID}/regions/name के बजाय, name के तौर पर तय करें. बदले जाने वाले फ़ील्ड की जानकारी देने के लिए, updateMask को शामिल करना ज़रूरी नहीं है.

{
  "requests": [
    {
      "region": {
        "name": "98005",
        "displayName": "Seattle Updated Region",
        "postalCodeArea": {
          "regionCode": "US",
          "postalCodes": [
            {
              "begin": "98330"
            }
          ]
        }
      },
      "updateMask": "displayName,postalCodeArea"
    },
    {
      "region": {
        "name": "07086",
        "displayName": "NewYork Updated Region",
        "postalCodeArea": {
          "regionCode": "US",
          "postalCodes": [
            {
              "begin": "11*"
            }
          ]
        }
      },
      "updateMask": "displayName,postalCodeArea"
    }
  ]
}

जवाब

अनुरोध पूरा होने पर, अपडेट किए गए region ऑब्जेक्ट की सूची मिलती है.

{
  "regions": [
    {
      "name": "accounts/{ACCOUNT_ID}/regions/98005",
      "displayName": "Seattle Updated Region",
      "postalCodeArea": {
        "regionCode": "US",
        "postalCodes": [
          {
            "begin": "98330"
          }
        ]
      },
      "regionalInventoryEligible": true,
      "shippingEligible": true
    },
    {
      "name": "accounts/{ACCOUNT_ID}/regions/07086",
      "displayName": "NewYork Updated Region",
      "postalCodeArea": {
        "regionCode": "US",
        "postalCodes": [
          {
            "begin": "11*"
          }
        ]
      },
      "regionalInventoryEligible": true,
      "shippingEligible": true
    }
  ]
}

कई रीजन मिटाना

एक ही कॉल में कई रीजन मिटाए जा सकते हैं.

अनुरोध

इस उदाहरण में, एक ही कॉल में दो रीजन मिटाने के लिए, BatchDeleteRegions का इस्तेमाल करने का तरीका बताया गया है.

POST
https://merchantapi.googleapis.com/v1beta/accounts/{ACCOUNT_ID}/regions:batchDelete

अनुरोध के मुख्य हिस्से में, requests की एक सूची होती है. इसमें हर ऑब्जेक्ट, मिटाए जाने वाले रीजन का name तय करता है. इसमें "accounts/{ACCOUNT_ID}/regions/" शामिल नहीं होता.

{
  "requests":
   [
    {
      "name": "98005"
    },
    {
      "name": "07086"
    }
   ]
}

जवाब

अनुरोध पूरा होने पर, जवाब का मुख्य हिस्सा खाली होता है. इसका मतलब है कि तय किए गए रीजन मिटा दिए गए हैं या वे मौजूद नहीं थे.

{}

सीमाएं

शुरू करने से पहले, इन नियमों को ध्यान में रखें:

  • एटॉमिक कार्रवाइयां: बैच में भेजे जाने वाले अनुरोध, एटॉमिक होते हैं. अगर बैच में कोई एक कार्रवाई पूरी नहीं होती है (उदाहरण के लिए, कोई रीजन नहीं बनाया जा पाता है), तो पूरा बैच पूरा नहीं होगा और कोई बदलाव नहीं किया जाएगा. एपीआई, गड़बड़ी का मैसेज दिखाएगा. इसमें गड़बड़ी की वजह बताई जाएगी.
  • बैच की सीमाएं: बैच में भेजे जाने वाले हर अनुरोध में, ज़्यादा से ज़्यादा 100 रीजन की कार्रवाइयां शामिल हो सकती हैं.
  • कोटा: ये एंडपॉइंट, सिंगल-ऑपरेशन वाले अपने काउंटरपार्ट (regions.create, regions.delete, regions.update) के लिए इस्तेमाल किए जाने वाले कोटा ग्रुप का ही इस्तेमाल करते हैं.

आम तौर पर होने वाली गड़बड़ियां और समस्याएं

यहां कुछ आम समस्याएं और उनके समाधान दिए गए हैं.

"The number of requests in a batch is too large"

यह गड़बड़ी तब होती है, जब आपके अनुरोधों की कैटगरी में कार्रवाइयों की संख्या, 100 की सीमा से ज़्यादा हो जाती है.

"error":
  {
    "code": 400,
    "message": "The number of requests in a batch is too large.",
    "status": "INVALID_ARGUMENT"
  }

इसे ठीक करने के लिए, अपनी कार्रवाइयों को 100 या उससे कम के कई बैच अनुरोधों में बांटें.

ज़रूरी फ़ील्ड मौजूद नहीं है

यह गड़बड़ी तब होती है, जब कोई ज़रूरी फ़ील्ड मौजूद नहीं होता. गड़बड़ी के मैसेज में, मौजूद न होने वाले पैरामीटर की जानकारी दी जाती है.

गड़बड़ी के मैसेज इस तरह दिखते हैं:

  • batchCreate के लिए: [regionId] Required parameter: regionId
  • batchUpdate के लिए: [region.name] Required field not provided.
  • batchDelete के लिए: [name] Required parameter: name

इसे ठीक करने के लिए, पुष्टि करें कि हर कार्रवाई में सभी ज़रूरी फ़ील्ड मौजूद हों. उदाहरण के लिए, batchUpdate अनुरोध की हर एंट्री में, region.name शामिल होना चाहिए. यह अनुरोध पोस्ट करने पर गड़बड़ी होती है:

{
  "requests":
  [
    {
      "region":
        {
          "displayName": "An update without a region name"
        },
        "updateMask": "displayName"
    }
  ]
}

"Region with specified ID already exists"

अगर किसी ऐसे regionId के साथ रीजन बनाने की कोशिश की जाती है जो पहले से मौजूद है, तो गड़बड़ी होती है.

गड़बड़ी का मैसेज, [regionId] Region with specified id already exists. होता है.

इसे ठीक करने के लिए, पुष्टि करें कि बैच में सभी regionId वैल्यू यूनीक हों और वे मौजूदा रीजन से मेल न खाती हों.

"Duplicate value found for field region.name or regionId found"

अगर बैच में भेजे जाने वाले एक ही अनुरोध में, एक ही आईडी वाले कई रीजन बनाने या अपडेट करने की कोशिश की जाती है, तो गड़बड़ी होती है.

गड़बड़ी का मैसेज, Duplicate value found for field {fieldName} in this batch request with value {duplicated_value}. होता है.

इसे ठीक करने के लिए, पुष्टि करें कि बैच में भेजे जाने वाले एक ही अनुरोध में, regionId (अगर batchCreate का इस्तेमाल किया जा रहा है) या region.name (अगर batchUpdate का इस्तेमाल किया जा रहा है) की सभी वैल्यू यूनीक हों.

"आइटम नहीं मिला"

batchUpdate का इस्तेमाल करते समय, अगर अनुरोध में तय किया गया कोई रीजन मौजूद नहीं है, तो पूरा बैच 404 NOT_FOUND गड़बड़ी के साथ पूरा नहीं होगा. यह batchDelete से अलग है. इसमें, ऐसे रीजन के लिए भी कार्रवाई पूरी हो जाती है जो मौजूद नहीं हैं.

"error": {
    "code": 404,
    "message": "item not found",
    "status": "NOT_FOUND"
}

इसे ठीक करने के लिए, अनुरोध भेजने से पहले पुष्टि करें कि अपडेट किए जाने वाले सभी रीजन मौजूद हों.