Skip to main content
कृपया ध्यान दें: हमने search पोस्ट्स और पोस्ट संख्या का नया संस्करण X API v2 में जारी किया है। हम आपको सलाह देते हैं कि X API v2 में क्या नया है, यह देखें।  इन एंडपॉइंट्स को पोस्ट संपादन मेटाडेटा शामिल करने के लिए अपडेट किया गया है। इस मेटाडेटा के बारे में अधिक जानने के लिए “पोस्ट्स संपादित करें” के मूलभूत पेज को देखें। 

अवलोकन

Enterprise एंटरप्राइज़ APIs केवल हमारे managed access levels के अंतर्गत उपलब्ध हैं। इन APIs का उपयोग करने के लिए, आपको पहले हमारी एंटरप्राइज़ sales team के साथ एक खाता सेट अप करना होगा। अधिक जानकारी के लिए HERE देखें। आप X API search पोस्ट ऑफ़रिंग्स की पूरी सूची HERE पर देख सकते हैं। दो एंटरप्राइज़ search APIs हैं:
  1. 30-Day Search API पिछले 30 दिनों का डेटा प्रदान करता है।
  2. Full-Archive Search API मार्च 2006 में किए गए पहले पोस्ट तक के X डेटा के पूरे corpus तक पूर्ण और तुरंत पहुँच प्रदान करता है।
ये RESTful APIs हर request में अधिकतम 2,048 characters तक की एक single query को support करती हैं। Queries, PowerTrack rule syntax में लिखी जाती हैं - अधिक जानकारी के लिए Rules and filtering देखें। उपयोगकर्ता किसी भी time period को minute-level granularity तक निर्दिष्ट कर सकते हैं। हालांकि, responses आपके निर्दिष्ट maxResults या 31 days, इनमें से जो कम हो, तक सीमित होंगी और परिणामों के अगले set के लिए paginate करने हेतु एक next token शामिल करेंगी। यदि time parameters निर्दिष्ट नहीं किए गए हैं, तो API सबसे हाल के 30 दिनों का मेल खाता डेटा लौटाएगा। एंटरप्राइज़ search APIs, minute-level granularity के साथ Post archive तक low-latency, full-fidelity, query-based access प्रदान करती हैं। पोस्ट डेटा reverse chronological order में दिया जाता है, जिसकी शुरुआत आपके query से मेल खाने वाले सबसे हाल के पोस्ट से होती है। पोस्ट्स, प्रकाशित होने के लगभग 30 seconds बाद search API से उपलब्ध हो जाते हैं। ये search endpoints edited Post metadata प्रदान करते हैं। 29 सितंबर, 2022 से बनाए गए पोस्ट्स के सभी objects में Post edit metadata शामिल होता है, भले ही पोस्ट कभी संपादित न किया गया हो। हर बार जब किसी पोस्ट को संपादित किया जाता है, तो एक नया Post ID बनाया जाता है। किसी Post का edit history, Post IDs की एक array में दर्ज होता है, जिसकी शुरुआत original ID से होती है। ये endpoints हमेशा सबसे हाल का edit लौटाएँगे, साथ ही कोई भी edit history भी। 30-minute edit window के बाद collected किया गया कोई भी Post उसके final version को दर्शाएगा। Edit Post metadata के बारे में अधिक जानने के लिए, Edit Posts fundamentals पेज देखें। Requests में एक maxResultsparameter शामिल होता है, जो प्रति API रिस्पॉन्स लौटाए जाने वाले पोस्ट्स की अधिकतम संख्या निर्दिष्ट करता है। यदि query से जुड़े पोस्ट्स की संख्या प्रति response परिणामों की इस अधिकतम सीमा से अधिक है, तो रिस्पॉन्स में एक next token शामिल किया जाता है। इन next tokens का उपयोग बाद की requests में query से जुड़े पोस्ट्स के पूरे set में page करने के लिए किया जाता है। ये एंटरप्राइज़ search APIs एक counts endpoint प्रदान करती हैं, जो उपयोगकर्ताओं को अपनी query से जुड़े data volume का अनुरोध करने में सक्षम बनाता है। 

अनुरोध प्रकार

एंटरप्राइज़ Search APIs दो प्रकार के अनुरोधों का समर्थन करते हैं:

खोज अनुरोध (डेटा)

एंटरप्राइज़ Search APIs के लिए खोज अनुरोध आपको किसी दिए गए समय-फ़्रेम में प्रति रिस्पॉन्स अधिकतम 500 परिणाम प्राप्त करने की सुविधा देते हैं, साथ ही अतिरिक्त डेटा के लिए पेजिनेशन करने की क्षमता भी देते हैं। maxResults पैरामीटर का उपयोग करके, आप डिस्प्ले उपयोग-मामलों के लिए छोटे पेज साइज़ निर्दिष्ट कर सकते हैं (ताकि आपका उपयोगकर्ता आवश्यकता अनुसार और परिणामों का अनुरोध कर सके) या बड़े डेटा पुल के लिए बड़े पेज साइज़ (अधिकतम 500 तक) चुन सकते हैं। डेटा उल्टे कालानुक्रमिक क्रम में दिया जाता है और डिलीवरी के समय अनुपालक होता है।

गणना अनुरोध (पोस्ट गणना)

गणना अनुरोध आपको ऐतिहासिक गतिविधि गणनाएँ प्राप्त करने की सुविधा देते हैं, जो अनुरोधित समयावधि के दौरान किसी दी गई क्वेरी से मेल खाने वाली गतिविधियों की संख्या दिखाती हैं। रिस्पॉन्स मूलतः आपको गणनाओं का एक हिस्टोग्राम देगा, जिसे दिन, घंटे या मिनट के अनुसार बकेट किया गया होगा (डिफ़ॉल्ट बकेट hour है)। यह ध्यान रखना महत्वपूर्ण है कि गणना परिणाम हमेशा उन अनुपालन घटनाओं (उदाहरण के लिए, पोस्ट्स हटाए जाना) को नहीं दर्शाते, जो किसी पोस्ट के प्रकाशित होने के काफ़ी समय बाद (7+ दिन) होती हैं; इसलिए, यह अपेक्षित है कि गणना मेट्रिक हमेशा उसी क्वेरी के लिए किसी डेटा अनुरोध से मेल न खाए। बिलिंग नोट: डेटा और गणना एंडपॉइंट्स पर किया गया प्रत्येक अनुरोध – पेजिनेशन अनुरोधों सहित – बिल योग्य अनुरोध के रूप में गिना जाता है। इसलिए, यदि एक ही क्वेरी के लिए परिणामों के कई पेज हैं, तो परिणामों के X पेजों के बीच पेजिनेट करना बिलिंग के हिसाब से X अनुरोधों के बराबर होगा।

उपलब्ध ऑपरेटर

एंटरप्राइज़ search APIs 2,048 वर्णों तक के नियमों का समर्थन करते हैं। एंटरप्राइज़ search APIs नीचे सूचीबद्ध ऑपरेटरों का समर्थन करते हैं। विस्तृत विवरण के लिए यहाँ देखें।  नोट: ऑपरेटरों को एम्बेड/नेस्ट न करें; (“#cats”) search APIs के साथ cats के रूप में रिज़ॉल्व होगा।   ‘lang:’ ऑपरेटर तथा सभी ‘is:’ और ‘has:’ ऑपरेटर standalone ऑपरेटर के रूप में उपयोग नहीं किए जा सकते हैं, और इन्हें किसी अन्य clause के साथ संयोजित करना आवश्यक है (उदा. @XDevelopers has:links)।     Search APIs, tokenization/matching कार्यक्षमता के कारण, सीमित ऑपरेटर सेट का उपयोग करते हैं। एंटरप्राइज़ real-time और batched historical APIs अतिरिक्त ऑपरेटर प्रदान करते हैं। अधिक विवरण के लिए यहाँ देखें। अधिक जानकारी के लिए, कृपया ऑपरेटरों के साथ शुरुआत करना गाइड देखें।

डेटा उपलब्धता / महत्वपूर्ण तिथि

Full-Archive search API का उपयोग करते समय, ध्यान रखें कि 2006 से X प्लेटफ़ॉर्म लगातार विकसित होता रहा है। जैसे-जैसे नई सुविधाएँ जोड़ी गईं, आधारभूत JSON ऑब्जेक्ट्स में नया मेटाडेटा भी जोड़ा गया। इसलिए यह समझना महत्वपूर्ण है कि वे पोस्ट एट्रिब्यूट्स कब जोड़े गए, जिन पर search operators मिलान करते हैं। नीचे महत्वपूर्ण मेटाडेटा के कुछ प्रमुख ‘शुरुआती’ दिनांक दिए गए हैं। पोस्ट एट्रिब्यूट्स पहली बार कब पेश किए गए थे, इसके बारे में अधिक जानने के लिए, इस गाइड को देखें।  
  • पहला पोस्ट: 3/21/2006
  • पहला Native Retweets: 11/6/2009
  • पहला Geo-tagged पोस्ट: 11/19/2009
  • फ़िल्टरिंग के लिए URLs पहली बार इंडेक्स किए गए: 8/27/2011
  • उन्नत URL विस्तार मेटाडेटा (वेबसाइट शीर्षक और विवरण): 12/1/2014
  • Profile Geo enrichment मेटाडेटा और फ़िल्टरिंग: 2/17/2015

डेटा अपडेट और परिवर्तनशीलता

एंटरप्राइज़ search APIs के साथ, किसी पोस्ट के भीतर मौजूद कुछ डेटा परिवर्तनशील होता है, यानी प्रारंभिक आर्काइविंग के बाद उसे अपडेट या बदला जा सकता है। यह परिवर्तनशील डेटा दो श्रेणियों में आता है:
  • उपयोगकर्ता ऑब्जेक्ट मेटाडेटा:
    • उपयोगकर्ता का @handle (संख्यात्मक ID कभी नहीं बदलता)
    • बायो विवरण
    • गणनाएँ: statuses, followers, friends, favorites, lists
    • प्रोफ़ाइल स्थान
    • अन्य विवरण, जैसे time zone और language
  • पोस्ट के आँकड़े - यानी ऐसी कोई भी चीज़ जिसे उपयोगकर्ता की कार्रवाइयों से प्लेटफ़ॉर्म पर बदला जा सकता है (उदाहरण नीचे दिए गए हैं):
    • Favorites की संख्या
    • Retweet की संख्या
इनमें से अधिकांश मामलों में, search APIs डेटा को वैसे लौटाते हैं जैसा वह query-time पर प्लेटफ़ॉर्म पर मौजूद होता है, न कि पोस्ट बनाए जाने के समय जैसा था। हालांकि, select operators (जैसे from, to, @, is:verified) का उपयोग करने वाली queries के मामले में, ऐसा हमेशा नहीं हो सकता। हमारे index में डेटा नियमित रूप से अपडेट किया जाता है, और सबसे हाल की समय-सीमाओं के लिए इसकी आवृत्ति अधिक होती है। परिणामस्वरूप, कुछ मामलों में लौटाया गया डेटा X.com पर वर्तमान में दिख रहे डेटा से पूरी तरह मेल नहीं खा सकता, लेकिन वह उस समय के डेटा से मेल खाता है जब उसे आख़िरी बार index किया गया था। ध्यान दें, असंगति की यह समस्या केवल उन queries पर लागू होती है जहाँ operator परिवर्तनशील डेटा पर लागू होता है। इसका एक उदाहरण usernames के लिए फ़िल्टर करना है, और इसका सबसे अच्छा समाधान यह है कि ऐसी queries के लिए @handles के बजाय उपयोगकर्ताओं की संख्यात्मक IDs का उपयोग किया जाए।

सिंगल बनाम मल्टी-थ्रेडेड अनुरोध

प्रत्येक ग्राहक के search endpoint के लिए एक निर्धारित rate limit होती है। Full-Archive search के लिए डिफ़ॉल्ट प्रति-मिनट rate limit 120 requests per minute है, यानी औसतन 2 queries per second (QPS)। इस औसत QPS का मतलब है कि सैद्धांतिक रूप से API को हर सेकंड 2 requests भेजी जा सकती हैं। प्रोडक्ट में उपलब्ध pagination सुविधा को देखते हुए, यदि किसी one-year query से एक मिलियन पोस्ट्स जुड़ी हों और वे पूरे वर्ष में समान रूप से वितरित हों, तो पूरा डेटा प्राप्त करने के लिए 2,000 से अधिक requests की आवश्यकता होगी (यह मानते हुए कि ‘maxResults’ 500 है)। यदि प्रति रिस्पॉन्स 2 सेकंड लगते हैं, तो उस पूरे डेटा को एक single thread के ज़रिए serially/sequentially pull करने में 4,000 सेकंड (या एक घंटे से थोड़ा अधिक) लगेंगे (पिछले रिस्पॉन्स के “next” token का उपयोग करते हुए 1 request per second)। बुरा नहीं! अब उस स्थिति पर विचार करें, जहाँ डेटा प्राप्त करने के लिए बारह parallel threads का उपयोग किया जाता है। यदि one-year period में एक मिलियन पोस्ट्स समान रूप से वितरित हों, तो आप requests को बारह parallel threads (multi-threaded) में बाँट सकते हैं और एक ही “job” के लिए प्रति-सेकंड rate limit का अधिक प्रभावी उपयोग कर सकते हैं। दूसरे शब्दों में, जिन महीनों में आपकी रुचि है, उनके लिए आप प्रति माह एक thread चला सकते हैं, और ऐसा करके डेटा 12x तेज़ी से प्राप्त किया जा सकता है (या ~6 मिनट में)। यह multi-threaded उदाहरण counts endpoint पर भी समान रूप से लागू होता है। उदाहरण के लिए, यदि आप दो-वर्षीय अवधि के लिए पोस्ट की गणनाएँ प्राप्त करना चाहते हैं, तो आप single-threaded request कर सकते हैं और counts में 31 दिनों के अंतराल पर पीछे की ओर page कर सकते हैं। यदि प्रति रिस्पॉन्स 2 सेकंड लगते हैं, तो 24 API requests करने और counts का पूरा सेट प्राप्त करने में लगभग 48 सेकंड लगेंगे। हालाँकि, आपके पास एक बार में कई one-month requests करने का विकल्प भी है। जब प्रति सेकंड 12 requests की जाती हैं, तो counts का पूरा सेट लगभग 2 सेकंड में प्राप्त किया जा सकता है।

पुनः प्रयास लॉजिक

यदि एंटरप्राइज़ search APIs के साथ आपको 503 त्रुटि मिलती है, तो संभव है कि यह एक अस्थायी त्रुटि हो और थोड़ी देर बाद अनुरोध को फिर से भेजने पर इसका समाधान हो जाए। यदि अनुरोध लगातार 4 बार विफल हो जाता है, और आपने प्रत्येक विफलता के बीच कम से कम 10 मिनट का इंतज़ार किया है, तो समस्या-निवारण के लिए निम्न चरण अपनाएँ:
  • अनुरोध जिस समयावधि को कवर करता है, उसे कम करके फिर से प्रयास करें। यदि फिर भी सफलता न मिले, तो इसे घटाते-घटाते 6 घंटे की समय-विंडो तक ले आएँ।
  • यदि आप बड़ी संख्या में terms को OR कर रहे हैं, तो उन्हें अलग-अलग rules में बाँट दें और प्रत्येक को अलग-अलग फिर से आज़माएँ।
  • यदि आप अपने rule में बड़ी संख्या में exclusions का उपयोग कर रहे हैं, तो rule में negated terms की संख्या कम करें और फिर से प्रयास करें।

त्वरित शुरुआत

एंटरप्राइज़ Search Posts: 30-Day API के साथ शुरुआत करना

एंटरप्राइज़ Search Posts: 30-Day API आपको पिछले 30 दिनों के भीतर किए गए पोस्ट्स उपलब्ध कराता है। पोस्ट्स का मिलान आपकी रिक्वेस्ट में दी गई क्वेरी के आधार पर किया जाता है और फिर उन्हें आपको वापस भेजा जाता है। क्वेरी एक नियम है, जिसमें आप यह निर्धारित करते हैं कि आपको वापस मिलने वाले पोस्ट में क्या होना चाहिए। इस ट्यूटोरियल में, हम X खाते @XDevelopers से अंग्रेज़ी में किए गए पोस्ट्स खोजेंगे। आपको अपने payload में जो पोस्ट्स वापस मिलते हैं, वे data फ़ॉर्मैट में हो सकते हैं, जो आपको पोस्ट का पूरा payload देता है, या counts फ़ॉर्मैट में हो सकते हैं, जो आपको मिलान किए गए पोस्ट्स की संख्यात्मक गणना का डेटा देता है। हम data और counts endpoints पर रिक्वेस्ट करने के लिए cURL का उपयोग करेंगे। आपको निम्नलिखित की आवश्यकता होगी:
  • [एक एंटरप्राइज़ खाता]https://developer.x.com/en/products/x-api/enterprise
  • आपका username, password, और account name
  • आपके search endpoint से संबद्ध label, जैसा कि console.gnip.com पर प्रदर्शित होता है

डेटा endpoint ऐक्सेस करना

data endpoint हमें मेल खाने वाले पोस्ट्स का पूरा Post payload देगा। हम अंग्रेज़ी में @XDevelopers से आने वाले पोस्ट्स खोजने के लिए from: और lang: operators का उपयोग करेंगे। अधिक operators के लिए यहाँ क्लिक करें
cURL, URL syntax का उपयोग करके फ़ाइलें प्राप्त या भेजने के लिए एक command-line tool है।नीचे दिए गए cURL request को अपनी command line में कॉपी करने से पहले, इनमें आवश्यक बदलाव कर लें:
  • Username <USERNAME> उदा. email@domain.com
  • Account name <ACCOUNT-NAME> उदा. john-doe
  • Label <LABEL> उदा. prod
  • fromDate and toDate उदा. "fromDate":"201811010000", "toDate":"201811122359"
अपना request भेजने के बाद, आपसे password दर्ज करने के लिए कहा जाएगा।

डेटा एंडपॉइंट रिस्पॉन्स पेलोड

आपके API अनुरोध से वापस मिलने वाला पेलोड नीचे दिखाए अनुसार JSON फ़ॉर्मैट में होगा।

counts endpoint को ऐक्सेस करना

counts endpoint का उपयोग करके, हम @XDevelopers खाते से की गई अंग्रेज़ी पोस्ट्स की संख्या प्राप्त करेंगे, जिन्हें day के अनुसार समूहित किया गया है।
cURL, URL सिंटैक्स का उपयोग करके फ़ाइलें प्राप्त करने या भेजने के लिए एक कमांड-लाइन टूल है।नीचे दिए गए cURL अनुरोध को अपनी कमांड लाइन में कॉपी करने से पहले, इनमें आवश्यक बदलाव करें:
  • उपयोगकर्ता नाम <USERNAME> उदा. email@domain.com
  • अकाउंट नाम <ACCOUNT-NAME> उदा. john-doe
  • लेबल <LABEL> उदा. prod
  • fromDate और toDate उदा. "fromDate":"201811010000", "toDate":"201811122359"
अपना अनुरोध भेजने के बाद, आपसे आपका पासवर्ड दर्ज करने के लिए कहा जाएगा।

Counts एंडपॉइंट रिस्पॉन्स पेलोड

आपके API अनुरोध से वापस मिलने वाला पेलोड नीचे दिखाए गए अनुसार JSON फ़ॉर्मैट में होगा।
बहुत बढ़िया! अब आपने एंटरप्राइज़ Search Posts: 30-Day API को सफलतापूर्वक ऐक्सेस कर लिया है।
संदर्भित लेख

एंटरप्राइज़ Search Posts: Full-Archive API के साथ शुरुआत करना

एंटरप्राइज़ Search Posts: Full-Archive API आपको 2006 में किए गए पहले पोस्ट से अब तक के पोस्ट्स उपलब्ध कराता है। आपके अनुरोध में दी गई क्वेरी के आधार पर पोस्ट्स का मिलान किया जाता है और फिर उन्हें आपको वापस भेजा जाता है। क्वेरी एक नियम होती है, जिसमें आप तय करते हैं कि आपको वापस मिलने वाले पोस्ट में क्या शामिल होना चाहिए। इस ट्यूटोरियल में, हम X खाते @XDevelopers से अंग्रेज़ी में किए गए पोस्ट्स खोजेंगे। आपके payload में वापस मिलने वाले पोस्ट्स data फ़ॉर्मैट में हो सकते हैं, जो आपको पूरा पोस्ट payload देता है, या counts फ़ॉर्मैट में, जो आपको मेल खाने वाले पोस्ट्स की संख्यात्मक गणना का डेटा देता है। हम data और counts endpoints पर अनुरोध करने के लिए cURL का उपयोग करेंगे। आपको निम्नलिखित की आवश्यकता होगी:
  • [एक एंटरप्राइज़ खाता]https://developer.x.com/en/products/x-api/enterprise
  • आपका उपयोगकर्ता नाम, पासवर्ड और खाता नाम
  • आपके search endpoint से संबद्ध लेबल, जैसा कि console.gnip.com पर प्रदर्शित होता है

डेटा एंडपॉइंट को एक्सेस करना

डेटा एंडपॉइंट हमें मिलान किए गए पोस्ट्स का पूरा पोस्ट payload देगा। हम अंग्रेज़ी में @XDevelopers से आने वाले पोस्ट्स खोजने के लिए from: और lang: ऑपरेटर्स का उपयोग करेंगे। अधिक ऑपरेटर्स के लिए यहाँ क्लिक करें
cURL, URL syntax का उपयोग करके फ़ाइलें प्राप्त या भेजने के लिए एक command-line tool है।नीचे दिए गए cURL request को अपनी command line में कॉपी करने से पहले, इनमें आवश्यक बदलाव कर लें:
  • Username <USERNAME> उदाहरण: email@domain.com
  • Account name <ACCOUNT-NAME> उदाहरण: john-doe
  • Label <LABEL> उदाहरण: prod
  • fromDate and toDate उदाहरण: "fromDate":"201802010000", "toDate":"201802282359"
अपना request भेजने के बाद, आपसे आपका password दर्ज करने के लिए कहा जाएगा।
डेटा एंडपॉइंट रिस्पॉन्स पेलोड
आपके API अनुरोध के बदले मिलने वाला पेलोड नीचे दिखाए गए अनुसार JSON फ़ॉर्मेट में होगा।

counts endpoint ऐक्सेस करना

counts endpoint के ज़रिए, हम @XDevelopers खाते से किए गए अंग्रेज़ी पोस्ट्स की संख्या day के आधार पर समूहित करके प्राप्त करेंगे।
cURL, URL सिंटैक्स का उपयोग करके फ़ाइलें प्राप्त या भेजने के लिए एक कमांड-लाइन टूल है।नीचे दिए गए cURL अनुरोध को अपनी कमांड लाइन में कॉपी करने से पहले, इनमें आवश्यक बदलाव करें:
  • Username <USERNAME> उदा. email@domain.com
  • Account name <ACCOUNT-NAME> उदा. john-doe
  • Label <LABEL> उदा. prod
  • fromDate and toDate उदा. "fromDate":"201802010000", "toDate":"201802282359"
अपना अनुरोध भेजने के बाद, आपसे आपका पासवर्ड दर्ज करने के लिए कहा जाएगा।

Counts एंडपॉइंट रिस्पॉन्स पेलोड

आपके API अनुरोध से प्राप्त पेलोड नीचे दिखाए गए अनुसार JSON फ़ॉर्मैट में दिखाई देगा।
बहुत बढ़िया! अब आपने एंटरप्राइज़ Search Posts: Full-Archive API को सफलतापूर्वक एक्सेस कर लिया है।
संदर्भित लेख

मार्गदर्शिकाएँ

खोज क्वेरी तैयार करना

Enterprise ऑपरेटर

नीचे X के एंटरप्राइज़ search API में समर्थित सभी ऑपरेटरों की सूची दी गई है:
  • Enterprise 30-दिनों का search API
  • Enterprise Full-archive search API
उत्पाद के अनुसार उपलब्ध ऑपरेटरों की साथ-साथ तुलना के लिए HERE देखें।
नोट: Search API का उपयोग करते समय कोई भी is: या has: ऑपरेटर standalone ऑपरेटर के रूप में इस्तेमाल नहीं किया जा सकता; इन्हें किसी दूसरे clause के साथ जोड़ना आवश्यक है।उदाहरण के लिए, @XDeevelopers has:links

उत्पाद अवलोकन

एंटरप्राइज़-स्तर का Full-archive Search अगस्त 2015 में लॉन्च किया गया था, और प्रीमियम-स्तर का संस्करण फ़रवरी 2018 में लॉन्च किया गया था। ये सर्च प्रोडक्ट ग्राहकों को किसी भी सार्वजनिक रूप से उपलब्ध पोस्ट तक तुरंत पहुँच प्रदान करते हैं। Full-archive Search के साथ आप एक ही क्वेरी सबमिट करते हैं और क्लासिक RESTful शैली में एक रिस्पॉन्स प्राप्त करते हैं। Full-archive Search में (अधिकतम) 500-पोस्ट्स-प्रति-रिस्पॉन्स पेजिनेशन लागू होता है, और यह प्रीमियम के लिए 60 requests-per-minute (rpm) तथा एंटरप्राइज़ के लिए 120 rpm तक की rate limit का समर्थन करता है। इन विवरणों को देखते हुए, Full-archive Search का उपयोग पोस्ट्स को तेज़ी से प्राप्त करने और concurrent requests के माध्यम से बड़े पैमाने पर करने के लिए किया जा सकता है। Historical PowerTrack के विपरीत, जिसका archive डिस्क पर मौजूद पोस्ट flat-files के एक सेट पर आधारित है, Full-archive Search का पोस्ट archive काफ़ी हद तक एक ऑनलाइन डेटाबेस जैसा है। सभी डेटाबेस की तरह, यह अपनी सामग्री पर क्वेरी चलाने का समर्थन करता है। यह उच्च-प्रदर्शन डेटा पुनर्प्राप्ति को सक्षम करने के लिए एक index का भी उपयोग करता है। Full-archive Search endpoints के साथ, querying language PowerTrack Operators से मिलकर बनी होती है, और इनमें से हर Operator किसी indexed पोस्ट JSON attribute से संबंधित होता है। इसके अलावा, Historical PowerTrack की तरह, कुछ पोस्ट attributes ऐसे होते हैं जो क्वेरी किए जाने के समय के अनुसार current होते हैं। उदाहरण के लिए, यदि आप आज Search API का उपयोग करके 2010 में पोस्ट की गई किसी पोस्ट को एक्सेस कर रहे हैं, तो उपयोगकर्ता की profile description, account ‘home’ location, display name, और Favorites तथा Retweet counts के लिए पोस्ट metrics आज के मानों के अनुसार अपडेट होंगे, न कि उन मानों के अनुसार जो 2010 में थे। 

मेटाडेटा टाइमलाइन

नीचे यह टाइमलाइन दी गई है कि Full-archive search endpoint Operators कब से मैच करना शुरू करते हैं। कुछ मामलों में, X पर किसी ‘संचार परंपरा’ के आम हो जाने के काफी बाद Operator मैचिंग शुरू हुई। उदाहरण के लिए, @Replies 2006 में एक उपयोगकर्ता परंपरा के रूप में उभरे, लेकिन 2007 की शुरुआत तक वे ‘supporting’ JSON के साथ first-class object या event नहीं बने। इसलिए, 2006 में @Replies पर मैच करने के लिए to: और in_reply_to_status_id: PowerTrack Operators पर निर्भर रहने के बजाय, पोस्ट के मुख्य भाग की जांच करनी पड़ती है। यहाँ दी गई जानकारी Full-Archive Search का उपयोग करके तैयार की गई है (जो सैकड़ों searches पर आधारित है)। यह टाइमलाइन 100% पूर्ण या सटीक नहीं है। यदि आप filtering/metadata से जुड़ी कोई अन्य “born on date” पहचानते हैं जो आपके use-case के लिए अहम है, तो कृपया हमें बताएं। ध्यान दें कि आधारभूत Search index को फिर से बनाया जा सकता है। इसलिए, इस टाइमलाइन में दिए गए विवरण बदल सकते हैं।

2006

  • 26 मार्च - lang:. Search index जनरेट करते समय बैकफिल किए जा रहे पोस्ट metadata का एक उदाहरण।
  • 13 जुलाई - has:mentions का मिलान शुरू होता है।
  • 6 अक्टूबर - has:symbols. स्टॉक प्रतीकों पर चर्चा के लिए cashtags(याsymbols)2009कीशुरुआततकआमनहींहुएथे।तबतकइनकेज़्यादातरउपयोगसंभवतःस्लैंगथे(उदाहरणकेलिए,cashtags (या symbols) 2009 की शुरुआत तक आम नहीं हुए थे। तब तक इनके ज़्यादातर उपयोग संभवतः स्लैंग थे (उदाहरण के लिए, slang)।
  • 26 अक्टूबर - has:links का मिलान शुरू होता है।
  • 23 नवंबर - has:hashtags का मिलान शुरू होता है।

2007

  • 30 जनवरी - पहला औपचारिक @reply (in_reply_to_user_id), reply_to_status_id: का मिलान शुरू होता है।
  • 23 अगस्त - विषयों और बातचीतों को व्यवस्थित करने के लिए Hashtags एक सामान्य प्रचलन के रूप में उभरते हैं। इसका पहला वास्तविक उपयोग एक सप्ताह बाद होता है।

2009

  • 15 मई - is:retweet। ध्यान दें कि यह ऑपरेटर आधिकारिक Retweets के ‘beta’ रिलीज़ और उसके “Via @” पैटर्न के साथ मैच करना शुरू करता है। इस beta अवधि के दौरान, पोस्ट क्रिया ‘post’ होती है और मूल पोस्ट पेलोड में शामिल नहीं होती।
  • 13 अगस्त - आधिकारिक Retweets का अंतिम संस्करण “RT @” पैटर्न, ‘share’ पर सेट क्रिया, और मूल पोस्ट को शामिल करने वाले ‘retweet_status’ एट्रिब्यूट के साथ रिलीज़ किया जाता है (इस प्रकार JSON पेलोड का आकार लगभग दोगुना हो जाता है)।

2010

  • 6 मार्च - has:geo, bounding_box: और point_radius: geo ऑपरेटर मैच होना शुरू करते हैं।
  • 28 अगस्त - has:videos (फ़रवरी 2015 तक, यह ऑपरेटर youtube.com, vimeo.com, और vivo.com जैसी चुनिंदा वीडियो होस्टिंग साइटों के लिंक वाले पोस्ट्स से मैच करता है)।

2011

  • 20 जुलाई - has:media और has:images का मिलान शुरू हुआ। Native photos की आधिकारिक घोषणा 9 अगस्त, 2010 को की गई थी।

2014

  • 3 दिसंबर - payloads में HTML title और description के साथ उन्नत URL मेटाडेटा का कुछ भाग (लगभग) शामिल होना शुरू होता है। उन्नत मेटाडेटा मई 2016 में अधिक पूर्ण रूप में सामने आया।

2015

  • 10 फ़रवरी - has:videos ‘native’ X वीडियो से मेल खाता है।
  • 17 फ़रवरी - has:profile_geo, profile_country:, profile_region:, profile_locality: Profile Geo ऑपरेटर मिलान शुरू करते हैं।
  • 17 फ़रवरी - place_country: और place: पोस्ट geo ऑपरेटर मिलान शुरू करते हैं।

2016

2017

  • 22 फ़रवरी - पोल मेटाडेटा समृद्ध नेटिव फ़ॉर्मैट में उपलब्ध हुआ। इस मेटाडेटा के लिए कोई संबद्ध Operators नहीं हैं।

2022

  • 27 सितंबर - इस तारीख से बनाए गए सभी पोस्ट ऑब्जेक्ट्स के लिए Edited Post मेटाडेटा उपलब्ध है। पोस्ट ऑब्जेक्ट्स प्रदान करने वाले सभी Enterprise एंडपॉइंटs को भी इसी तारीख से यह मेटाडेटा उपलब्ध कराने के लिए अपडेट किया गया। उपलब्ध कराए गए संपादन मेटाडेटा में edit_history और edit_controls ऑब्जेक्ट्स शामिल हैं। यह edit मेटाडेटा उन पोस्ट्स के लिए नहीं लौटाया जाएगा जो 27 सितंबर, 2022 से पहले बनाए गए थे। फिलहाल, ऐसे कोई Enterprise Operators उपलब्ध नहीं हैं जो इस मेटाडेटा से मेल खाते हों।  Edit Post मेटाडेटा के बारे में अधिक जानने के लिए, Edit Posts fundamentals पेज देखें।

2022

  • 29 सितंबर - इस तारीख से बनाए गए सभी पोस्ट ऑब्जेक्ट्स के लिए Edited Post मेटाडेटा उपलब्ध है। पोस्ट ऑब्जेक्ट्स उपलब्ध कराने वाले सभी Enterprise एंडपॉइंट्स को भी इसी तारीख से यह मेटाडेटा उपलब्ध कराने के लिए अपडेट किया गया। दिए गए edit मेटाडेटा में edit_history और edit_controls ऑब्जेक्ट्स शामिल हैं। यह मेटाडेटा 27 सितंबर, 2022 से पहले बनाए गए पोस्ट्स के लिए वापस नहीं किया जाएगा। फ़िलहाल, इन मेटाडेटा से मेल खाने वाले कोई Enterprise Operators उपलब्ध नहीं हैं। Edit Post मेटाडेटा के बारे में अधिक जानने के लिए, Edit Posts fundamentals पेज देखें।

फ़िल्टरिंग सुझाव

ऊपर दी गई टाइमलाइन संबंधी जानकारी से स्पष्ट है कि Search APIs फ़िल्टर लिखते समय कई बारीकियों का ध्यान रखना पड़ता है। ध्यान में रखने के लिए दो मुख्य बातें हैं:
  • कुछ मेटाडेटा के लिए ‘उपलब्धता शुरू होने’ की तारीखें होती हैं, इसलिए फ़िल्टर के कारण फ़ॉल्स नेगेटिव्स मिल सकते हैं। ऐसी खोजों में वे Operators शामिल होते हैं जो ऐसे मेटाडेटा पर निर्भर करते हैं, जो खोज अवधि के पूरे समय या उसके किसी हिस्से में मौजूद नहीं था। उदाहरण के लिए, अगर आप has:images Operator के साथ पोस्ट्स खोज रहे हैं, तो जुलाई 2011 से पहले की अवधियों के लिए कोई मैच नहीं मिलेगा। ऐसा इसलिए है क्योंकि यह Operator नेटिव फ़ोटो पर मैच करता है (यानी वे फ़ोटो जो X user-interface का उपयोग करके किसी पोस्ट से अटैच की गई हों)। फ़ोटो-शेयरिंग वाले पोस्ट्स का अधिक पूर्ण डेटा सेट पाने के लिए, जुलाई 2011 से पहले के फ़िल्टर में ऐसे rule clauses होने चाहिए जो फ़ोटो होस्टिंग के सामान्य URLs से मैच करें।
  • कुछ मेटाडेटा को उस समय के बाद के मेटाडेटा से backfill किया गया है, जब X पर पोस्ट किया गया था।
PowerTrack queries बनाते समय आम तौर पर कई attribute types पर ध्यान दिया जाता है:
  • X प्रोफ़ाइल्स
  • मूल या साझा किए गए पोस्ट्स
  • पोस्ट भाषा वर्गीकरण
  • पोस्ट्स का भू-संदर्भन
  • साझा किए गए लिंक का मीडिया
इनमें से कुछ का व्यवहार उत्पाद-विशिष्ट होता है, जबकि अन्य का व्यवहार एक जैसा होता है। अधिक जानकारी के लिए नीचे देखें।

X प्रोफ़ाइल

Search APIs, ऐतिहासिक पोस्ट्स को उपयोगकर्ता प्रोफ़ाइल डेटा के साथ उसी रूप में उपलब्ध कराता है, जैसा वह पुनर्प्राप्ति के समय होता है। यदि आप 2014 का कोई पोस्ट अनुरोध करते हैं, तो उपयोगकर्ता का प्रोफ़ाइल मेटाडेटा वैसा ही दिखेगा जैसा वह क्वेरी के समय मौजूद होता है।

मूल पोस्ट्स और रीट्वीट्स

PowerTrack _is:retweet_ Operator उपयोगकर्ताओं को रीट्वीट्स को शामिल करने या बाहर रखने की सुविधा देता है। इस Operator का उपयोग करने वालों को अगस्त 2009 से पहले के डेटा में रीट्वीट का मिलान करने (या न करने) के लिए दो रणनीतियाँ रखनी चाहिए। अगस्त 2009 से पहले, “@RT ” पैटर्न से मेल खाने वाली पोस्ट्स की पहचान करने के लिए, पोस्ट संदेश की स्वयं सटीक वाक्यांश मिलान के साथ जाँच करनी होती है। (वास्तव में, यदि आप मई से अगस्त 2009 के बीच के रीट्वीट्स पर फ़िल्टर कर रहे हैं, तो “Via @” पैटर्न को भी शामिल किया जाना चाहिए।) अगस्त 2009 के बाद की अवधियों के लिए, is:retweet Operator उपलब्ध है।

पोस्ट भाषा वर्गीकरण

किसी पोस्ट के भाषा वर्गीकरण के आधार पर फ़िल्टर करने के लिए, X के ऐतिहासिक प्रोडक्ट काफ़ी अलग हैं। जब Search archive बनाया गया था, तब सभी पोस्ट्स में X का भाषा वर्गीकरण बैकफिल किया गया था। इसलिए lang: Operator पूरे पोस्ट archive के लिए उपलब्ध है।

पोस्ट्स का भू-संदर्भन

पोस्ट्स का भू-संदर्भन करने के तीन मुख्य तरीके हैं:
  • पोस्ट संदेश में भौगोलिक संदर्भ। पोस्ट संदेश में भौगोलिक संदर्भों का मिलान करना, हालांकि यह अक्सर सबसे चुनौतीपूर्ण तरीका होता है क्योंकि यह स्थानीय जानकारी पर निर्भर करता है, पूरे पोस्ट आर्काइव के लिए एक विकल्प है। यहाँ 2006 में San Francisco क्षेत्र के लिए golden gate फ़िल्टर के आधार पर किए गए भू-संदर्भित मिलान का एक उदाहरण दिया गया है।
  • उपयोगकर्ता द्वारा geo-tag की गई पोस्ट्स। Search APIs के साथ, कुछ Geo Operators का उपयोग करके पोस्ट्स का मिलान शुरू करने की क्षमता मार्च 2010 में उपलब्ध हुई, और अन्य के लिए फ़रवरी 2015 में:
    • 6 मार्च, 2010: has:geo, bounding_box: और point_radius:
    • 17 फ़रवरी, 2015: place_country: और place:
  • उपयोगकर्ता द्वारा सेट किया गया अकाउंट प्रोफ़ाइल ‘home’ स्थान। Profile Geo Operators, Historical PowerTrack और Search APIs दोनों में उपलब्ध हैं। Search APIs में यह Profile Geo metadata फ़रवरी 2015 से उपलब्ध है। उन पोस्ट्स के लिए जो Profile Geo metadata उपलब्ध होने से पहले पोस्ट की गई थीं, bio_location: Operator उपलब्ध है, जिसका उपयोग गैर-मानकीकृत उपयोगकर्ता इनपुट के मिलान के लिए किया जा सकता है।
मार्च 2012 में expanded URL enrichment पेश किया गया। इससे पहले, पोस्ट payloads में केवल वही URL शामिल होता था जो उपयोगकर्ता ने दिया था। इसलिए, अगर उपयोगकर्ता ने कोई shortened URL शामिल किया हो, तो रुचि के (expanded) URLs के आधार पर मिलान करना चुनौतीपूर्ण हो सकता है। Search APIs में ये metadata मार्च 2012 से उपलब्ध हैं। जुलाई 2016 में enhanced URL enrichment पेश किया गया। यह enhanced संस्करण पोस्ट payload में वेबसाइट का HTML title और description देता है, साथ ही उन पर मिलान करने के लिए Operators भी उपलब्ध कराता है। ये metadata दिसंबर 2014 से दिखाई देने लगते हैं। सितंबर 2016 में X ने ‘native attachments’ पेश किए, जिनमें अंत में जोड़ा गया साझा लिंक 140 पोस्ट वर्ण-सीमा में नहीं गिना जाता। दोनों URL enrichments अब भी इन साझा किए गए लिंक पर लागू होते हैं। यहाँ बताया गया है कि संबंधित Search Operators कब से मिलान करना शुरू करते हैं:
  • 2006 October 26 - has:links
  • 2011 July 20 - has:images and has:media
  • 2011 August - Expanded URLs enrichment के साथ url: सितंबर 2006 से ही (url:"spotify.com" OR url:gnip OR url:microsoft OR url:google OR url:youtube) http://x.com/Adam/statuses/16602 से मेल खाता है, जबकि twitter_entities और gnip objects में कोई urls[] metadata नहीं है। “youtube.com” message content का एक उदाहरण है, जो किसी भी urls[] metadata के बिना url:youtube से मेल खाता है।
  • 2015 February 10 - native videos के लिए has:videos। 2010/08/28 और 2015/02/10 के बीच, यह Operator youtube.com, vimeo.com, और vivo.com जैसी चुनिंदा video hosting sites के लिंक वाले पोस्ट्स से मेल खाता है।
  • 2016 May 1 - Enhanced URLs enrichment के आधार पर url_title: और url_description:, जो सामान्य रूप से उपलब्ध हैं। पहला Enhanced URL metadata दिसंबर 2014 में दिखाई देना शुरू हुआ।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

General Search पोस्ट API के सामान्य प्रश्न

counts endpoint और data endpoint द्वारा प्रदान किए गए परिणामों के बीच एक ज्ञात अंतर है। आपके परिणामों में अंतर दिखाई दे सकता है, क्योंकि counts endpoint pre-compliance है (अर्थात यह हटाई गई पोस्ट्स, scrub geo आदि जैसी चीज़ों को ध्यान में नहीं रखता), जबकि data endpoint डिलीवरी के समय compliant होता है और सभी compliance events को ध्यान में रखता है।
इसके होने के कुछ अलग-अलग कारण हो सकते हैं, जिनमें ये शामिल हैं
  1. वह पोस्ट, जिसे आप देखने की अपेक्षा कर रहे थे, किसी संरक्षित खाते से है
  2. क्योंकि data endpoint सभी compliance events को ध्यान में रखता है (अर्थात हटाई गई पोस्ट्स, scrubbed geos आदि को रिस्पॉन्स में शामिल नहीं किया जाएगा)।
यह संभवतः हमारे premium rules & filtering के गलत इस्तेमाल के कारण है। कृपया हमारे दस्तावेज़ यहाँ देखें और सुनिश्चित करें कि आप rules बनाने पर लागू प्रतिबंधों को समझते हैं।
हाँ, हैं, जिनमें ये शामिल हैं:
  • Tweepy - मानक search/Posts प्रोडक्ट (Python) का उपयोग करने के लिए अच्छा है
  • X API - मानक Search Post APIs (Python) का उपयोग करने के लिए अच्छा है
  • Search Posts Python और Search Posts Ruby - दो अच्छे टूल, जिनका उपयोग enterprise (और v2!) Search Post APIs के लिए किया जा सकता है
जिन लाइब्रेरीज़ को हम सीधे सपोर्ट करते हैं, वे सभी हमारे xdevplatform GitHub पेज पर मिल सकती हैं: https://github.com/xdevplatform.अन्य third-party लाइब्रेरीज़ भी उपयोगी हो सकती हैं; हालांकि, कृपया ध्यान दें कि इनमें से कुछ हमारे premium और enterprise प्रोडक्ट्स के साथ काम नहीं कर सकती हैं।
हाँ। हमारा डेटा endpoint या तो निर्दिष्ट maxResults पर या 30 दिनों के बाद pagination करता है।उदाहरण के लिए, यदि किसी 30-दिवसीय अवधि में आपके पास 800 पोस्ट्स हैं, तो पूरे परिणाम प्राप्त करने के लिए आपको दो requests करनी होंगी; क्योंकि प्रति request लौटाई जा सकने वाली पोस्ट्स की अधिकतम संख्या 500 (maxResults) है। और यदि पहले महीने में आपके पास केवल 400 पोस्ट्स हैं, और फिर दूसरे महीने में 100 पोस्ट्स हैं, तब भी पूरे परिणाम प्राप्त करने के लिए आपको दो requests का उपयोग करना होगा; क्योंकि pagination 30 दिनों की अवधि के बाद होता है, भले ही पहली request निर्दिष्ट maxResults पोस्ट्स से कम लौटाए।
पोस्ट्स उल्टे कालानुक्रमिक क्रम में लौटाई जाती हैं। उदाहरण के लिए, परिणामों का पहला पेज क्वेरी से मेल खाने वाली सबसे हाल की पोस्ट्स दिखाएगा। पृष्ठांकन तब तक जारी रहेगा, जब तक परिणामों की पोस्ट की गई तिथियाँ शुरू में अनुरोधित fromDate तक नहीं पहुँच जातीं।
बिलिंग के लिए केवल मूल पोस्ट को ही गिना जाएगा। बाद में किए गए किसी भी संपादन को अनदेखा किया जाएगा और वे आपकी कुल गतिविधि संख्या में शामिल नहीं होंगे। Enterprise
हमारे एंटरप्राइज़ समाधान आपके व्यवसाय की ज़रूरतों को पूरा करने के लिए अनुमानित मूल्य-निर्धारण के साथ अनुकूलित किए गए हैं। अधिक जानकारी के लिए कृपया यहाँ आवेदन करें।
  • कृपया हमारे enterprise Search पोस्ट APIs का दस्तावेज़ यहाँ देखें
  • नियमों और फ़िल्टरिंग के बारे में उपयोगी जानकारी यहाँ मिल सकती है
  • data endpoint का उपयोग करने के बारे में उपयोगी जानकारी यहाँ मिल सकती है
  • counts endpoint का उपयोग करने के बारे में उपयोगी जानकारी यहाँ मिल सकती है
  • उपलब्ध operators की सूची यहाँ मिल सकती है
कृपया X में अपने Account Manager से संपर्क करें, जो इस मामले में आपकी मदद कर सकेंगे।

त्रुटि निवारण मार्गदर्शिका

कोड 404 - नहीं मिला
  1. कृपया सुनिश्चित करें कि आप प्रत्येक एंडपॉइंट के लिए सही पैरामीटर का उपयोग कर रहे हैं (उदा. buckets फ़ील्ड का उपयोग केवल counts एंडपॉइंट के साथ किया जा सकता है, data एंडपॉइंट के साथ नहीं)
  2. कृपया दोबारा जाँच लें कि :product, :account_name और :label फ़ील्ड्स सही हैं। आप अपना :label फ़ील्ड GNIP Console में देख सकते हैं (केवल enterprise ग्राहकों के लिए)।

API संदर्भ

Enterprise search APIs

दो enterprise search API हैं:
  • 30-Day Search API - पिछले 30 दिनों के भीतर पोस्ट किए गए Tweet उपलब्ध कराता है।
  • Full-Archive Search API - मार्च 2006 में पोस्ट किए गए पहले Tweet से शुरू होकर, 2006 तक पुराने Tweet उपलब्ध कराता है।
इन search API का डिज़ाइन समान है और नीचे दिया गया दस्तावेज़ीकरण दोनों पर लागू होता है। ध्यान दें कि 29 सितंबर 2022 से बनाए गए Tweet के लिए, Tweet ऑब्जेक्ट में Tweet edit metadata शामिल होगा, जो उसके edit history का विवरण देता है। अधिक जानकारी के लिए “Edit Tweets” fundamentals पेज देखें। नीचे enterprise search API के साथ integration करते समय आवश्यक महत्वपूर्ण विवरण दिए गए हैं:
  • Tweet data और counts का अनुरोध करने के methods
  • Authentication
  • Pagination
  • API request पैरामीटर और example requests
  • API रिस्पॉन्स JSON payloads और example responses
  • HTTP रिस्पॉन्स codes
Enterprise API, Tweet archive तक कम-विलंबता, पूर्ण-निष्ठा, query-आधारित access प्रदान करते हैं। इन दोनों API के बीच केवल time frame का अंतर है जिसमें आप search कर सकते हैं — या तो पिछले 30 दिन, या 2006 तक पुराने डेटा में। Time frame को minute granularity के साथ निर्दिष्ट किया जा सकता है। Tweet data reverse chronological order में दिया जाता है, यानी आपकी query से मेल खाने वाले सबसे हाल के Tweet से शुरू होकर। Tweet, प्रकाशित होने के लगभग 30 सेकंड बाद search API में उपलब्ध हो जाते हैं।

विधियाँ

enterprise search के लिए बेस URI https://gnip-api.x.com/search/ है। जहाँ:
  • :product उस search एंडपॉइंट को दर्शाता है जिस पर आप अनुरोध भेज रहे हैं, यानी 30day या fullarchive
  • :account_name आपके खाते से संबद्ध (case-sensitive) नाम है, जैसा कि console.gnip.com पर दिखाया जाता है
  • :label आपके search एंडपॉइंट से संबद्ध (case-sensitive) लेबल है, जैसा कि console.gnip.com पर दिखाया जाता है
उदाहरण के लिए, अगर TwitterDev खाते में ‘prod’ लेबल (production का संक्षिप्त रूप) वाला 30-Day search प्रोडक्ट है, तो search एंडपॉइंटs इस प्रकार होंगे: आपका पूरा enterprise search API एंडपॉइंट https://console.gnip.com पर दिखाया जाता है। नीचे curl नाम की एक सरल HTTP utility का उपयोग करने वाले कुछ उदाहरण अनुरोध दिए गए हैं। इन उदाहरणों में :product, :account_name, और :label वाले URLs का उपयोग किया गया है। इन उदाहरणों का उपयोग करने से पहले, URLs को अपनी जानकारी के अनुसार अपडेट कर लें।

प्रमाणीकरण

enterprise search APIs के लिए सभी अनुरोधों में HTTP Basic Authentication का उपयोग करना आवश्यक है, जिसे https://console.gnip.com पर अपने खाते में लॉग इन करने के लिए इस्तेमाल किए जाने वाले वैध ईमेल पते और पासवर्ड के संयोजन से बनाया जाता है। हर अनुरोध में क्रेडेंशियल्स को Authorization header के रूप में भेजना आवश्यक है।

अनुरोध/रिस्पॉन्स का व्यवहार

fromDate और toDate पैरामीटर का उपयोग करके, आप API द्वारा समर्थित किसी भी समयावधि के लिए अनुरोध कर सकते हैं। 30-Day search API पिछले 31 दिनों के Tweets उपलब्ध कराता है (हालाँकि इसे ‘30-Day’ API कहा जाता है, यह उपयोगकर्ताओं को पूरे महीने के अनुरोध करने में सक्षम बनाने के लिए 31 दिन उपलब्ध कराता है)। Full-Archive search API सबसे पहले Tweet (21 मार्च, 2006) तक के Tweets उपलब्ध कराता है। हालांकि, एक ही रिस्पॉन्स आपके द्वारा निर्दिष्ट ‘maxResults’ या 31 दिनों में से जो भी कम हो, उसी तक सीमित रहेगा। यदि मेल खाने वाला डेटा या आपकी समयावधि आपके निर्दिष्ट maxResults या 31 दिनों से अधिक है, तो आपको एक टोकन मिलेगा, जिसका उपयोग आपको अपनी निर्दिष्ट समयावधि के शेष भाग पर pagination करने के लिए करना चाहिए। उदाहरण के लिए, मान लें कि आप Full-Archive search का उपयोग कर रहे हैं और 1 जनवरी, 2017 से 30 जून, 2017 तक अपनी query से मेल खाने वाले सभी Tweets चाहते हैं। आप अपने अनुरोध में fromDate और toDate पैरामीटर का उपयोग करके पूरी छह महीने की समयावधि निर्दिष्ट करेंगे। search API, Tweets के पहले ‘page’ के साथ रिस्पॉन्स देगा, जिसमें आपके maxResults पैरामीटर के अनुसार Tweets की संख्या होगी (जिसका डिफ़ॉल्ट मान 100 है)। यदि और Tweets मौजूद हैं (और बहुत संभव है कि होंगे), तो API एक टोकन भी देगा, जिससे आप डेटा के अगले ‘page’ के लिए अनुरोध कर सकेंगे। यह प्रक्रिया तब तक दोहराई जाती है, जब तक API टोकन लौटाना बंद नहीं कर देता। अधिक जानकारी के लिए अगला अनुभाग देखें। डेटा और काउंट, दोनों तरह के अनुरोध करते समय अक्सर एक ही रिस्पॉन्स में लौटाए जा सकने वाले डेटा से अधिक डेटा उपलब्ध होता है। ऐसे में, रिस्पॉन्स में एक ‘next’ टोकन शामिल होता है। ‘next’ टोकन रूट-लेवल JSON एट्रिब्यूट के रूप में दिया जाता है। जब भी ‘next’ टोकन दिया जाता है, तो इसका मतलब है कि प्राप्त करने के लिए अतिरिक्त डेटा उपलब्ध है, इसलिए आपको API अनुरोध करते रहना होगा। नोट: डेटा और काउंट अनुरोधों के लिए ‘next’ टोकन का व्यवहार थोड़ा अलग होता है। दोनों का वर्णन नीचे किया गया है, और उदाहरण रिस्पॉन्स API संदर्भ अनुभाग में दिए गए हैं।
डेटा पेजिनेशन
डेटा के लिए अनुरोधों से अक्सर इतना अधिक डेटा मिल सकता है कि उसे एक ही रिस्पॉन्स में लौटाना संभव न हो। प्रत्येक डेटा अनुरोध में एक पैरामीटर शामिल होता है, जो प्रति अनुरोध लौटाए जाने वाले अधिकतम Tweets की संख्या निर्धारित करता है। maxResults पैरामीटर का डिफ़ॉल्ट मान 100 होता है, और इसे 10-500 की सीमा में सेट किया जा सकता है। यदि आपकी क्वेरी, अनुरोध में उपयोग किए गए maxResults पैरामीटर से अधिक Tweets से मेल खाती है, तो रिस्पॉन्स में एक ‘next’ टोकन शामिल होगा (रूट-लेवल JSON एट्रिब्यूट के रूप में)। इस ‘next’ टोकन का उपयोग अगले अनुरोध में उस क्वेरी से मेल खाने वाले Tweets के अगले हिस्से को प्राप्त करने के लिए किया जाता है (यानी अगला ‘page’)। ‘next’ टोकन तब तक मिलते रहेंगे, जब तक आप उस क्वेरी के परिणामों के अंतिम ‘page’ तक नहीं पहुंच जाते; अंतिम ‘page’ पर कोई ‘next’ टोकन नहीं दिया जाता। डेटा का अगला ‘page’ अनुरोध करने के लिए, आपको मूल अनुरोध जैसी बिल्कुल वही क्वेरी करनी होगी, जिसमें query, toDate, और fromDate पैरामीटर भी शामिल हों, यदि उनका उपयोग किया गया हो। साथ ही, आपको एक ‘next’ अनुरोध पैरामीटर भी शामिल करना होगा, जिसे पिछले रिस्पॉन्स से मिले मान पर सेट किया गया हो। इसका उपयोग GET या POST, दोनों प्रकार के अनुरोधों के साथ किया जा सकता है। हालांकि, GET अनुरोध के मामले में ‘next’ पैरामीटर URL encoded होना चाहिए। आप अपनी पिछली क्वेरी से मिले ‘next’ एलिमेंट को तब तक पास करते रह सकते हैं, जब तक आपकी क्वेरी द्वारा कवर की गई समयावधि के सभी Tweets प्राप्त न हो जाएं। जब आपको ऐसा रिस्पॉन्स मिलता है जिसमें ‘next’ एलिमेंट शामिल नहीं होता, तो इसका मतलब है कि आप अंतिम page तक पहुंच चुके हैं और निर्दिष्ट क्वेरी तथा समय-सीमा के लिए कोई अतिरिक्त डेटा उपलब्ध नहीं है।
Counts पेजिनेशन
‘counts’ endpoint किसी क्वेरी से संबंधित Tweet की संख्या को दैनिक, प्रति-घंटा, या प्रति-मिनट के आधार पर प्रदान करता है। ‘counts’ API endpoint, अधिकतम 31 दिनों के counts payload के लिए, टाइमस्टैम्प के साथ counts की एक array लौटाता है। यदि आप 31 दिनों से अधिक के counts का अनुरोध करते हैं, तो आपको एक टोकन दिया जाएगा। डेटा के टोकन की तरह, आपको मूल अनुरोध जैसी बिल्कुल वही query करनी होगी और साथ ही ‘next’ request parameter भी शामिल करना होगा, जिसका मान पिछले रिस्पॉन्स से लिया गया हो। 31 दिनों से अधिक के counts का अनुरोध करने के अलावा, एक और स्थिति होती है जिसमें टोकन दिया जाता है। अधिक वॉल्यूम वाली queries में, यह संभव है कि counts जनरेट होने में इतना समय लगे कि रिस्पॉन्स timeout हो जाए। जब ऐसा होता है, तो आपको 31 दिनों से कम के counts मिलेंगे, लेकिन counts के पूरे payload के लिए अनुरोध जारी रखने हेतु एक टोकन दिया जाएगा। महत्वपूर्ण: Timeouts केवल पूर्ण “buckets” ही जारी करते हैं — इसलिए 2.5 दिनों के लिए 2 पूर्ण-दिन “buckets” मिलेंगे।
अतिरिक्त टिप्पणियाँ
  • खोज अनुरोध में fromDate या toDate का उपयोग करने पर, आपको केवल अपनी समय-सीमा के भीतर के परिणाम ही मिलेंगे। जब आप अपनी समय-सीमा के भीतर परिणामों के अंतिम समूह तक पहुँच जाते हैं, तो आपको ‘next’ टोकन नहीं मिलेगा।
  • ‘next’ एलिमेंट का उपयोग 10-500 के बीच किसी भी maxResults मान के साथ किया जा सकता है (डिफ़ॉल्ट मान 100 है)। maxResults यह निर्धारित करता है कि हर रिस्पॉन्स में कितने Tweets लौटाए जाएँगे, लेकिन इससे अंततः सभी परिणाम प्राप्त करने में कोई बाधा नहीं आती।
  • ‘next’ एलिमेंट की समय-सीमा समाप्त नहीं होती। एक ही ‘next’ क्वेरी का उपयोग करने वाले कई अनुरोधों को, अनुरोध कब किया गया है इसकी परवाह किए बिना, वही परिणाम मिलेंगे।
  • ‘next’ पैरामीटर का उपयोग करके परिणामों में पेजिंग करते समय, आपको क्वेरी की सीमाओं पर डुप्लिकेट मिल सकते हैं। आपके एप्लिकेशन को इन्हें सहन करने में सक्षम होना चाहिए।

डेटा एंडपॉइंट

POST /search/:product/:label
एंडपॉइंट पैटर्न:
यह एंडपॉइंट निर्दिष्ट क्वेरी और समयावधि के लिए डेटा लौटाता है। यदि कोई समयावधि निर्दिष्ट नहीं की जाती, तो समय पैरामीटर डिफ़ॉल्ट रूप से पिछले 30 दिनों के लिए सेट हो जाएंगे। ध्यान दें: नीचे बताए गए पैरामीटर को URL में एन्कोड करके, POST के बजाय GET अनुरोध का उपयोग करके भी यह कार्य किया जा सकता है।
डेटा अनुरोध पैरामीटर
अतिरिक्त विवरण
डेटा अनुरोधों और रिस्पॉन्स के उदाहरण
उदाहरण POST अनुरोध
  • POST अनुरोध में अनुरोध पैरामीटर JSON-स्वरूपित बॉडी के माध्यम से भेजे जाते हैं, जैसा कि नीचे दिखाया गया है।
  • जिस PowerTrack नियम के लिए क्वेरी की जा रही है, उसके सभी भाग (उदा. keywords, bounding_box: जैसे अन्य operators) ‘query’ पैरामीटर में रखे जाने चाहिए।
  • नियम के भागों को query URL में अलग-अलग पैरामीटर के रूप में विभाजित न करें।
प्रारंभिक डेटा अनुरोध करने के लिए यहाँ POST (cURL का उपयोग करके) कमांड का एक उदाहरण दिया गया है:
यदि API डेटा रिस्पॉन्स में ‘next’ टोकन शामिल हो, तो नीचे उसी के बाद किया जाने वाला अनुरोध दिया गया है, जो मूल अनुरोध जैसा है, बस इसमें ‘next’ पैरामीटर को दिए गए टोकन पर सेट किया गया है:
उदाहरण GET अनुरोध
  • GET अनुरोध में, अनुरोध पैरामीटर मानक URL एन्कोडिंग का उपयोग करके URL में एन्कोड किए जाते हैं।
  • जिस PowerTrack नियम के लिए क्वेरी की जा रही है, उसके सभी भाग (जैसे, कीवर्ड और bounding_box: जैसे अन्य ऑपरेटर) ‘query’ पैरामीटर में रखे जाने चाहिए।
  • नियम के भागों को क्वेरी URL में अलग-अलग पैरामीटर के रूप में विभाजित न करें।
प्रारंभिक डेटा अनुरोध करने के लिए, यहाँ GET (cURL का उपयोग करते हुए) कमांड का एक उदाहरण दिया गया है:
उदाहरण डेटा रिस्पॉन्स
ध्यान दें कि 29 सितंबर, 2022 से बनाए गए Tweets के लिए, Tweet ऑब्जेक्ट्स में Tweet edit metadata शामिल होगा, जो उसके edit history का विवरण देता है। अधिक जानकारी के लिए “Edit Tweets” fundamentals पेज देखें। नीचे डेटा क्वेरी के लिए एक उदाहरण रिस्पॉन्स दिया गया है। इस उदाहरण में माना गया है कि ‘maxResults’ से अधिक Tweets उपलब्ध थे, इसलिए बाद के अनुरोधों के लिए एक ‘next’ टोकन दिया गया है। यदि आपकी क्वेरी से ‘maxResults’ या उससे कम Tweets जुड़े हैं, तो रिस्पॉन्स में कोई ‘next’ टोकन शामिल नहीं होगा। ‘next’ element का मान हर क्वेरी के साथ बदलता रहेगा और इसे एक अपारदर्शी स्ट्रिंग के रूप में माना जाना चाहिए। रिस्पॉन्स body में ‘next’ element कुछ इस प्रकार दिखाई देगा:
किसी बाद के अनुरोध का रिस्पॉन्स कुछ इस तरह दिख सकता है (नए Tweets और अलग ‘next’ मान पर ध्यान दें):
आप अपनी पिछली क्वेरी के ‘next’ एलिमेंट को तब तक पास करते रह सकते हैं, जब तक आपको अपनी क्वेरी में शामिल समयावधि के सभी Tweet न मिल जाएँ। जब आपको ऐसा रिस्पॉन्स मिलता है जिसमें ‘next’ एलिमेंट शामिल नहीं होता, तो इसका मतलब है कि आप आखिरी पेज पर पहुँच गए हैं और आपकी समय-सीमा में कोई अतिरिक्त डेटा उपलब्ध नहीं है.

काउंट्स एंडपॉइंट

/search/:stream/counts
एंडपॉइंट पैटर्न:
/search/fullarchive/accounts/:account_name/:label/counts.json यह एंडपॉइंट निर्दिष्ट क्वेरी के लिए काउंट (डेटा वॉल्यूम) डेटा लौटाता है। यदि कोई समयावधि निर्दिष्ट नहीं की जाती है, तो समय पैरामीटर डिफ़ॉल्ट रूप से पिछले 30 दिनों के लिए सेट हो जाते हैं। डेटा वॉल्यूम टाइमस्टैम्प वाली ऐरे के रूप में लौटाए जाते हैं, जो दैनिक, प्रति घंटा (डिफ़ॉल्ट), या प्रति मिनट हो सकती है। नोट: इस कार्यक्षमता को नीचे वर्णित पैरामीटरों को URL में एन्कोड करके, POST के बजाय GET अनुरोध का उपयोग करके भी पूरा किया जा सकता है।
काउंट्स अनुरोध पैरामीटर
अतिरिक्त विवरण
काउंट्स अनुरोधों और रिस्पॉन्स के उदाहरण
उदाहरण POST अनुरोध
  • POST अनुरोध में अनुरोध पैरामीटर JSON-स्वरूपित body के माध्यम से भेजे जाते हैं, जैसा कि नीचे दिखाया गया है।
  • जिस PowerTrack नियम के लिए क्वेरी की जा रही है, उसके सभी भागों (उदाहरण के लिए, keywords, bounding_box: जैसे अन्य operators) को ‘query’ पैरामीटर में रखा जाना चाहिए।
  • rule के भागों को query URL में अलग-अलग पैरामीटर के रूप में विभाजित न करें।
प्रारंभिक counts अनुरोध करने के लिए यहाँ POST (cURL का उपयोग करते हुए) command का एक उदाहरण दिया गया है:
यदि API counts रिस्पॉन्स में ‘next’ टोकन शामिल हो, तो नीचे मूल अनुरोध पर आधारित एक अनुवर्ती अनुरोध दिया गया है, जिसमें ‘next’ पैरामीटर को दिए गए टोकन पर सेट किया गया है:
उदाहरण GET अनुरोध
  • GET अनुरोध में, अनुरोध पैरामीटर मानक URL encoding का उपयोग करके URL में एन्कोड किए जाते हैं
  • जिस PowerTrack नियम के लिए क्वेरी की जा रही है, उसके सभी हिस्से (उदा. keywords, bounding_box: जैसे अन्य operators) ‘query’ पैरामीटर में रखे जाने चाहिए
  • rule के हिस्सों को query URL में अलग-अलग पैरामीटर के रूप में विभाजित न करें
प्रारंभिक counts अनुरोध करने के लिए, यहाँ GET (cURL का उपयोग करते हुए) कमांड का एक उदाहरण दिया गया है:

counts रिस्पॉन्स के उदाहरण

नीचे counts (डेटा वॉल्यूम) क्वेरी के लिए एक उदाहरण रिस्पॉन्स दिया गया है। इस उदाहरण रिस्पॉन्स में एक ‘next’ टोकन शामिल है, जिसका अर्थ है कि counts अनुरोध 31 दिनों से अधिक की अवधि के लिए था, या सबमिट की गई क्वेरी से जुड़ा वॉल्यूम इतना अधिक था कि आंशिक रिस्पॉन्स ट्रिगर हो गया। ‘next’ एलिमेंट का मान हर क्वेरी के साथ बदल जाएगा और इसे एक opaque string के रूप में माना जाना चाहिए। रिस्पॉन्स बॉडी में ‘next’ एलिमेंट निम्नलिखित जैसा दिखाई देगा:
इसके बाद आने वाले अनुरोध का रिस्पॉन्स कुछ इस तरह दिख सकता है (नई counts timeline और अलग ‘next’ मान पर ध्यान दें):
आप अपनी पिछली क्वेरी के ‘next’ element को तब तक पास करते रह सकते हैं, जब तक आपको क्वेरी की समयावधि के सभी counts प्राप्त न हो जाएँ। जब आपको ऐसा रिस्पॉन्स मिलता है, जिसमें ‘next’ element शामिल नहीं होता, तो इसका मतलब है कि आप आख़िरी page पर पहुँच चुके हैं और आपकी समय-सीमा में कोई अतिरिक्त counts उपलब्ध नहीं हैं।

HTTP रिस्पॉन्स कोड