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

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

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

खास जानकारी

Batch API की मदद से, इन कामों को पूरा किया जा सकता है:

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

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

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

एक से ज़्यादा क्षेत्र बनाना

इस उदाहरण में, 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).

सामान्य गड़बड़ियां और समस्याएं

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

"एक साथ भेजे गए अनुरोधों की संख्या बहुत ज़्यादा है"

यह गड़बड़ी तब होती है, जब आपके अनुरोधों के कलेक्शन में मौजूद कार्रवाइयों की संख्या 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"
    }
  ]
}

"इस आईडी वाला क्षेत्र पहले से ही मौजूद है"

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

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

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

"क्षेत्र के नाम या क्षेत्र के आईडी फ़ील्ड के लिए डुप्लीकेट वैल्यू मिली"

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

गड़बड़ी का मैसेज 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"
}

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