कृपया ध्यान दें हमने X API v2 में batch compliance नाम का एक नया कंप्लायंस टूल जारी किया है। यह नया टूल आपको पोस्ट या उपयोगकर्ता IDs के बड़े डेटासेट अपलोड करने की सुविधा देता है, ताकि उनकी कंप्लायंस स्थिति प्राप्त की जा सके और यह निर्धारित किया जा सके कि आपके डेटासेट को अनुपालन में लाने के लिए किस डेटा पर कार्रवाई आवश्यक है।
इसके अतिरिक्त, पोस्ट संपादन के समर्थन के लिए batch compliance और compliance firehose, दोनों को अपडेट किया गया है। compliance firehose के लिए, एक नया ‘tweet_edit’ इवेंट जोड़ा गया है। अधिक जानकारी के लिए Compliance Data Objects दस्तावेज़ देखें। Edit Post मेटाडेटा कैसे काम करता है, इसके बारे में अधिक जानने के लिए Edit Posts fundamentals पेज देखें।
अवलोकन
Enterprise
X के मूल मूल्यों में से एक है उपयोगकर्ता की आवाज़ की रक्षा करना और उसका सम्मान करना। इसमें उनकी अपेक्षाओं और मंशा का सम्मान करना भी शामिल है, जब वे X पर साझा की गई अपनी सामग्री को हटाते, बदलते या संपादित करते हैं। हमारा मानना है कि यह दुनिया के सबसे बड़े सार्वजनिक, रीयल-टाइम सूचना प्लेटफ़ॉर्मों में से एक के दीर्घकालिक स्वास्थ्य के लिए अत्यंत महत्वपूर्ण है। X अपने उपयोगकर्ताओं को नियंत्रण देता है, जिससे व्यक्तियों को अपने X अनुभव को नियंत्रित करने की क्षमता मिलती है। हमारा मानना है कि X डेटा प्राप्त करने वाले व्यावसायिक उपभोक्ताओं की यह ज़िम्मेदारी है कि वे अंतिम उपयोगकर्ताओं की अपेक्षाओं और मंशा का सम्मान करें।
X प्लेटफ़ॉर्म पर संभव अनुपालन संबंधी घटनाओं के प्रकारों के बारे में अधिक जानकारी के लिए, हमारा लेख X पर उपयोगकर्ता की मंशा का सम्मान करना देखें।
API के माध्यम से X डेटा का उपयोग करने वाले किसी भी डेवलपर या कंपनी पर यह दायित्व होता है कि वह उपयोगकर्ता सामग्री में होने वाले बदलावों का सम्मान करने के लिए सभी उचित प्रयास करे। यह दायित्व उपयोगकर्ता घटनाओं, जैसे हटाना, संशोधन, और शेयरिंग विकल्पों में बदलाव (उदाहरण के लिए, सामग्री का संरक्षित या रोकी गई हो जाना) तक विस्तृत होता है। इसमें वे स्थितियाँ भी शामिल हैं जब उपयोगकर्ता अपने पोस्ट्स को संपादित करते हैं। कृपया Developer Policy और/या अपने X Data Agreement में दी गई विशिष्ट भाषा देखें, ताकि आप समझ सकें कि यह दायित्व आपके X डेटा के उपयोग को कैसे प्रभावित करता है।
X निम्नलिखित समाधान प्रदान करता है, जो इन उपयोगकर्ता अनुपालन संबंधी घटनाओं के बारे में जानकारी देते हैं और यह बताते हैं कि कोई विशिष्ट पोस्ट या उपयोगकर्ता सार्वजनिक रूप से उपलब्ध है या नहीं। समाधानों का संक्षिप्त अवलोकन और उनके सामान्य इंटीग्रेशन पैटर्न नीचे दिए गए हैं:
GET statuses/lookup और GET users/lookup
- प्रारूप: REST API’s देखें: GET statuses/lookup और GET users/lookup.
- ये endpoint हमेशा किसी भी पोस्ट संपादन का नवीनतम संस्करण लौटाते हैं। संपादन सुविधा शुरू होने के बाद बनाई गई पोस्ट्स का वर्णन करने वाले सभी Post objects में पोस्ट संपादन metadata शामिल होगा। यह उन पोस्ट्स पर भी लागू होता है जिन्हें संपादित नहीं किया गया था।
- सभी पोस्ट्स के लिए, उनके बनाए जाने के 30 मिनट से अधिक समय बाद की गई requests सभी पोस्ट्स की अंतिम स्थिति दर्शाएँगी।
- API request के हिस्से के रूप में caller द्वारा परिभाषित विशिष्ट पोस्ट्स या उपयोगकर्ताओं के लिए उपलब्धता संबंधी जानकारी प्रदान करते हैं।
- पोस्ट्स / उपयोगकर्ताओं के किसी विशिष्ट समूह की वर्तमान उपलब्धता स्थिति की ad-hoc spot-checking के लिए इनका उपयोग किया जा सकता है।
- उन ग्राहकों के लिए आदर्श, जिन्हें किसी निश्चित समय पर किसी विशेष पोस्ट या उपयोगकर्ता की वर्तमान स्थिति जांचने का तरीका चाहिए।
-
ये API’s एक उपयोगी तंत्र प्रदान करते हैं, जिसका उपयोग वे ग्राहक कर सकते हैं जिन्हें किसी सामग्री की उपलब्धता जांचनी हो, उदाहरण के लिए जब:
- पोस्ट्स प्रदर्शित करना
- किसी पोस्ट या उपयोगकर्ता के साथ 1:1 तरीके से इंटरैक्ट करना
- अनुमत file download के माध्यम से X सामग्री को किसी 3rd party तक वितरित करना
- पोस्ट्स को लंबे समय तक संग्रहीत करना
Compliance Firehose (केवल एंटरप्राइज़)
- फ़ॉर्मैट: Streaming API देखें: Compliance Firehose.
- X पर Compliance activities की रियल-टाइम स्ट्रीम प्रदान करता है। इन गतिविधियों में पोस्ट्स के संपादित किए जाने की घटनाएँ भी शामिल हैं।
- प्लेटफ़ॉर्म पर नए अनुपालन इवेंट होने पर, संग्रहीत डेटा के किसी सेट में अनुपालन स्थिति बनाए रखने के लिए इसका उपयोग किया जा सकता है।
- उन ग्राहकों के लिए आदर्श है जो लंबे समय तक X डेटा की बड़ी मात्रा प्राप्त और संग्रहीत करते हैं।
गाइड
अनुपालन के लिए सर्वोत्तम प्रथाएँ
सिफारिशें और सर्वोत्तम प्रथाएँ
- ऐसी डेटा स्टोरेज स्कीमाएँ बनाएँ जो संख्यात्मक पोस्ट ID और उपयोगकर्ता ID संग्रहीत करें: उपयोगकर्ता संदेशों के लिए उस उपयोगकर्ता की सभी पोस्ट्स पर कार्रवाई करना आवश्यक होता है। इसलिए, चूँकि सभी अनुपालन संदेश केवल संख्यात्मक ID के माध्यम से ही भेजे जाते हैं, ऐसी स्टोरेज स्कीमाएँ डिज़ाइन करना महत्वपूर्ण है जो संख्यात्मक ID के आधार पर पोस्ट और उपयोगकर्ता के बीच संबंध बनाए रखें। डेटा उपभोक्ताओं को पोस्ट ID और उपयोगकर्ता ID, दोनों के आधार पर अनुपालन इवेंट्स की निगरानी करनी होगी और स्थानीय डेटा स्टोर को उपयुक्त रूप से अपडेट करने में सक्षम होना होगा।
-
ऐसी स्कीमाएँ बनाएँ जो सभी अनुपालन स्थितियों को कवर करें: विभिन्न ऐप्लिकेशनों में अनुपालन गतिविधियों को कैसे संभाला जाएगा, इसके आधार पर डेटा स्टोर में अन्य मेटाडेटा जोड़ना आवश्यक हो सकता है। उदाहरण के लिए, डेटा उपभोक्ता
status\_withheldसंदेश से प्रभावित देशों में सामग्री के प्रदर्शन को सीमित करने में सुविधा के लिए किसी मौजूदा डेटाबेस में मेटाडेटा जोड़ने का निर्णय ले सकते हैं। - Retweet डिलीट को संभालना: Retweets, पोस्ट का एक विशेष प्रकार हैं, जिसमें मूल संदेश Retweet के भीतर एक ऑब्जेक्ट में नेस्टेड होता है। इस स्थिति में, एक Retweet में दो पोस्ट IDs का संदर्भ होता है – एक Retweet की ID, और दूसरी मूल संदेश की ID (जो नेस्टेड ऑब्जेक्ट में शामिल होती है)। जब कोई मूल संदेश हटाया जाता है, तो मूल ID के लिए एक पोस्ट delete संदेश जारी किया जाता है। पोस्ट deletion इवेंट्स आम तौर पर सभी Retweets के लिए delete इवेंट्स ट्रिगर करते हैं। हालांकि, कुछ मामलों में सभी नहीं भेजे जाते, इसलिए client systems को अपूर्ण Retweet deletions को सहन करने में सक्षम होना चाहिए। मूल ID का deletion, उसके बाद आने वाले सभी Retweets को हटाने के लिए पर्याप्त होना चाहिए। Retweets को संग्रहीत करते समय मूल पोस्ट ID का संदर्भ रखना, और पोस्ट delete इवेंट्स प्राप्त होने पर सभी संदर्भित Retweets को हटा देना, एक सर्वोत्तम प्रथा है।
अनुपालन डेटा ऑब्जेक्ट्स
Compliance Firehose API
- उपयोगकर्ता statuses के बारे में अधिक यहाँ पढ़ें, और deleted पोस्ट्स से संबंधित हमारी developer policy यहाँ देखें।
- Compliance Firehose को ‘tweet_edit’ इवेंट प्रदान करने के लिए अपडेट किया गया है।
- कई उपयोगकर्ता delete, protect और suspend इवेंट आवश्यक रूप से स्थायी नहीं होते और वे अवस्थाओं के बीच अनंत बार टॉगल हो सकते हैं। इनमें शामिल हैं: user_delete, user_undelete, user_protect, user_unprotect, user_suspend, user_unsuspend।
- user_deletes के 30 दिन बाद status_deletes केवल तभी आते हैं, जब उपयोगकर्ता ने अपने खाते को user_undelete चुनकर पुनर्स्थापित न किया हो। यह संभव है कि user_delete को उपयोगकर्ता बाद में उलट दे, और 30 दिन बाद उनकी सभी पोस्ट्स के लिए deletes न हों।
- user_suspend एक ऐसी कार्रवाई है जो तब तक प्रभावी रहती है, जब तक उपयोगकर्ता पर user_unsuspend इवेंट लागू न हो। ये 30 दिनों की समयावधि के किसी बदलाव के अधीन नहीं होते।
| मूल संदेश प्रकार | ऑब्जेक्ट | स्थायी (हाँ/नहीं) | अनुशंसित कार्रवाई |
|---|---|---|---|
| delete | Status | हाँ | संबंधित पोस्ट हटाएँ। |
| status_withheld | Status | हाँ | status_withheld संदेश में सूचीबद्ध विशिष्ट देशों में संबंधित पोस्ट को दबाएँ। |
| drop | Status | नहीं | पोस्ट को सार्वजनिक दृश्य से हटाएँ। |
| undrop | Status | नहीं | Status को फिर से प्रदर्शित किया जा सकता है और उसे सार्वजनिक माना जा सकता है। |
| tweet_edit | Status | हाँ | इसका सम्मान करें और जहाँ प्रासंगिक हो, नया edit दिखाएँ। |
| user_delete | उपयोगकर्ता | नहीं | संबंधित उपयोगकर्ता की सभी पोस्ट्स को दबाएँ या हटाएँ। |
| user_undelete | उपयोगकर्ता | नहीं | संबंधित उपयोगकर्ता की सभी पोस्ट्स को फिर से प्रदर्शित किया जा सकता है और उन्हें सार्वजनिक माना जा सकता है। |
| user_protect | उपयोगकर्ता | नहीं | संबंधित उपयोगकर्ता की सभी पोस्ट्स को दबाएँ या हटाएँ। |
| user_unprotect | उपयोगकर्ता | नहीं | संबंधित उपयोगकर्ता की सभी पोस्ट्स को फिर से प्रदर्शित किया जा सकता है और उन्हें सार्वजनिक माना जा सकता है। |
| user_suspend | उपयोगकर्ता | नहीं | संबंधित उपयोगकर्ता की सभी पोस्ट्स को दबाएँ या हटाएँ। |
| user_unsuspend | उपयोगकर्ता | नहीं | संबंधित उपयोगकर्ता की सभी पोस्ट्स को फिर से प्रदर्शित किया जा सकता है और उन्हें सार्वजनिक माना जा सकता है। |
| scrub_geo | उपयोगकर्ता | हाँ | scrub_geo संदेश में निर्दिष्ट पोस्ट से पहले, उपयोगकर्ता की सभी पोस्ट्स के लिए X द्वारा प्रदान किया गया समस्त geodata हटाएँ। ध्यान दें कि उपयोगकर्ता की बाद की पोस्ट्स में geodata हो सकता है, जिसका उपयोग किया जा सकता है। |
| user_withheld | उपयोगकर्ता | हाँ | user_withheld संदेश में सूचीबद्ध विशिष्ट देशों में संबंधित उपयोगकर्ता की पोस्ट्स को दबाएँ। |
| delete | Favorite | हाँ | संबंधित like/favorite हटाएँ। |
पेलोड के उदाहरण
पोस्ट हटाया जाना
पोस्ट रोकी गई
ड्रॉप
Undrop
भौगोलिक जानकारी हटाना
उपयोगकर्ता विलोपन
उपयोगकर्ता पुनर्बहाली
उपयोगकर्ता की जानकारी रोकी गई
उपयोगकर्ता को सुरक्षित करना
उपयोगकर्ता की सुरक्षा हटाना
उपयोगकर्ता को निलंबित करें
उपयोगकर्ता का निलंबन समाप्त करना
Compliance Firehose को एकीकृत करना
Compliance Firehose के साथ एकीकरण
- Compliance Firehose के प्रत्येक स्ट्रीमिंग API पार्टिशन के साथ एक स्ट्रीमिंग कनेक्शन स्थापित करे
- अधिक डेटा वॉल्यूम को संभाले – असिंक्रोनस प्रक्रियाओं का उपयोग करके स्ट्रीम इनजेशन को अतिरिक्त प्रोसेसिंग से अलग रखे
- किसी भी कारण से डिस्कनेक्ट होने पर स्ट्रीम पार्टिशनों से अपने-आप फिर से कनेक्ट हो
- ऊपर दिए गए मार्गदर्शन के अनुसार, आपके द्वारा संग्रहीत पोस्ट और उपयोगकर्ता डेटा से संबंधित अनुपालन इवेंट्स को प्रोसेस करे
Twitter पर उपयोगकर्ता की मंशा का सम्मान करना
उपयोगकर्ता
| Action | Description |
|---|---|
| खाते को सुरक्षित करें | X का कोई उपयोगकर्ता किसी भी समय अपने खाते को सुरक्षित या असुरक्षित कर सकता है। सुरक्षित खातों में, खाते के पोस्ट्स देखने की अनुमति पाने वाले हर व्यक्ति के लिए उपयोगकर्ता की मैन्युअल स्वीकृति आवश्यक होती है। अधिक जानकारी के लिए, About Public and Protected Posts देखें। |
| खाता हटाएँ | X का कोई उपयोगकर्ता किसी भी समय अपना खाता और उससे जुड़े सभी स्टेटस संदेशों को हटाने का निर्णय ले सकता है। यदि उपयोगकर्ता अपना खाता फिर से बहाल करना और प्रभावी रूप से पुनः सक्रिय करना चाहे, तो X हटाने के बाद 30 दिनों तक खाते की जानकारी सुरक्षित रखता है। |
| Geo हटाएँ | X का कोई उपयोगकर्ता किसी भी समय पिछले पोस्ट्स से सभी स्थान-संबंधी डेटा हटा सकता है। इसे “scrub geo” कहा जाता है। |
| खाता निलंबित करें | X को उन खातों को निलंबित करने का अधिकार है जो X के नियमों का उल्लंघन करते हैं या जिनके हैक या कंप्रोमाइज़ होने की आशंका होती है। खाते का निलंबन केवल X द्वारा ही हटाया जा सकता है (unsuspend)। |
| खाते पर रोक लगाएँ | X को समय-समय पर किसी विशेष देश में कुछ सामग्री तक पहुँच रोकने का अधिकार है। किसी रोके गए खाते से यह रोक केवल X ही हटा सकता है। अधिक जानकारी के लिए, Country Withheld Content देखें। |
स्टेटस
| कार्रवाई | विवरण |
|---|---|
| स्टेटस हटाएँ | X उपयोगकर्ता किसी भी समय स्टेटस हटा सकता है। हटाए गए स्टेटस को वापस नहीं लाया जा सकता और वे स्थायी रूप से मिटा दिए जाते हैं। |
| स्टेटस पर रोक लगाएँ | X समय-समय पर किसी विशेष देश में कुछ सामग्री की पहुँच को रोकने का अधिकार सुरक्षित रखता है। जिस स्टेटस पर रोक लगाई गई हो, उसे केवल X ही फिर से उपलब्ध करा सकता है। अधिक जानकारी के लिए, Country Withheld Content देखें। |
उपयोगकर्ता और स्टेटस में होने वाले बदलावों पर नज़र रखना
API संदर्भ
GET compliance/firehose
मेथड्स
| मेथड | विवरण |
|---|---|
| GET /compliance/:stream | डेटा स्ट्रीम से जुड़ें |
प्रमाणीकरण
GET /compliance/:stream
| Request Method | HTTP GET |
| Connection Type | Keep-Alive |
| URL | आपके डैशबोर्ड में स्ट्रीम के API Help पेज पर उपलब्ध, और यह निम्नलिखित संरचना जैसा दिखता है: https://gnip-stream.x.com/stream/compliance/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 नोट: “partition” पैरामीटर आवश्यक है। पूरी स्ट्रीम का उपभोग करने के लिए आपको सभी 8 partition से कनेक्ट करना होगा, जिनमें से प्रत्येक में कुल वॉल्यूम का 12.5% होता है। |
| Compression | Gzip. Gzip compression का उपयोग करके स्ट्रीम से कनेक्ट करने के लिए, कनेक्शन अनुरोध में बस एक Accept-Encoding header भेजें। header निम्नलिखित जैसा दिखना चाहिए: Accept-Encoding: gzip |
| Character Encoding | UTF-8 |
| Response Format | JSON. आपके अनुरोध के header में response के लिए JSON format निर्दिष्ट होना चाहिए। |
| Rate Limit | 60 सेकंड में 10 अनुरोध। |
| Read Timeout | अपने client पर read timeout सेट करें और सुनिश्चित करें कि यह 30 सेकंड से अधिक मान पर सेट हो। |
| Support for Tweet edits | सभी Tweet edits एक “tweet_edit” Compliance event ट्रिगर करते हैं। अधिक जानकारी के लिए Compliance Data Objects दस्तावेज़ देखें। |
partition=1 से कनेक्ट होता है - इस स्ट्रीम का पूरा डेटा प्राप्त करने के लिए आपको सभी 8 partitions से कनेक्ट करना होगा।
रिस्पॉन्स कोड
| Status | Text | Definition |
|---|---|---|
| 200 | सफलता | कनेक्शन सफलतापूर्वक खोल दिया गया और नई गतिविधियाँ उपलब्ध होते ही भेजी जाएँगी। |
| 401 | अनधिकृत | अमान्य क्रेडेंशियल्स के कारण HTTP प्रमाणीकरण विफल हो गया। अपने क्रेडेंशियल्स के साथ console.gnip.com में लॉग इन करें, ताकि यह सुनिश्चित हो सके कि आप उन्हें अपने अनुरोध के साथ सही तरीके से उपयोग कर रहे हैं। |
| 406 | स्वीकार्य नहीं | आम तौर पर, यह तब होता है जब आपका क्लाइंट स्ट्रीम से gzip encoding स्वीकार करने के लिए हेडर्स सही तरीके से शामिल नहीं करता, लेकिन यह अन्य परिस्थितियों में भी हो सकता है। इसमें “This connection requires compression. To enable compression, send an ‘Accept-Encoding: gzip’ header in your request and be ready to uncompress the stream as it is read on the client end.” जैसा एक JSON संदेश शामिल होगा। |
| 429 | रेट लिमिट लागू | आपका ऐप कनेक्शन अनुरोधों की सीमा से अधिक हो गया है। |
| 503 | सेवा अनुपलब्ध | Twitter सर्वर से जुड़ी समस्या। exponential backoff pattern का उपयोग करके फिर से कनेक्ट करें। यदि इस समस्या के बारे में X API Status Page पर कोई सूचना पोस्ट नहीं की गई है, तो support से संपर्क करें। |
अन्य अनुशंसाएँ & सर्वोत्तम प्रथाएँ
- ऐसी डेटा स्टोरेज स्कीमाएँ बनाएँ जो संख्यात्मक Tweet ID और User ID संग्रहीत करें: उपयोगकर्ता संदेशों के लिए उस उपयोगकर्ता के सभी Tweets पर कार्रवाई करना आवश्यक होता है। इसलिए, चूँकि सभी compliance संदेश केवल संख्यात्मक ID के आधार पर ही भेजे जाते हैं, ऐसी स्टोरेज स्कीमाएँ डिज़ाइन करना महत्वपूर्ण है जो संख्यात्मक ID के आधार पर Tweet और User के बीच संबंध बनाए रखें। डेटा उपभोक्ताओं को Tweet ID और User ID, दोनों के आधार पर compliance events की निगरानी करनी होगी और स्थानीय डेटा स्टोर को उपयुक्त रूप से अपडेट करने में सक्षम होना होगा।
-
ऐसी स्कीमाएँ बनाएँ जो सभी compliance statuses को कवर करें: विभिन्न अनुप्रयोगों में compliance गतिविधियों को कैसे संभाला जाएगा, इसके आधार पर डेटा स्टोर में अन्य metadata जोड़ना आवश्यक हो सकता है। उदाहरण के लिए, डेटा उपभोक्ता
status_withheldसंदेश से प्रभावित देशों में सामग्री के प्रदर्शन को प्रतिबंधित करने की सुविधा के लिए किसी मौजूदा डेटाबेस में metadata जोड़ने का निर्णय ले सकते हैं। - Retweet deletes को संभालना: Retweets, Tweet का एक विशेष प्रकार हैं, जिसमें मूल संदेश Retweet के भीतर एक nested object में होता है। इस स्थिति में, एक Retweet में दो Tweet IDs संदर्भित होती हैं — एक Retweet की ID और दूसरी मूल संदेश की ID (जो nested object में शामिल होती है)। जब किसी मूल संदेश को हटाया जाता है, तो मूल ID के लिए एक Tweet delete message जारी किया जाता है। इसके बाद सभी Retweets के लिए अलग-अलग delete messages जारी नहीं किए जाते। मूल ID को हटाना, उसके बाद के सभी Retweets को हटाने के लिए पर्याप्त होना चाहिए।