Idempotency
`Idempotency-Key` हेडर अस्थिर नेटवर्क पर रीट्राय करते समय दोहरे शुल्क से कैसे बचाता है।
यह क्यों मायने रखता है
नेटवर्क बीच-अनुरोध विफल होते हैं। यदि आप POST /v1/activations करते हैं और प्रतिक्रिया देखने से पहले कनेक्शन गिर जाता है, तो आपको पता नहीं चलता कि सक्रियण बनाया गया था या नहीं। भोलेपन से रीट्राय करना आपको दो बार चार्ज कर सकता है।
Idempotency-Key हेडर इसे हल करता है: रीट्राय पर वही कुंजी भेजें, वही परिणाम प्राप्त करें।
उपयोग कैसे करें
प्रति तार्किक ऑपरेशन एक UUID उत्पन्न करें, इसे उसी ऑपरेशन के प्रत्येक रीट्राय पर भेजें:
KEY=$(uuidgen)
curl -X POST https://api.eveses.com/v1/activations \
-H "Authorization: Bearer $EVESES_API_KEY" \
-H "Idempotency-Key: $KEY" \
-d '{"country":"ua", "service":"telegram"}'
उसी Idempotency-Key के साथ बिल्कुल वही कॉल फिर से चलाने पर मूल प्रतिक्रिया लौटती है — कोई दूसरा सक्रियण नहीं, कोई दूसरा शुल्क नहीं।
TTL
कुंजियाँ 24 घंटे के लिए याद रखी जाती हैं। उसके बाद स्लॉट मुक्त हो जाता है और वही कुंजी नई के रूप में पुन: उपयोग की जा सकती है।
कहाँ लागू
सभी POST /v1/* एंडपॉइंट्स जो बनाते या चार्ज करते हैं: सक्रियण, किराये, जमा, विस्तार। रीड एंडपॉइंट्स (GET) पहले से idempotent हैं और हेडर को अनदेखा करते हैं।
विरोधाभास
यदि आप एक अलग body के साथ उसी कुंजी का पुन: उपयोग करते हैं, तो API 409 idempotency_conflict लौटाता है। रीट्राय पर body को समान रखें, या एक नई कुंजी उत्पन्न करें।
SDK व्यवहार
आधिकारिक SDK प्रत्येक create कॉल के लिए स्वचालित रूप से idempotency keys उत्पन्न करते हैं और स्वचालित रीट्राय पर उनका पुन: उपयोग करते हैं। यदि आवश्यक हो तो आप स्पष्ट कुंजी से ओवरराइड कर सकते हैं।