आरटीयू का मुख्य मकसद ऐसे अपडेट के बारे में सूचना देना है जिनके बारे में पहले से पता नहीं चलता. जैसे, आपातकालीन स्थिति में स्टोर बंद करना या समय-समय पर बदलने वाला मेटाडेटा (जैसे, ईटीए). अगर आपको बदलाव तुरंत लागू नहीं करना है, तो एक साथ कई फ़ीड डालने की सुविधा का इस्तेमाल करें. रीयल-टाइम अपडेट, पांच मिनट से ज़्यादा समय में प्रोसेस नहीं होते.
Google Cloud Platform का सेटअप
- GCP प्रोजेक्ट सेट अप करें. RTU API को ऐक्सेस करने के लिए, आपके पास GCP प्रोजेक्ट होना चाहिए.
- एडिटर ऐक्सेस दें food-support@google.com
- अपने Google पीओसी को GCP प्रोजेक्ट नंबर की जानकारी दें.रीयल-टाइम अपडेट काम करने के लिए, आपका GCP प्रोजेक्ट आपके Actions Center खाते से जुड़ा होना चाहिए.
- Maps Booking API को चालू करना:
- GCP में, एपीआई और सेवाएं > लाइब्रेरी पर जाएं.
- “Google Maps Booking API” खोजें.
- सैंडबॉक्स इंस्टेंस (“Google Maps Booking API (Dev)”) ढूंढें और चालू करें पर क्लिक करें
- प्रोडक्शन इंस्टेंस (“Google Maps Booking API”) ढूंढें और चालू करें पर क्लिक करें
- अपने GCP प्रोजेक्ट के लिए, एडिटर की भूमिका वाला सेवा खाता बनाएं. ज़्यादा जानकारी के लिए, सेवा खाता सेटअप करना लेख पढ़ें.
- पक्का करें कि आपने उसी एनवायरमेंट में बैच फ़ीड अपलोड किए हों जिसमें रीयल-टाइम अपडेट पर काम किया जा रहा है.
- एपीआई की पुष्टि करने के लिए, हमारा सुझाव है कि आप अपनी पसंद की भाषा में Google क्लाइंट लाइब्रेरी इंस्टॉल करें. OAuth स्कोप के तौर पर “https://www.googleapis.com/auth/mapsbooking” का इस्तेमाल करें. यहां दिए गए कोड सैंपल में इन लाइब्रेरी का इस्तेमाल किया गया है. ऐसा न करने पर, आपको Google API को ऐक्सेस करने के लिए OAuth 2.0 का इस्तेमाल करना में बताए गए तरीके से, टोकन एक्सचेंज को मैन्युअल तरीके से मैनेज करना होगा.
सेवा खाते का सेटअप
Google के एपीआई (जैसे, रीयल-टाइम अपडेट एपीआई) को एचटीटीपीएस के ज़रिए पुष्टि किए गए अनुरोध करने के लिए, आपके पास सेवा खाता होना चाहिए.
सेवा खाता सेट अप करने के लिए, यह तरीका अपनाएं:
- Google Cloud Platform Console को ऐक्सेस करें.
- Actions Center में मौजूद आपके खाते से भी एक Google Cloud प्रोजेक्ट जुड़ा होता है. अगर उस प्रोजेक्ट को पहले से नहीं चुना गया है, तो उसे चुनें.
- बाईं ओर मौजूद मेन्यू में, सेवा खाते पर क्लिक करें.
- सेवा खाता बनाएं पर क्लिक करें.
- सेवा खाते के लिए कोई नाम डालें और बनाएं पर क्लिक करें.
- कोई भूमिका चुनने के लिए, प्रोजेक्ट > एडिटर को चुनें.
- जारी रखें पर क्लिक करें.
- ज़रूरी नहीं: उपयोगकर्ताओं को सेवा खाते का ऐक्सेस देने के लिए उन्हें जोड़ें और हो गया पर क्लिक करें.
- आपने जो सेवा खाता अभी बनाया है उसके लिए, ज़्यादा > पासकोड बनाएं पर क्लिक करें.
- फ़ॉर्मैट के तौर पर JSON चुनें और बनाएं पर क्लिक करें.
- सार्वजनिक/निजी पासकोड का नया जोड़ा जनरेट होने के बाद, उसे अपनी मशीन पर डाउनलोड करें.
एपीआई के साथ काम करना
रीयल-टाइम अपडेट एपीआई, दो तरह के ऑपरेशन के साथ काम करता है: अपडेट और मिटाएं. रीयल-टाइम अपडेट एपीआई के ज़रिए नई इकाइयां जोड़ने की सुविधा उपलब्ध नहीं है. अगर एक ही एपीआई अनुरोध में कई अपडेट शामिल किए जाते हैं, तो रीयल-टाइम अपडेट एक साथ भेजे जा सकते हैं. एक ही एपीआई कॉल में, ज़्यादा से ज़्यादा 1,000 अपडेट एक साथ किए जा सकते हैं. हमारा सुझाव है कि अगर हो सके, तो फ़्रीक्वेंसी पर आधारित तरीके (यानी हर X मिनट में बदलावों के लिए अपने सिस्टम को स्कैन करना) के बजाय, ट्रिगर पर आधारित तरीके का इस्तेमाल करके आरटीयू के ज़रिए अपडेट भेजें. इसका मतलब है कि आपके सिस्टम में डेटा में बदलाव होने पर, Google को रीयल-टाइम अपडेट ट्रिगर करें.
रीयल-टाइम अपडेट एपीआई, सैंडबॉक्स और प्रोडक्शन, दोनों एनवायरमेंट में काम करता है. सैंडबॉक्स एनवायरमेंट का इस्तेमाल, एपीआई अनुरोधों की जांच करने के लिए किया जाता है. साथ ही, प्रोडक्शन एनवायरमेंट का इस्तेमाल, ऑर्डरिंग एंड-टू-एंड के उपयोगकर्ताओं को दिखने वाले कॉन्टेंट को अपडेट करने के लिए किया जाता है.
- सैंडबॉक्स -
partnerdev-mapsbooking.googleapis.com
- प्रोडक्शन -
mapsbooking.googleapis.com
एंडपॉइंट
रीयल-टाइम अपडेट एपीआई, इन्वेंट्री अपडेट के लिए आने वाले अनुरोधों को मैनेज करने के लिए दो एंडपॉइंट दिखाता है:
- अपडेट -
/v1alpha/inventory/partners/PARTNER_ID/feeds/google.food_service/record:batchPush
- मिटाएं -
/v1alpha/inventory/partners/PARTNER_ID/feeds/google.food_service/record:batchDelete
PARTNER_ID पैरामीटर, Actions Center में खाता और उपयोगकर्ता पेज पर देखा जा सकता है. इसकी जानकारी नीचे दिए गए स्क्रीनशॉट में दी गई है.

ऊपर दिए गए स्क्रीनशॉट में, PARTNER_ID की वैल्यू के तौर पर 10000001 का इस्तेमाल किया गया है. सैंडबॉक्स और प्रोडक्शन में एपीआई अनुरोध भेजने के लिए, पूरे यूआरएल नीचे दिए गए उदाहरणों की तरह दिखेंगे.
सैंडबॉक्स से जुड़ा अपडेट
https://partnerdev-mapsbooking.googleapis.com/v1alpha/inventory/partners/10000001/feeds/google.food_service/record:batchPush
सैंडबॉक्स मिटाएं
https://partnerdev-mapsbooking.googleapis.com/v1alpha/inventory/partners/10000001/feeds/google.food_service/record:batchDelete
प्रोडक्शन से जुड़ा अपडेट
https://mapsbooking.googleapis.com/v1alpha/inventory/partners/10000001/feeds/google.food_service/record:batchPush
प्रोडक्शन मिटाएं
https://mapsbooking.googleapis.com/v1alpha/inventory/partners/10000001/feeds/google.food_service/record:batchDelete
इकाइयों की जानकारी अपडेट करना
अपनी इन्वेंट्री में इकाइयों को अपडेट करने के लिए, एचटीटीपी पोस्ट अनुरोध में update एंडपॉइंट का इस्तेमाल करें. हर पोस्ट अनुरोध में 10000001 पैरामीटर के साथ-साथ, JSON पेलोड भी शामिल होना चाहिए. इसमें वह इकाई शामिल होनी चाहिए जिसे आपको अपडेट करना है.
ध्यान दें: पक्का करें कि आपके रोज़ के डेटा फ़ीड में, रीयल-टाइम अपडेट एपीआई के ज़रिए सबमिट किए गए बदलाव भी शामिल हों. ऐसा न करने पर, हो सकता है कि आपका डेटा पुराना हो.
अनुरोध पेलोड अपडेट करें
अनुरोध का मुख्य हिस्सा, रिकॉर्ड की सूची वाला एक JSON ऑब्जेक्ट होता है. हर रिकॉर्ड, अपडेट की जा रही इकाई से जुड़ा होता है. इसमें proto_record
फ़ील्ड और generation_timestamp
होता है, जो इकाई के अपडेट होने का समय दिखाता है:
{ "records": [ { "proto_record":"ServiceData PROTO", "generation_timestamp":"UPDATE_TIMESTAMP" } ] }
ServiceData PROTO
: अपडेट की जा रही ServiceData इकाई का प्रोटो या JSON ट्रांसलेशन.UPDATE_TIMESTAMP
: पक्का करें कि आपने अपने बैकएंड सिस्टम में इकाई के जनरेट होने का टाइमस्टैंप शामिल किया हो. अगर यह फ़ील्ड शामिल नहीं किया गया है, तो यह उस समय पर सेट हो जाएगा जब Google को अनुरोध मिलेगा.batchPush
अनुरोध की मदद से किसी इकाई को अपडेट करते समय, इकाई के वर्शन के लिएgeneration_timestamp
फ़ील्ड का इस्तेमाल किया जाता है. रिलेशनल इन्वेंट्री स्कीमा में, समय की वैल्यू का अनुमानित फ़ॉर्मैट देखें.
- पेलोड बॉडी का साइज़ 5 एमबी से ज़्यादा नहीं होना चाहिए.
- साइज़ कम करने के लिए, खाली जगह हटाएं.
batchPush
अनुरोध में, ज़्यादा से ज़्यादा 1,000 अपडेट हो सकते हैं.
उदाहरण
ईटीए अपडेट करना
मान लें कि आपको डिलीवरी सेवा के ईटीए को 30 से 60 मिनट से 60 से 90 मिनट पर तुरंत अपडेट करना है. आपके अपडेट में, पूरी सेवा इकाई का JSON होना चाहिए.
मान लें कि सेवा इकाई इस तरह दिखती है:
{ "service": { "service_id": "service/entity002", "service_type": "DELIVERY", "parent_entity_id": "entity002", "lead_time": { "min_lead_time_duration": "600s", "max_lead_time_duration": "1800s" }, "action_link_id": "delivery_link/entity002" } }
एचटीटीपी पीओएसटी के ज़रिए, रीयल-टाइम में मिलने वाले अपडेट इस तरह के होते हैं. अनुरोध के मुख्य हिस्से को पढ़ने में आसानी हो, इसलिए उन्हें प्रिंट किया गया है:
POST v1alpha/inventory/partners/PARTNER_ID/feeds/google.food_service/record:batchPush Host: mapsbooking.googleapis.com Content-Type: application/json { "records": [{ "proto_record": { "@type": "type.googleapis.com/food.ordering.service.v1.ServiceData", "service" : { "service_id" : "23456/delivery", "service_type" : "DELIVERY", "parent_entity_id" : "23456", "disabled" : "false", "action_link_id": "delivery_link/entity002", "lead_time" : { "min_lead_time_duration" : { "seconds": "3600" }, "max_lead_time_duration" : { "seconds": "5400" } } } }, "generation_timestamp": "2023-09-13T17:11:10.750Z" }] }
एक से ज़्यादा इकाइयों को अपडेट करना
एक ही एपीआई कॉल में रेस्टोरेंट की कई इकाइयों को अपडेट करने के लिए, अनुरोध के मुख्य हिस्से के proto_record फ़ील्ड में कई रिकॉर्ड शामिल करें.
POST v1alpha/inventory/partners/PARTNER_ID/feeds/google.food_service/record:batchPush Host: mapsbooking.googleapis.com Content-Type: application/json { "records": [{ "proto_record": { "@type": "type.googleapis.com/food.ordering.service.v1.ServiceData", "service" : { "service_id" : "23456/delivery", "service_type" : "DELIVERY", "parent_entity_id" : "23456", "disabled" : "false", "action_link_id": "delivery_link/entity002", "lead_time" : { "min_lead_time_duration" : { "seconds": "1800" }, "max_lead_time_duration" : { "seconds": "3600" } } } }, "generation_timestamp": "2023-09-13T17:11:10.750Z" }, { "proto_record": { "@type": "type.googleapis.com/food.ordering.service.v1.ServiceData", "fee" : { "fee_id" : "12345/delivery_fee", "fee_type" : "DELIVERY", "fixed_amount" : { "currency_code" : "USD", "units" : "10", "nanos" : "0" }, "service_ids": ["service/entity002"] } }, "generation_timestamp" : "2023-09-13T17:11:10.750Z" }] }
इकाइयां मिटाना
अपनी इन्वेंट्री से इकाइयों को मिटाने के लिए, एचटीटीपी पोस्ट अनुरोध में DELETE एंडपॉइंट का इस्तेमाल करें. हर POST अनुरोध में, JSON पेलोड के साथ PARTNER_ID पैरामीटर शामिल होना चाहिए. इस पेलोड में, उस इकाई का आइडेंटिफ़ायर होता है जिसे आपको मिटाना है.
ध्यान दें: पक्का करें कि आपके रोज़ के डेटा फ़ीड में, रीयल-टाइम अपडेट एपीआई के ज़रिए सबमिट किए गए बदलाव भी शामिल हों. ऐसा न करने पर, हर दिन डेटा डालने की प्रोसेस में, रीयल-टाइम में किए गए बदलावों को बदल दिया जाएगा.
POST v1alpha/inventory/partners/PARTNER_ID/feeds/google.food_service/record:batchDelete Host: mapsbooking.googleapis.com Content-Type: application/json { "records": [{ "proto_record": { "@type": "type.googleapis.com/food.ordering.service.v1.ServiceData", "service" : { "service_id" : "23456/delivery" } }, "delete_time": "2023-09-13T17:11:10.750Z" }, { "proto_record": { "@type": "type.googleapis.com/food.ordering.service.v1.ServiceData", "fee" : { "fee_id" : "12345/delivery_fee" } }, "delete_time" : "2023-09-13T17:11:10.750Z" }] }
इकाइयां जोड़ना
नई इकाइयां जोड़ने के लिए, रीयल-टाइम अपडेट का इस्तेमाल न करें. ऐसा करने से डेटा में अंतर हो सकता है. इसके बजाय, एक साथ कई फ़ीड अपलोड करने की सुविधा का इस्तेमाल करें.
पुष्टि और एपीआई के रिस्पॉन्स कोड
रीयल-टाइम अपडेट एपीआई कॉल पर दो तरह की पुष्टि की जाती है:
- अनुरोध-लेवल - पुष्टि करने की ये प्रोसेस यह जांच करती हैं कि पेलोड स्कीमा के मुताबिक है या नहीं. साथ ही, यह भी जांच करती हैं कि हर
proto_record
मेंid
औरtype
फ़ील्ड मौजूद हैं या नहीं. ये जांच एक साथ की जाती हैं और उनके नतीजे, एपीआई के रिस्पॉन्स बॉडी में दिखाए जाते हैं. रिस्पॉन्स कोड 200 और खाली JSON बॉडी{}
का मतलब है कि पुष्टि की गई है और उस अनुरोध में मौजूद इकाइयों को प्रोसेस करने के लिए कतार में लगाया गया है. अगर रिस्पॉन्स कोड 200 के अलावा कोई और है, तो इसका मतलब है कि इनमें से एक या उससे ज़्यादा पुष्टि नहीं हो सकी और पूरा अनुरोध अस्वीकार कर दिया गया है. इसमें पेलोड की सभी इकाइयां भी शामिल हैं. उदाहरण के लिए, अगर किसीproto_record
में@type
मौजूद नहीं है, तो गड़बड़ी का यह जवाब दिखता है:
{ "error": { "code": 400, "message": "Record:{...}", "status": "INVALID_ARGUMENT", "details": [ { "@type": "type.googleapis.com/google.rpc.DebugInfo", "detail": "[ORIGINAL ERROR] generic::invalid_argument: Failed to parse one or more rtu records. Record:... The entity type could not be extracted from the entity value." } ] }
- इकाई-लेवल: पेलोड में मौजूद हर इकाई (proto_record) की पुष्टि, स्कीमा के हिसाब से की जाती है. पुष्टि के इस चरण में आने वाली समस्याओं की शिकायत, एपीआई के रिस्पॉन्स में नहीं की जाती. इन्हें सिर्फ़ ऐक्शन सेंटर के आरटीयू रिपोर्टिंग डैशबोर्ड में रिपोर्ट किया जाता है.
ध्यान दें: 200 रिस्पॉन्स कोड का मतलब यह नहीं है कि सभी इकाइयां डाल दी गई हैं.
एपीआई कोटा
रीयल-टाइम एपीआई अपडेट के लिए,हर 60 सेकंड में 1, 500 अनुरोध या औसतन हर सेकंड 25 अनुरोध किए जा सकते हैं. कोटा से ज़्यादा अनुरोध करने पर, Google आपको गड़बड़ी का यह मैसेज भेजता है:
{ "error": { "code": 429, "message": "Insufficient tokens for quota ...", "status": "RESOURCE_EXHAUSTED", "details": [...] } }
इसे ठीक करने के लिए, कॉल को तब तक दोहराएं, जब तक कि यह पूरा न हो जाए. अगर आपका कोटा नियमित तौर पर खत्म हो जाता है, तो एक एपीआई अनुरोध में ज़्यादा इकाइयां शामिल करें. एक एपीआई कॉल में ज़्यादा से ज़्यादा 1,000 इकाइयां शामिल की जा सकती हैं.
प्रोसेस में लगने वाले समय के रीयल-टाइम अपडेट
रीयल-टाइम अपडेट की मदद से अपडेट की गई इकाई को पांच मिनट में प्रोसेस किया जाता है.