ऑफ़र इंटिग्रेशन में हिस्सा लेने वाले पार्टनर को, इंटिग्रेशन के लिए खाता सेट अप करना होगा. यह इंटिग्रेशन, कारोबारी या इकाई (पायलट) पर आधारित होना चाहिए. इस गाइड में, ऑफ़र इंटिग्रेशन को लागू करने, उसकी जांच करने, और उसे लॉन्च करने के बारे में पूरी जानकारी दी गई है. इंटिग्रेशन के चरणों को पूरा करने से पहले, इस खास जानकारी और ऑफ़र से जुड़ी नीतियों को पढ़ें.
ऑफ़र
ऑफ़र इंटिग्रेशन की मदद से, कारोबारी या कंपनी के प्रमोशन और खास समय पर खास सेवाओं पर लागू होने वाली छूट के बारे में स्ट्रक्चर्ड जानकारी दी जा सकती है. ऑफ़र में ये चीज़ें शामिल होती हैं: असल ऑफ़र (कीमत में प्रतिशत या डॉलर की छूट ...), वैधता की अवधि (खास समय, हफ़्ते के दिन ...), और लागू होने की शर्तें (ऑफ़र का इस्तेमाल सिर्फ़ कुछ सेवाओं पर किया जा सकता है). साथ ही, इसमें पाबंदियों के मुश्किल कॉम्बिनेशन भी शामिल होते हैं.
ऑफ़र के उदाहरण:
- दिसंबर में बुधवार और गुरुवार को दोपहर 12 बजे से शाम 5 बजे तक, ऐपेटाइज़र पर 50% की छूट
- मदर्स डे पर, शाम 6 बजे से रात 10 बजे के बीच डिनर करने पर, एक डेज़र्ट खरीदने पर एक डेज़र्ट मुफ़्त पाएं
- हर रविवार सुबह 10 बजे से दोपहर 2 बजे तक, ब्रंच के मुख्य व्यंजन पर 5 डॉलर की छूट
- स्टोर पर जाकर खरीदारी करने पर 10% की छूट. इसे प्रीमियम सदस्यों के लिए 5% की छूट के साथ जोड़ा जा सकता है. इसके अलावा, अगर कोई व्यक्ति आपके ऐप्लिकेशन से पेमेंट करता है, तो उसे 5% की छूट मिलती है.
किसी ऑफ़र को इंटिग्रेशन में शामिल करने के लिए, यह ज़रूरी है कि वह तकनीकी डेटा मॉडल के मुताबिक हो. साथ ही, उसे हमारी ज़रूरी शर्तों को पूरा करना होगा. पक्का करें कि आपने ऑफ़र से जुड़ी हमारी नीतियां पढ़ ली हों. इससे यह पक्का किया जा सकेगा कि आपका इंटिग्रेशन, नीतियों के मुताबिक है. साथ ही, आपको उन ऑफ़र के बारे में निर्देश मिलेंगे जो तकनीकी शर्तों को पूरा नहीं करते.
लागू करने के सुझाव
ऑफ़र इंटिग्रेशन में दो फ़ीड शामिल होते हैं. इन्हें हर दिन या ऐसी फ़्रीक्वेंसी पर अपलोड किया जाएगा जिससे सटीक जानकारी मिल सके. इसका मतलब है कि जानकारी पुरानी न हो:
OfferFeed
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| data | object (Offer)का कलेक्शन | 
ऑफ़र
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| offer_id | स्ट्रिंग | ज़रूरी है | ऑफ़र का यूनीक आईडी. ज़रूरी है. | 
| entity_ids | स्ट्रिंग का कलेक्शन | उन कारोबारियों या कंपनियों की सूची जो इस ऑफ़र में हिस्सा ले रही हैं. | |
| add_on_offer_applicable_to_all_entities | बूलियन | अगर यह वैल्यू 'सही है' पर सेट है, तो इसका मतलब है कि यह ऑफ़र एग्रीगेटर के सभी कारोबारों या कंपनियों पर लागू होता है. यह सिर्फ़ ऐड-ऑन ऑफ़र पर लागू होता है. | |
| offer_source | enum (OfferSource) | ज़रूरी है | ऑफ़र, एग्रीगेटर, कोई कारोबारी या कंपनी या ऐड-ऑन के तौर पर कोई तीसरा पक्ष दे सकता है. ज़रूरी है. | 
| action_type | enum (ActionType) | ज़रूरी है | वह सेवा जो ऑफ़र दे रही है. एक offer_id सिर्फ़ एक action_type से जुड़ा हो सकता है. अगर किसी ऑफ़र को कई तरह की सेवाओं के साथ शेयर किया जा सकता है, तो हर सेवा के लिए डुप्लीकेट ऑफ़र बनाए जाने चाहिए. इन ऑफ़र के आईडी यूनीक होने चाहिए. ज़रूरी है. | 
| offer_modes | enum (OfferMode)की कैटगरी | ज़रूरी है | ऑफ़र का फ़ायदा पाने के तरीके - स्टोर पर जाकर, बुकिंग करके, ऑनलाइन वगैरह. ज़रूरी है. | 
| offer_category | enum (OfferCategory) | ज़रूरी है | ऑफ़र की कैटगरी. ज़रूरी है. | 
| source_assigned_priority | संख्या | नॉन-नेगेटिव पूर्णांक ([1-100], जहां 1 का मतलब सबसे ज़्यादा प्राथमिकता है) जो सोर्स की ओर से असाइन किए गए ऑफ़र के प्राथमिकता लेवल को दिखाता है. जब एक ही कारोबारी या कंपनी के लिए कई ऑफ़र उपलब्ध होते हैं, तो यह ऑफ़र को रैंक करने के लिए एक सिग्नल होगा. 0 का मतलब है कि प्राथमिकता सेट नहीं की गई है. | |
| offer_details | object (OfferDetails) | ज़रूरी है | ऑफ़र की जानकारी, जैसे कि छूट, बुकिंग का शुल्क वगैरह. ज़रूरी है. | 
| offer_restrictions | object (OfferRestrictions) | ज़रूरी है | इससे पता चलता है कि ऑफ़र पर किस तरह की पाबंदी है. जैसे, सदस्यता/पेमेंट के तरीके की ज़रूरत है या नहीं, इस ऑफ़र को अन्य ऑफ़र के साथ इस्तेमाल किया जा सकता है या नहीं (और किस तरह के ऑफ़र के साथ), वगैरह. यह जानकारी देना ज़रूरी है. | 
| coupon | object (Coupon) | कूपन की जानकारी. offer_category: OFFER_CATEGORY_ADD_ON_COUPON_OFFER के लिए ज़रूरी है. | |
| payment_instrument | object (PaymentInstrument) | पेमेंट के तरीके की जानकारी. offer_category: OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER के लिए ज़रूरी है. | |
| subscription | object (Subscription) | सदस्यता की जानकारी. offer_category: OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER के लिए ज़रूरी है. | |
| terms | object (Terms) | ज़रूरी है | ऑफ़र के नियम और शर्तें. ज़रूरी है. | 
| validity_periods | object (ValidityPeriod)का कलेक्शन | ज़रूरी है | ऑफ़र की वैधता की अवधि. इससे पता चलता है कि ऑफ़र किस समयावधि के लिए मान्य है. इसमें शुरू और खत्म होने का समय, हफ़्ते के दिन वगैरह शामिल हैं. यह जानकारी देना ज़रूरी है. | 
| offer_url | स्ट्रिंग | कारोबारी या कंपनी के ऑफ़र पेज का यूआरएल. offer_category: OFFER_CATEGORY_BASE_OFFER के लिए ज़रूरी है. | |
| image_url | स्ट्रिंग | कारोबारी या कंपनी के ऑफ़र की इमेज का यूआरएल. | 
OfferDetails
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| offer_display_text | स्ट्रिंग | ज़रूरी है | ऑफ़र देने वाला व्यक्ति या कंपनी, खोज नतीजों वाले पेज पर खरीदारों को ऑफ़र का जो टेक्स्ट दिखाना चाहती है. ज़रूरी है. | 
|  | oneOf (offer_specification) | ज़रूरी है | इस oneOf में मौजूद फ़ील्ड में से सिर्फ़ एक को सेट किया जा सकता है. | 
| max_discount_value | object (Money) | ज़्यादा से ज़्यादा कितनी छूट मिल सकती है. उदाहरण के लिए, 100 डॉलर तक की खरीदारी पर 10% की छूट. | |
| min_spend_value | object (Money) | छूट पाने के लिए, कम से कम इतना खर्च करना होगा. उदाहरण के लिए, कुल कीमत 100 डॉलर या इससे ज़्यादा होने पर 10% की छूट. | |
| booking_cost | object (Money) | इस ऑफ़र को बुक करने की कीमत. उदाहरण के लिए, 15 डॉलर में टेबल बुक करने पर, फ़ाइनल बिल पर 100 डॉलर की छूट. | |
| booking_cost_unit | enum (FeeUnit) | बुकिंग की लागत की इकाई. उदाहरण के लिए, हर व्यक्ति के हिसाब से, हर लेन-देन के हिसाब से. | |
| convenience_fee | object (Fee) | ||
| booking_cost_adjustable | बूलियन | क्या बुकिंग की लागत को अडजस्ट किया जा सकता है. इसका मतलब है कि बुकिंग की लागत को फ़ाइनल बिल से घटा दिया जाता है. उदाहरण के लिए: टेबल बुक करने पर डिनर में 30% की छूट. बुकिंग के लिए 15 डॉलर का शुल्क लिया जाएगा. यह शुल्क, कुल बिल में जोड़ दिया जाएगा. इसलिए, फ़ाइनल बिल: खर्च की गई कुल रकम - 30% - 15 डॉलर | |
| additional_fees | object (AdditionalFee)का कलेक्शन | उपयोगकर्ता से लिया जाने वाला अतिरिक्त शुल्क. उदाहरण: सुविधा, हैंडलिंग वगैरह. | 
पैसे
यह मुद्रा के टाइप के साथ-साथ, पैसे की रकम को दिखाता है.
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| currency_code | स्ट्रिंग | ISO 4217 में तय किया गया तीन अक्षर वाला मुद्रा कोड. | |
| units | स्ट्रिंग | राशि की पूरी यूनिट.
 उदाहरण के लिए, अगर currencyCodeकी वैल्यू"USD"है, तो एक यूनिट की कीमत एक डॉलर होगी. | |
| nanos | संख्या | रकम की नैनो (10^-9) यूनिट की संख्या.
 वैल्यू, -999,999,999 और +999,999,999 के बीच होनी चाहिए.
 अगर unitsपॉज़िटिव है, तोnanosपॉज़िटिव या शून्य होना चाहिए.
 अगरunitsशून्य है, तोnanosपॉज़िटिव, शून्य या नेगेटिव हो सकता है.
 अगरunitsकी वैल्यू नेगेटिव है, तोnanosकी वैल्यू नेगेटिव या शून्य होनी चाहिए.
 उदाहरण के लिए, -1.75 डॉलर कोunits=-1 औरnanos=-750,000,000 के तौर पर दिखाया जाता है. | 
शुल्क
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| unit | enum (FeeUnit) | ||
| type | enum (FeeType) | ||
|  | oneOf (cost) | इस oneOf में मौजूद फ़ील्ड में से सिर्फ़ एक को सेट किया जा सकता है. | 
MoneyRange
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| min_amount | object (Money) | ||
| max_amount | object (Money) | 
AdditionalFee
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| name | स्ट्रिंग | ज़रूरी है | अतिरिक्त शुल्क का नाम. उदाहरण: सुविधा शुल्क, हैंडलिंग शुल्क वगैरह. ज़रूरी है. | 
| fee | object (Fee) | 
OfferRestrictions
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| combinable_with_other_offers | बूलियन | यह ऑफ़र, अन्य ऑफ़र के साथ इस्तेमाल किया जा सकता है या नहीं. अगर यह वैल्यू सही है, तो पार्टनर यह तय कर सकते हैं कि इस ऑफ़र को किन ऑफ़र के साथ जोड़ा जा सकता है. अगर combinable_offer_categories और combinable_offer_ids, दोनों सेट किए गए हैं, तो ऊपर दी गई किसी भी शर्त को पूरा करने वाला ऑफ़र, एक साथ इस्तेमाल किया जा सकेगा. | |
| combinable_offer_categories | enum (OfferCategory)की कैटगरी | ऑफ़र के टाइप की सूची, जिनके साथ इस ऑफ़र को जोड़ा जा सकता है. उदाहरण के लिए, इस ऑफ़र को अन्य कूपन के साथ इस्तेमाल किया जा सकता है. अगर combinable_with_other_offers की वैल्यू 'सही है' पर सेट है और इस फ़ील्ड की वैल्यू सेट नहीं है, तो सभी टाइप को एक साथ इस्तेमाल किया जा सकेगा. | |
| combinable_offer_ids | स्ट्रिंग का कलेक्शन | उन offer_id की सूची जिनसे इस ऑफ़र को जोड़ा जा सकता है. ऐसा हो सकता है कि कुछ ऑफ़र सिर्फ़ कुछ खास offer_id (इन्हें पैरंट ऑफ़र माना जा सकता है) के साथ इस्तेमाल किए जा सकें. अगर combinable_with_other_offers की वैल्यू 'सही है' पर सेट है और इस फ़ील्ड को सेट नहीं किया गया है, तो सभी ऑफ़र आईडी को एक साथ इस्तेमाल किया जा सकेगा. | |
| inclusions | object (OfferCondition)का कलेक्शन | उन शर्तों की सूची जिन्हें पूरा करने पर ही ऑफ़र मान्य होगा. उदाहरण के लिए, बिना अल्कोहल वाली ड्रिंक, खाना). | |
| exclusions | object (OfferCondition)का कलेक्शन | उन शर्तों की सूची जिनसे ऑफ़र अमान्य हो जाएगा. उदाहरण के लिए, बुफ़े, कॉम्बो ऑफ़र, और कॉकटेल. | |
| min_guest | संख्या | ऑफ़र का फ़ायदा पाने के लिए, कम से कम इतने लोग होने चाहिए. | |
| food_offer_restrictions | object (FoodOfferRestrictions) | खाने-पीने के ऑफ़र पर लागू होने वाली पाबंदियां. | 
OfferCondition
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| description | स्ट्रिंग | 
FoodOfferRestrictions
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| meal_types | enum (MealType)की कैटगरी | खाने के टाइप, जिन पर ऑफ़र लागू किया जा सकता है. जैसे, दोपहर या रात का खाना. अगर इसे सेट नहीं किया गया है, तो ऑफ़र को हर तरह के खाने पर लागू किया जा सकता है. | |
| restricted_to_certain_courses | बूलियन | क्या ऑफ़र सिर्फ़ कुछ कोर्स पर लागू किया जा सकता है. | 
कूपन
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| text | स्ट्रिंग | यह कूपन का वह टेक्स्ट है जिसे ऑफ़र देने वाला व्यक्ति या कंपनी, लोगों को दिखाना चाहती है. | |
| code | स्ट्रिंग | ज़रूरी है | ऑफ़र रिडीम करने के लिए कूपन कोड ज़रूरी है. ज़रूरी है. | 
PaymentInstrument
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| items | object (PaymentInstrumentItem)का कलेक्शन | ज़रूरी है | पेमेंट के उन इंस्ट्रूमेंट की सूची जिनका इस्तेमाल करके ऑफ़र पाया जा सकता है. ज़रूरी है. | 
| provider_name | स्ट्रिंग | ज़रूरी है | पेमेंट के तरीके की सुविधा देने वाली कंपनी का नाम. यह बैंकिंग पार्टनर, बैंक का नाम वगैरह हो सकता है. उदाहरण के लिए: अमेरिकन एक्सप्रेस, एचडीएफ़सी, आईसीआईसीआई. ज़रूरी है. | 
PaymentInstrumentItem
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| type | enum (PaymentInstrumentType) | ज़रूरी है | पेमेंट के तरीके का टाइप. ज़रूरी है. | 
| name | स्ट्रिंग | ज़रूरी है | पेमेंट के तरीके के आइटम का नाम, जैसे कि क्रेडिट कार्ड का नाम. उदाहरण के लिए: एचडीएफ़सी इनफ़िनिया, अमेरिकन एक्सप्रेस प्लैटिनम. ज़रूरी है. | 
सदस्यता
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| name | स्ट्रिंग | ज़रूरी है | सदस्यता का नाम. ज़रूरी है. | 
| subscription_auto_added | बूलियन | जब कोई उपयोगकर्ता इस ऑफ़र का फ़ायदा उठाता है, तो क्या सदस्यता अपने-आप जुड़ जाती है | |
| cost | object (Money) | ज़रूरी है | सदस्यता का शुल्क. ज़रूरी है. | 
| subscription_duration | object (Duration) | ज़रूरी है | यह जानकारी देती है कि सदस्यता शुल्क में सदस्यता कितने समय के लिए मान्य है. ज़रूरी है. | 
| terms_and_conditions_url | स्ट्रिंग | इस सदस्यता से जुड़े पार्टनर के नियमों और शर्तों का यूआरएल. | 
कुल समय
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| seconds | स्ट्रिंग | समय की अवधि के सेकंड. यह वैल्यू -315,576,000,000 से +315,576,000,000 के बीच होनी चाहिए. ध्यान दें: इन सीमाओं का हिसाब इस तरह लगाया जाता है: 60 सेकंड/मिनट * 60 मिनट/घंटा * 24 घंटे/दिन * 365.25 दिन/साल * 10,000 साल | |
| nanos | संख्या | समय की अवधि के नैनोसेकंड रिज़ॉल्यूशन पर, सेकंड के साइन किए गए फ़्रैक्शन. एक सेकंड से कम अवधि को 0 secondsफ़ील्ड और पॉज़िटिव या नेगेटिवnanosफ़ील्ड से दिखाया जाता है. एक सेकंड या इससे ज़्यादा अवधि के लिए,nanosफ़ील्ड की वैल्यू शून्य नहीं होनी चाहिए. साथ ही, इसका चिह्नsecondsफ़ील्ड के चिह्न के जैसा होना चाहिए. यह -99,99,99,999 से लेकर +99,99,99,999 के बीच होना चाहिए. | 
शर्तें
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| url | स्ट्रिंग | पार्टनर के नियमों और शर्तों का यूआरएल. | |
| restricted_to_certain_users | बूलियन | यह जानकारी कि क्या ऑफ़र सिर्फ़ कुछ उपयोगकर्ताओं के लिए उपलब्ध है. | |
| terms_and_conditions | स्ट्रिंग | पार्टनर की ओर से उपलब्ध कराया गया मुख्य नियम और शर्तें. | |
| additional_terms_and_conditions | स्ट्रिंग का कलेक्शन | पार्टनर की मुख्य शर्तों के अलावा, अन्य नियम और शर्तें. | 
ValidityPeriod
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| valid_period | object (ValidityRange) | शुरू और खत्म होने का टाइमस्टैंप, जिसके दौरान ऑफ़र मान्य है. ये समय अलग-अलग दिनों के होने चाहिए. इसका मतलब है कि शुरू होने का समय 00:00 (दिन की शुरुआत) होना चाहिए और खत्म होने का समय, वैधता अवधि खत्म होने के दिन 00:00 (एक्सक्लूसिव) होना चाहिए. | |
| time_of_day | object (TimeOfDayWindow)का कलेक्शन | इससे यह पता चलता है कि किसी दिन ऑफ़र किस समयावधि के लिए मान्य है और ऑफ़र किन दिनों के लिए उपलब्ध है.
 उदाहरण के लिए:
 सोमवार: सुबह 10 बजे से शाम 5 बजे तक
 मंगलवार: सुबह 10 बजे से दोपहर 2 बजे तक
 मंगलवार:  शाम 5 बजे से रात 7 बजे तक
 बुधवार, गुरुवार, शुक्रवार, शनिवार, रविवार: दोपहर 3 बजे से शाम 7 बजे तक
 अगर कोई भी समय सेट नहीं किया गया है, तो इसका मतलब है कि ऑफ़र valid_periodमें हर समय उपलब्ध है. | |
| time_exceptions | object (ValidTimeException)का कलेक्शन | इससे ऊपर दी गई valid_period और valid_time_of_week के अपवादों के बारे में पता चलता है | 
ValidityRange
टाइमस्टैंप की क्लोज़-ओपन रेंज.
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| valid_from_time | object (Timestamp) | ज़रूरी है | रेंज की शुरुआत का समय (शामिल है). ज़रूरी है. | 
| valid_through_time | object (Timestamp) | रेंज के खत्म होने का समय (शामिल नहीं है). अगर इसे सेट नहीं किया जाता है, तो इसका मतलब है कि यह अवधि कभी खत्म नहीं होगी. ज़रूरी नहीं. | 
टाइमस्टैम्प
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| seconds | स्ट्रिंग | यह Unix epoch 1970-01-01T00:00:00Z से यूटीसी समय के सेकंड को दिखाता है. यह 0001-01-01T00:00:00Z से 9999-12-31T23:59:59Z के बीच होना चाहिए. | |
| nanos | संख्या | नैनोसेकंड रिज़ॉल्यूशन पर, एक सेकंड के नॉन-नेगेटिव फ़्रैक्शन. भिन्नात्मक वैल्यू वाली नेगेटिव सेकंड वैल्यू में, अब भी नॉन-नेगेटिव नैनो वैल्यू होनी चाहिए. ये वैल्यू, समय के हिसाब से आगे बढ़ती हैं. यह 0 से लेकर 999,999,999 के बीच होना चाहिए. | 
TimeOfDayWindow
TimeWindow ऑब्जेक्ट एक कंपोज़िट इकाई है. यह उन विंडो की सूची के बारे में बताती है जिनमें उपयोगकर्ता का ऑर्डर प्लेस या पूरा किया जा सकता है.
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| time_windows | object (TimeOfDayRange) | ज़रूरी है | वह समयावधि जिसके दौरान ऑर्डर दिया जा सकता है या पूरा किया जा सकता है. ज़रूरी है. | 
| day_of_week | enum (DayOfWeek)की कैटगरी | हफ़्ते के उन दिनों की सूची जिन पर विंडो लागू होती हैं. अगर कोई भी दिन सेट नहीं किया गया है, तो इसका मतलब है कि यह नीति हफ़्ते के सभी दिनों के लिए लागू होती है. ज़रूरी नहीं. | 
TimeOfDayRange
क्लोज़-ओपन टाइम रेंज.
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| open_time | object (TimeOfDay) | यह एक ऐसा समय है जो रेंज के दिन की शुरुआत का समय दिखाता है. इसमें यह समय शामिल होता है. अगर इसे सेट नहीं किया जाता है, तो इसका मतलब 00:00:00 है. ज़रूरी नहीं. | |
| close_time | object (TimeOfDay) | यह समय, रेंज के दिन के खत्म होने का समय दिखाता है. अगर इसे सेट नहीं किया जाता है, तो इसका मतलब है कि समय 23:59:59 है. ज़रूरी नहीं. | 
TimeOfDay
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| hours | संख्या | 24 घंटे वाले फ़ॉर्मैट में, दिन के घंटे. यह वैल्यू 0 से ज़्यादा या इसके बराबर होनी चाहिए. साथ ही, आम तौर पर यह वैल्यू 23 से कम या इसके बराबर होनी चाहिए. एपीआई, कारोबार के बंद होने के समय जैसे मामलों के लिए "24:00:00" वैल्यू को अनुमति दे सकता है. | |
| minutes | संख्या | एक घंटे के मिनट. यह वैल्यू 0 से ज़्यादा या इसके बराबर और 59 से कम या इसके बराबर होनी चाहिए. | |
| seconds | संख्या | एक मिनट के सेकंड. यह 0 से ज़्यादा या इसके बराबर होनी चाहिए. आम तौर पर, यह 59 से कम या इसके बराबर होनी चाहिए. अगर कोई एपीआई लीप-सेकंड की अनुमति देता है, तो वह वैल्यू 60 की अनुमति दे सकता है. | |
| nanos | संख्या | सेकंड के हिस्से, नैनोसेकंड में. यह 0 के बराबर या इससे ज़्यादा और 99,99,99,999 के बराबर या इससे कम होना चाहिए. | 
ValidTimeException
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| exceptional_period | object (ValidityRange) | शुरू और खत्म होने का वह टाइमस्टैंप जिसके लिए ऑफ़र मान्य नहीं है. ये समय अलग-अलग दिनों के होने चाहिए. इसका मतलब है कि शुरू होने का समय 00:00 (दिन की शुरुआत) होना चाहिए और खत्म होने का समय, छूट की अवधि खत्म होने के दिन 00:00 (एक्सक्लूसिव) होना चाहिए. | 
OfferSource
| नाम | ब्यौरा | 
|---|---|
| OFFER_SOURCE_UNSPECIFIED | |
| OFFER_SOURCE_AGGREGATOR | 
ActionType
| नाम | ब्यौरा | 
|---|---|
| ACTION_TYPE_UNSPECIFIED | |
| ACTION_TYPE_DINING | 
OfferMode
| नाम | ब्यौरा | 
|---|---|
| OFFER_MODE_OTHER | |
| OFFER_MODE_WALK_IN | |
| OFFER_MODE_FREE_RESERVATION | |
| OFFER_MODE_PAID_RESERVATION | |
| OFFER_MODE_ONLINE_ORDER | 
OfferCategory
ऑफ़र की कैटगरी. बुनियादी ऑफ़र, सभी खरीदारों के लिए उपलब्ध एक स्टैंडर्ड ऑफ़र होता है. जैसे, 10,000 रुपये से ज़्यादा खर्च करने पर 10% की छूट. अगर किसी कूपन या पेमेंट के तरीके से बुनियादी ऑफ़र पर पाबंदी लगाई गई है, तो उससे जुड़े फ़ील्ड सेट किए जाएंगे. हमारे पास ऐड ऑन x ऑफ़र भी हैं, जैसे कि ADD_ON_PAYMENT_OFFER. ज़्यादा छूट पाने के लिए, इस तरह के ऑफ़र को अन्य ऑफ़र में जोड़ा जा सकता है.
| नाम | ब्यौरा | 
|---|---|
| OFFER_CATEGORY_UNSPECIFIED | |
| OFFER_CATEGORY_BASE_OFFER | |
| OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER | |
| OFFER_CATEGORY_ADD_ON_COUPON_OFFER | |
| OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER | 
FeeUnit
| नाम | ब्यौरा | 
|---|---|
| FEE_UNIT_UNSPECIFIED | |
| FEE_UNIT_PER_GUEST | |
| FEE_UNIT_PER_TRANSACTION | 
FeeType
| नाम | ब्यौरा | 
|---|---|
| FEE_TYPE_UNSPECIFIED | |
| FEE_TYPE_FIXED | |
| FEE_TYPE_VARIABLE | 
MealType
| नाम | ब्यौरा | 
|---|---|
| MEAL_TYPE_UNSPECIFIED | |
| MEAL_TYPE_BREAKFAST | |
| MEAL_TYPE_LUNCH | |
| MEAL_TYPE_DINNER | 
PaymentInstrumentType
| नाम | ब्यौरा | 
|---|---|
| PAYMENT_INSTRUMENT_TYPE_UNSPECIFIED | |
| PAYMENT_INSTRUMENT_CREDIT_CARD | |
| PAYMENT_INSTRUMENT_DEBIT_CARD | |
| PAYMENT_INSTRUMENT_BANK_ACCOUNT | |
| PAYMENT_INSTRUMENT_UPI | |
| PAYMENT_INSTRUMENT_ONLINE_WALLET | 
DayOfWeek
यह हफ़्ते के किसी दिन को दिखाता है.
| नाम | ब्यौरा | 
|---|---|
| DAY_OF_WEEK_UNSPECIFIED | हफ़्ते का दिन तय नहीं किया गया है. | 
| MONDAY | सोमवार | 
| TUESDAY | मंगलवार | 
| WEDNESDAY | बुधवार | 
| THURSDAY | गुरुवार | 
| FRIDAY | शुक्रवार | 
| SATURDAY | शनिवार | 
| SUNDAY | रविवार | 
offer_specification
यह छूट, प्रतिशत या कुल वैल्यू में से घटाई गई तय वैल्यू के तौर पर दी जा सकती है. उदाहरण के लिए: 1. फ़ाइनल बिल पर 10% की छूट. 2. किसी ऑर्डर पर 15 डॉलर की छूट. कारोबारी या कंपनियां, 'एक खरीदें, एक मुफ़्त पाएं' जैसे कस्टम छूट वाले ऑफ़र भी दे सकती हैं. इसके लिए, उन्हें खास जानकारी वाले फ़ील्ड का इस्तेमाल करना होगा. ज़रूरी है.
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| discount_percent | संख्या | 
 | बिल के उस हिस्से का प्रतिशत जिस पर छूट दी गई है. [0, 100] पूरे खाने पर लागू होने वाले 1+1 या 50% की छूट वाले ऑफ़र के लिए (जैसे, बुफ़े पर 1+1, पूरे बिल पर 1+1, सेट मेन्यू पर 1+1), इस वैल्यू को 50 पर सेट किया जा सकता है. | 
| discount_value | object (Money) | 
 | छूट की तय वैल्यू. | 
| other_offer_detail_text | स्ट्रिंग | 
 | छूट के बारे में बताने के लिए फ़्री-फ़ॉर्म टेक्स्ट. खास तौर पर 1+1 ऑफ़र (जैसे, एक के साथ एक ड्रिंक मुफ़्त, एक के साथ एक मेन कोर्स मुफ़्त, 1+1 चुने गए मेन्यू आइटम) के लिए, यहां यह जानकारी दी जानी चाहिए. | 
लागत
| फ़ील्ड का नाम | टाइप | आवश्यकता | ब्यौरा | 
|---|---|---|---|
| amount | object (Money) | 
 | |
| amount_range | object (MoneyRange) | 
 | 
फ़ीड को अपलोड करना
ऑफ़र फ़ीड को Generic फ़ीड एसएफ़टीपी सर्वर पर अपलोड करना ज़रूरी है. निर्देशों के लिए, जेनेरिक फ़ीड के एसएफ़टीपी सर्वर को इस्तेमाल करने का तरीका बताने वाला ट्यूटोरियल देखें. साथ ही, अपनी डिस्क्रिप्टर फ़ाइल में name को google.offer पर सेट करें.
अपलोड करने की फ़्रीक्वेंसी
आम तौर पर, Google को हर दिन एक फ़ीड अपलोड करने की ज़रूरत होती है. फ़ीड अपलोड करने की फ़्रीक्वेंसी को बढ़ाया या घटाया जा सकता है. यह इस बात पर निर्भर करता है कि आपकी ओर से ऑफ़र अपडेट करने की फ़्रीक्वेंसी क्या है, ताकि लगातार सटीक जानकारी दी जा सके. अपने Google पीओसी से संपर्क करें.
यह डेटा, Google पर दिखने में कुछ घंटे लेगा.
वर्गीकरण की सुविधा
- OFFER_CATEGORY_BASE_OFFER: ऐसे ऑफ़र जिन्हें किसी अन्य ऑफ़र के साथ जोड़े बिना, अलग से क्लेम किया जा सकता है. इसमें ये शामिल हैं:- पूरे बिल पर एक जैसी छूट (जैसे, 20% की छूट)
- सदस्यता के ऑफ़र (जैसे, सदस्यता लेने पर मुफ़्त मिठाई)
- ऐसे मामलों में पेमेंट के ऑफ़र जहां रेस्टोरेंट के लिए कोई अन्य बुनियादी ऑफ़र उपलब्ध नहीं हैं
 
- ऐड-ऑन ऑफ़र: ऐसे ऑफ़र जिन्हें पाने के लिए, बुनियादी ऑफ़र को क्लेम करना ज़रूरी होता है. इनमें ये शामिल हैं:
- OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER(उदाहरण के लिए, चुनिंदा क्रेडिट कार्ड से पेमेंट करने पर 10% की अतिरिक्त छूट)
- OFFER_CATEGORY_ADD_ON_COUPON_OFFER(उदाहरण के लिए, किसी खास कूपन कोड के साथ मुफ़्त ड्रिंक)
- OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER(उदाहरण के लिए, सदस्यों के लिए 10% की अतिरिक्त छूट)
 
अन्य बातें:
- अगर किसी रेस्टोरेंट के लिए कोई मूल ऑफ़र सेट नहीं किया गया है, तो ऐड-ऑन ऑफ़र नहीं दिखेंगे.
अगर कोई बुनियादी ऑफ़र नहीं है, तो पेमेंट, सदस्यता या कूपन से जुड़ा कोई भी ऐसा ऑफ़र जिसे किसी अन्य ऑफ़र के साथ जोड़े बिना ही क्लेम किया जा सकता है उसे OFFER_CATEGORY_BASE_OFFERके तौर पर टैग किया जाना चाहिए.- टाइप के आधार पर, PaymentInstrument,SubscriptionयाCouponके लिए ज़रूरी डेटा सेट किया जाना चाहिए.
- पार्टनर को इन ऑफ़र की दो कॉपी देनी होंगी, ताकि उन स्थितियों को कवर किया जा सके जहां ये ऑफ़र, बुनियादी ऑफ़र और ऐड-ऑन ऑफ़र, दोनों के तौर पर काम करते हैं. इसके बाद, ऐड-ऑन ऑफ़र की कॉपी को कई रेस्टोरेंट के लिए सेट किया जा सकता है. इसके लिए, entity_idsयाadd_on_offer_applicable_to_all_entitiesका इस्तेमाल करें.
 
- टाइप के आधार पर, 
- जब किसी रेस्टोरेंट के पास एक से ज़्यादा बुनियादी ऑफ़र हों और उन्हें एक साथ इस्तेमाल किया जा सकता हो, तो सभी बुनियादी ऑफ़र को OFFER_CATEGORY_BASE_OFFERके तौर पर टैग किया जाना चाहिए. साथ ही, पेमेंट, सदस्यता या कूपन वाले बुनियादी ऑफ़र को ऐड-ऑन ऑफ़र के टाइप के तौर पर भी भेजा जाना चाहिए.
- ValidityPeriodका इस्तेमाल, ऐड-ऑन ऑफ़र को बुनियादी ऑफ़र के तौर पर सिर्फ़ तब चालू करने के लिए किया जाना चाहिए, जब कोई बुनियादी ऑफ़र चालू न हो.
उदाहरण के तौर पर:
- कोई रेस्टोरेंट, किसी खास क्रेडिट कार्ड से पेमेंट करने पर 5% की छूट देता है. साथ ही, किसी खास कूपन कोड के साथ मुफ़्त ड्रिंक देता है - क्रेडिट कार्ड पर मिलने वाले 5% की छूट वाले ऑफ़र की दो कॉपी भेजी जानी चाहिए. एक कॉपी को OFFER_CATEGORY_BASE_OFFERके तौर पर और दूसरी कॉपी कोOFFER_CATEGORY_ADD_ON_PAYMENT_OFFERके तौर पर टैग किया जाना चाहिए. साथ ही, इसमेंPaymentInstrumentकी जानकारी शामिल होनी चाहिए.
- कूपन कोड के साथ मुफ़्त ड्रिंक का ऑफ़र, OFFER_CATEGORY_ADD_ON_COUPON_OFFERके तौर पर भेजा जाना चाहिए. इसमेंCouponकी जानकारी शामिल होनी चाहिए.
 
- क्रेडिट कार्ड पर मिलने वाले 5% की छूट वाले ऑफ़र की दो कॉपी भेजी जानी चाहिए. एक कॉपी को 
- एक रेस्टोरेंट, बिना बुकिंग के आने वाले लोगों को 10% की छूट देता है. साथ ही, किसी खास क्रेडिट कार्ड से पेमेंट करने पर 5% की छूट देता है. इन दोनों छूट को एक साथ इस्तेमाल किया जा सकता है. - स्टोर में जाकर खरीदारी करने पर मिलने वाले 10% के ऑफ़र को OFFER_CATEGORY_BASE_OFFERके तौर पर टैग किया जाना चाहिए.
- क्रेडिट कार्ड से पेमेंट करने पर 5% की छूट वाले ऑफ़र की दो कॉपी होनी चाहिए. इनमें से एक को OFFER_CATEGORY_BASE_OFFERके तौर पर और दूसरी कोOFFER_CATEGORY_ADD_ON_PAYMENT_OFFERके तौर पर टैग किया जाना चाहिए.
 
- स्टोर में जाकर खरीदारी करने पर मिलने वाले 10% के ऑफ़र को 
- एक रेस्टोरेंट, हफ़्ते के दिनों में सिर्फ़ दोपहर के खाने पर 10% की छूट देता है. साथ ही, किसी खास क्रेडिट कार्ड से पेमेंट करने पर, किसी भी समय 5% की छूट मिलती है. - 10% की छूट वाले ऑफ़र के लिए, ValidityPeriodको इस तरह सेट किया जाना चाहिए कि यह सिर्फ़ हफ़्ते के दिनों में, रेस्टोरेंट में दोपहर के खाने के समय दिखे.
- क्रेडिट कार्ड पर 5% की छूट वाले ऑफ़र की दो कॉपी भेजी जानी चाहिए.
- एक कॉपी को OFFER_CATEGORY_BASE_OFFERके तौर पर टैग किया जाना चाहिए. साथ ही, इसमेंPaymentInstrumentकी जानकारी शामिल होनी चाहिए. जब 10% की छूट वाला लंच ऑफ़र चालू हो, तब हफ़्ते के कामकाजी दिनों में लंच के समय को बाहर रखने के लिए,ValidityPeriodको सेट करें
- एक कॉपी को OFFER_CATEGORY_ADD_ON_PAYMENT_OFFERके तौर पर टैग किया जाना चाहिए. इसमेंPaymentInstrumentकी जानकारी शामिल होनी चाहिए.
 
- एक कॉपी को 
- इस रेस्टोरेंट के लिए, पेमेंट से जुड़े अन्य सभी ऑफ़र को OFFER_CATEGORY_ADD_ON_PAYMENT_OFFERके तौर पर टैग किया जाना चाहिए.
 
- 10% की छूट वाले ऑफ़र के लिए, 
डेवलपमेंट और लॉन्च करने की प्रोसेस
इंटिग्रेशन के दौरान, Partner Portal आपको डेवलपमेंट के आधार पर जानकारी और सुझाव/राय देने में मदद करेगा. डेवलपमेंट की प्रोसेस इस तरह होगी:
- इंटिग्रेशन को सबसे पहले सैंडबॉक्स एनवायरमेंट में डेवलप किया जाएगा. आपको Google सैंडबॉक्स एनवायरमेंट में, प्रोडक्शन डेटा (या सीधे तौर पर प्रोडक्शन डेटा) का एक्सपोर्ट इस्तेमाल करना चाहिए. इससे यह पक्का करने में मदद मिलती है कि आपका डेवलपमेंट, सभी मुश्किल मामलों को कवर करता है. साथ ही, Google को डेटा क्वालिटी का आकलन करने और आपके डेटा मॉडल के आधार पर बेहतर तरीके से आपकी मदद करने की अनुमति देता है.
- Google सैंडबॉक्स एनवायरमेंट में, हर दिन Merchant, Services, और Deals फ़ीड अपलोड करने के बाद, Google की टीम आपके फ़ीड का आकलन करेगी. Google की टीम से मंज़ूरी मिलने के बाद, अपने कोड को प्रोडक्शन में पुश किया जा सकता है. साथ ही, Google के प्रोडक्शन एनवायरमेंट में प्रोडक्शन डेटा भेजना शुरू किया जा सकता है.
- प्रोडक्शन इंटिग्रेशन की पूरी तरह से जांच करने के बाद, Google की टीम भी इसकी जांच करेगी. सभी जांच पूरी हो जाने के बाद, आपका इंटिग्रेशन लॉन्च हो जाएगा.
मॉनिटर करने के लिए
उपयोगकर्ताओं को बेहतर अनुभव देने के लिए, Google यह जांच करेगा कि दिए गए ऑफ़र मान्य हैं, सही हैं, और लॉन्च से पहले और बाद में हमारी नीति की शर्तों को पूरा करते हैं. इसके लिए, Google मैन्युअल और ऑटोमेटेड, दोनों तरीकों से समीक्षा करेगा. इन समीक्षाओं के नतीजे, Action Center के ऑफ़र डैशबोर्ड में देखे जा सकेंगे. यह सिर्फ़ प्रोडक्शन के लिए उपलब्ध है. इस मॉनिटरिंग के नतीजों का इस्तेमाल, ऑफ़र की रैंकिंग पर असर डालने के लिए किया जा सकता है.
पक्का करें कि पेज को पूरी तरह से लोड होने में पांच सेकंड से कम समय लगे. ऐसा न होने पर, इसे गड़बड़ी माना जाएगा और Bad link के तौर पर फ़्लैग किया जाएगा.
ऑटोमेटेड चेक (क्रॉलर)
Google की क्वालिटी टीम, क्रॉलर लागू करती है. क्रॉलर ऐसी स्क्रिप्ट होती हैं जो वेब ब्राउज़र को अपने-आप काम करने के लिए सेट करती हैं. इससे कुछ क्लिक किए जा सकते हैं और ऑफ़र की जानकारी निकाली जा सकती है. इनका इस्तेमाल सिर्फ़ क्वालिटी की जांच करने के लिए किया जाता है.
क्वेरी की संख्या
उदाहरण के लिए, अगर हमने हर दिन 5,000 जांचें भेजने का फ़ैसला किया है, तो इसका मतलब है कि हमारा क्रॉलर हर दिन 5,000 बार (दिन भर में समान रूप से, यानी हर 17 सेकंड में एक बार) ये सभी कार्रवाइयां करता है. ये कार्रवाइयां, कोई सामान्य उपयोगकर्ता करता है:
- Google Search से शुरू करें और पार्टनर लिंक पर क्लिक करें.
- ऑफ़र की जानकारी ढूंढें.
- अगर ऑफ़र के लिए बुकिंग करना ज़रूरी है, तो बुकिंग फ़्लो जारी रहेगा. इससे यह पुष्टि की जा सकेगी कि ऑफ़र, तय किए गए समय पर उपलब्ध है या नहीं. हालांकि, कोई बुकिंग नहीं की जाएगी.
वेब स्क्रैपर का पता लगाने की सुविधा
यह पक्का करें कि वेब स्क्रैपर को बैन न किया जाए. ऐसा होने पर, वह यह तय कर सकता है कि ऑफ़र उपलब्ध नहीं हैं. इसके लिए, यह पक्का करें कि आपका सिस्टम, हमारे वेब स्क्रैपर को हर समय आपके पेज पर क्वेरी करने की अनुमति देता हो. हमारे वेब स्क्रैपर की पहचान करने के लिए:
- वेब स्क्रैपर के यूज़र-एजेंट में "Google-Offers" स्ट्रिंग शामिल होगी:
- उदाहरण: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google-Offers) Chrome/104.0.5112.101 Safari/537.36
 
- यह भी देखा जा सकता है कि कॉल, Google से आ रहे हैं या नहीं. इसके लिए, रिवर्स डीएनएस का इस्तेमाल करें. इसके बारे में "Googlebot और Google के अन्य क्रॉलर की पुष्टि करना" लेख में बताया गया है.
हमारे मामले में, रिवर्स डीएनएस रिज़ॉल्यूशन इस पैटर्न का पालन करता है:
google-proxy-***-***-***-***.google.com.
तकनीकी व्यवहार
कैश मेमोरी में सेव करना
आम तौर पर, हमारे क्रॉलर को इस तरह कॉन्फ़िगर किया जाता है कि वे रिस्पॉन्स में मौजूद सभी स्टैंडर्ड एचटीटीपी कैशिंग हेडर का पालन करें. इससे पार्टनर की वेबसाइट पर लोड कम होता है. इसका मतलब है कि सही तरीके से कॉन्फ़िगर की गई वेबसाइटों के लिए, हम ऐसे कॉन्टेंट को बार-बार फ़ेच करने से बचते हैं जिसमें कभी-कभी बदलाव होता है. उदाहरण के लिए, JavaScript लाइब्रेरी. कैशिंग को लागू करने के बारे में ज़्यादा जानने के लिए, एचटीटीपी कैशिंग से जुड़ा यह दस्तावेज़ पढ़ें.