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"
}
इस समस्या को ठीक करने के लिए, पुष्टि करें कि जिन क्षेत्रों के लिए अपडेट का अनुरोध किया जा रहा है वे मौजूद हैं.