जब Apigee Edge के ज़रिए एपीआई अनुरोध किए जाते हैं, तो Apigee Edge के कॉम्पोनेंट राऊटर और मैसेज प्रोसेसर या बैकएंड सर्वर, क्लाइंट ऐप्लिकेशन में गड़बड़ियां दिखा सकते हैं.
मैसेज प्रोसेसर की गड़बड़ियां
Message प्रोसेसर, Apigee Edge का मुख्य कॉम्पोनेंट है. यह नीतियों को प्रोसेस करता है और बैकएंड सर्वर से इंटरैक्ट करता है. अगर इसे इस तरह की किसी समस्या का पता चलता है, तो यह गड़बड़ी दिखा सकता है:
नेटवर्क कनेक्टिविटी की समस्याएं, TLS हैंडशेक काम नहीं करना, बैकएंड सर्वर उपलब्ध न होना,
बैकएंड सर्वर से कम्यूनिकेशन के दौरान रिस्पॉन्स न मिलना
नीति लागू करने के दौरान गड़बड़ियां
अमान्य एचटीटीपी हेडर, एन्कोडिंग, पाथ, एचटीटीपी स्पेसिफ़िकेशन का पालन न करना,
प्रॉडक्ट की सीमाओं से ज़्यादा होना वगैरह:
क्लाइंट ऐप्लिकेशन से भेजे गए एचटीटीपी अनुरोध के साथ
या
बैकएंड सर्वर से भेजे गए एचटीटीपी रिस्पॉन्स के साथ
और भी बहुत कुछ
मैसेज प्रोसेसर की गड़बड़ी का नमूना
मैसेज प्रोसेसर हमेशा एक एचटीटीपी स्टेटस कोड के बाद गड़बड़ी का मैसेज दिखाता है. साथ ही, यह JSON फ़ॉर्मैट में गड़बड़ी कोड भी दिखाता है, जैसा कि यहां दिखाया गया है:
क्लाइंट ऐप्लिकेशन को नीचे दिए गए उदाहरण के मुताबिक एक रिस्पॉन्स कोड मिलता है:
HTTP/1.1 414 Request-URI Too Long
नीचे दिए गए फ़ॉर्मैट में मैसेज प्रोसेसर से गड़बड़ी के मैसेज दिखते हैं:
इसमें गड़बड़ी का संभावित मैसेज शामिल होता है, जो गड़बड़ी की संभावित वजह के बारे में बताता है
errorcode
गड़बड़ी से जुड़ा गड़बड़ी कोड (इसे गलत कोड भी कहा जाता है)
रनटाइम की गड़बड़ी वाला कैटलॉग
गड़बड़ी के इस कैटलॉग में, आपको रनटाइम की गड़बड़ी के कोड (नीति से जुड़ी गड़बड़ियों के लिए) के बारे में सारी ज़रूरी जानकारी मिलती है. ये कोड, Apigee Edge के मैसेज प्रोसेसर कॉम्पोनेंट से मिले हैं. इसमें हर गड़बड़ी कोड के लिए, नीचे दी गई जानकारी शामिल होती है:
एचटीटीपी स्टेटस कोड
गड़बड़ी का मैसेज
गड़बड़ी की संभावित वजहें
कोई भी असोसिएट एचटीटीपी की खास जानकारी और/या प्रॉडक्ट की सीमाएं
ऐसी प्लेबुक और वीडियो जिनमें गड़बड़ी की वजह का पता लगाने के निर्देश दिए गए हैं. साथ ही,
गड़बड़ी को खुद ठीक करने के कारगर तरीके भी बताए गए हैं (जहां उपलब्ध हो)
किसी खास गड़बड़ी कोड के लिए ऊपर दी गई जानकारी दिखाने के लिए, टेबल को फ़िल्टर करने के लिए नीचे दिए गए खोज बॉक्स का इस्तेमाल करें. टेबल में, किसी भी फ़ील्ड में स्टेटस कोड या कोई कॉन्टेंट खोजा जा सकता है.
searchखोज
गड़बड़ी का कोड
ब्यौरा
समाधान
flow.*
flow.APITimedOut
एचटीटीपी स्टेटस कोड:
504 Gateway Timeout
गड़बड़ी का मैसेज:
API timed out
संभावित वजह:
यह गड़बड़ी तब होती है, जब:
खास एपीआई प्रॉक्सी के लिए, प्रॉपर्टी api.timeout से कॉन्फ़िगर की गई टाइम आउट अवधि के अंदर बैकएंड सर्वर, जवाब नहीं देता.
कंप्यूटेशन की मदद से की जाने वाली कार्रवाइयों, ज़्यादा लोड
या खराब परफ़ॉर्मेंस की वजह से, नीति में ज़्यादा समय लगता है.
ध्यान दें: इस प्लेबुक में गड़बड़ी कोड messaging.adaptors.http.flow.GatewayTimeout को ठीक करने के निर्देश दिए गए हैं. हालांकि, flow.APITimedOut गड़बड़ी कोड को ठीक करने के लिए भी उसी प्लेबुक का इस्तेमाल किया जा सकता है.
एचटीटीपी अनुरोध के हेडर में बताया गया एन्कोडिंग
Content-Encoding मान्य है और
Apigee Edge
पर काम करता है,
लेकिन
एचटीटीपी अनुरोध के हिस्से के रूप में क्लाइंट ने जो पेलोड फ़ॉर्मैट भेजा है वह Content-Encoding हेडर में बताए गए कोड में बदलने के फ़ॉर्मैट से मेल नहीं खाता
बैकएंड/टारगेट सर्वर के एचटीटीपी रिस्पॉन्स हेडर Content-Encoding में दी गई एन्कोडिंग मान्य है और
Apigee Edge के साथ काम करती है,
लेकिन
एचटीटीपी रिस्पॉन्स के हिस्से के रूप में बैकएंड/टारगेट सर्वर से भेजा गया पेलोड फ़ॉर्मैट, Content-Encoding हेडर में बताए गए कोड में बदलने के फ़ॉर्मैट से मेल नहीं खाता
गड़बड़ी का मैसेज और उसका फ़ॉर्मैट, बैकएंड सर्वर लागू करने के तरीके के हिसाब से अलग-अलग हो सकता है.
संभावित वजह:
यह गड़बड़ी तब होती है, जब बैकएंड सर्वर, Apigee Edge पर स्टेटस
कोड 504 के साथ जवाब देता है.
ध्यान दें: क्लाइंट ऐप्लिकेशन को भेजे गए गड़बड़ी के मैसेज में, गड़बड़ी कोड messaging.adaptors.http.flow.ErrorResponseCode नहीं दिखाया जाता है. ऐसा इसलिए होता है, क्योंकि जब भी बैकएंड सर्वर, किसी गड़बड़ी और किसी भी 4XX या 5XX स्टेटस कोड के साथ जवाब देता है, तो यह गड़बड़ी कोड Apigee Edge सेट करता है. आपको यह गड़बड़ी कोड, एपीआई मॉनिटरिंग, NGINX ऐक्सेस लॉग या
आंकड़ों के डेटाबेस में दिखेगा.
messaging.adaptors.http.flow.GatewayTimeout
एचटीटीपी स्टेटस कोड:
504 Gateway Timeout
गड़बड़ी का मैसेज:
Gateway Timeout
संभावित वजह:
यह गड़बड़ी तब होती है, जब बैकएंड सर्वर, मैसेज प्रोसेसर पर कॉन्फ़िगर
किए गए
I/O टाइम आउट पीरियड के अंदर Apigee Edge Message प्रोसेसर को जवाब नहीं देता.
यह गड़बड़ी तब होती है, जब Apigee Edge को भेजे गए एचटीटीपी POST और PUT अनुरोधों के हिस्से के तौर पर, क्लाइंट ऐप्लिकेशन Content-Length हेडर को पास नहीं करता है.
ध्यान दें: इस गड़बड़ी की वजह से काम न करने वाले अनुरोधों को ट्रेस टूल में कैप्चर नहीं किया जा सकता. इसकी वजह यह है कि मैसेज प्रोसेसर, अनुरोध को प्रोसेस करने और एपीआई प्रॉक्सी में किसी नीति को लागू करने से काफ़ी पहले, पुष्टि करने के शुरुआती चरण में इसे पूरा करता है.
इस गड़बड़ी को ठीक करने के लिए, नीचे दिया गया तरीका अपनाएं:
यह पक्का करें कि क्लाइंट ऐप्लिकेशन, Apigee Edge को भेजे गए एचटीटीपी POST और PUT अनुरोधों के हिस्से के तौर पर, हमेशा हेडर Content-Length को पास करता हो. उदाहरण के लिए:
curl -X POST https://HOSTALIAS/PATH -d '{"name": "abc"}' -H "Content-Length: 15"
भले ही, POST और
PUT अनुरोधों के साथ खाली पेलोड पास किया जा रहा हो, लेकिन पक्का करें कि हेडर
Content-Length: 0 पास हो गया हो. उदाहरण के लिए:
curl -X POST https://HOSTALIAS/PATH -H "Content-Length: 0"
messaging.adaptors.http.flow.NoActiveTargets
एचटीटीपी स्टेटस कोड:
503 Service Unavailable
गड़बड़ी का मैसेज:
The Service is temporarily unavailable
संभावित वजह:
अगर आप Apigee Edge में
TargetServer इस्तेमाल कर रहे हैं, तो यह गड़बड़ी इनमें से किसी एक स्थिति में होती है:
बैकएंड सर्वर होस्ट के डीएनएस रिज़ॉल्यूशन के लिए, कस्टम ऑथराइज़ेशन सर्वर ने सेटिंग सही नहीं की. इसकी वजह से, आईपी पते खराब हुए. इसकी वजह से कनेक्शन में गड़बड़ियां हुईं.
कनेक्शन टाइम आउट होने से जुड़ी गड़बड़ियां, जिनकी वजह है:
बैकएंड सर्वर पर फ़ायरवॉल की पाबंदी,
Apigee Edge को बैकएंड सर्वर से कनेक्ट होने से रोकती है.
Apigee Edge
और बैकएंड सर्वर के बीच, नेटवर्क कनेक्टिविटी से जुड़ी समस्याएं.
targetServer में बताया गया होस्ट गलत है या
उसमें अनचाहे वर्ण (जैसे कि कोई स्पेस) हैं.
यह गड़बड़ी तब होती है, जब Apigee Edge के मैसेज प्रोसेसर को, मैसेज प्रोसेसर कॉम्पोनेंट पर कॉन्फ़िगर किए गए,
I/O टाइम आउट अवधि के लिए क्लाइंट ऐप्लिकेशन से अनुरोध पेलोड नहीं मिलता है.
समाधान
पक्का करें कि क्लाइंट ऐप्लिकेशन, Apigee Edge के मैसेज प्रोसेसर कॉम्पोनेंट में कॉन्फ़िगर किए गए,
I/O टाइम आउट पीरियड के अंदर अनुरोध पेलोड भेजता है.
messaging.adaptors.http.flow.ServiceUnavailable
एचटीटीपी स्टेटस कोड:
503 Service Unavailable
गड़बड़ी का मैसेज:
The Service is temporarily unavailable
संभावित वजह:
यह गड़बड़ी इनमें से किसी एक स्थिति में आती है:
बैकएंड सर्वर होस्ट के डीएनएस रिज़ॉल्यूशन में, कस्टम ऑथराइज़ेशन सर्वर ने गलत आईपी पते दिए. इस वजह से कनेक्शन में गड़बड़ियां हुईं.
कनेक्शन के टाइम आउट होने से जुड़ी गड़बड़ियों की ये वजहें हो सकती हैं:
बैकएंड सर्वर पर फ़ायरवॉल की पाबंदी,
Apigee Edge को बैकएंड सर्वर से कनेक्ट होने से रोकती है.
Apigee Edge और
बैकएंड सर्वर के बीच नेटवर्क कनेक्टिविटी से जुड़ी समस्याएं.
टारगेट एंडपॉइंट में बताया गया टारगेट सर्वर होस्ट गलत है या उसमें अनचाहे वर्ण (जैसे कि स्पेस) हैं.
यह गड़बड़ी तब होती है, जब Apigee Edge, अनुरोध को किसी भी TargetEndpoints
को अनुरोध नहीं भेज पाता, क्योंकि:
रास्ते के नियम (<RouteRule>) की ऐसी कोई शर्त नहीं है जो प्रॉक्सी के अनुरोध से मेल खाती हो
और
प्रॉक्सीEndpoint में कोई डिफ़ॉल्ट रूट नियम तय नहीं किया गया है
(जैसे, <RouteRule>, बिना किसी शर्त के)
समाधान
इस गड़बड़ी को ठीक करने के लिए, इन निर्देशों का पालन करें:
अपने प्रॉक्सीEndpoint में तय किए गए रूट के नियमों को देखें और पक्का करें कि
आपके अनुरोध से मेल खाने वाले रूट के नियम की कम से कम एक शर्त मौजूद हो.
अगर आपके पास कई रूट नियम हैं, तो बिना किसी शर्त के डिफ़ॉल्ट रूट नियम तय करना एक अच्छा तरीका है.
पक्का करें कि डिफ़ॉल्ट रूट का नियम, कंडिशनल रूट की सूची में सबसे आखिर में
तय किया गया हो, क्योंकि प्रॉक्सीEndpoint में नियमों का मूल्यांकन ऊपर से किया जाता है.
प्रॉक्सीEndpoint में <RouteRule> शर्तें तय करने के बारे में ज़्यादा जानने के लिए,
शर्त वाले टारगेट देखें.
messaging.runtime.SenseRaiseFault
एचटीटीपी स्टेटस कोड:
403 Forbidden
गड़बड़ी का मैसेज:
Sense Fault
संभावित वजह:
यह गड़बड़ी तब होती है, जब किसी खास क्लाइंट के आईपी पते से एपीआई अनुरोध किया जाता है, जिसे Apigee Sense के नियमों के तहत ब्लॉक किया गया है.
समाधान
इस गड़बड़ी को ठीक करने के लिए, इन निर्देशों का पालन करें:
अगर किसी खास क्लाइंट के आईपी पते को ब्लॉक नहीं किया गया है, लेकिन
आपको अब भी यह गड़बड़ी दिख रही है, तो Apigee Edge की सहायता टीम से संपर्क करें.
protocol.http.* - Caused due to bad request
protocol.http.BadFormData
एचटीटीपी स्टेटस कोड:
500 Internal Server Error
गड़बड़ी का मैसेज:
Bad Form Data
संभावित वजह:
यह गड़बड़ी सिर्फ़ तब होती है, जब ये सभी शर्तें पूरी होती हैं:
क्लाइंट से Apigee Edge को भेजे गए एचटीटीपी अनुरोध में,
ये चीज़ें शामिल होती हैं:
Content-Type: application/x-www-form-urlencoded,
और
प्रतिशत का निशान (%) या प्रतिशत के निशान (%) के साथ फ़ॉर्म का डेटा, जिसके बाद अमान्य हेक्साडेसिमल वर्ण हैं. इन वर्णों की
फ़ॉर्म - सेक्शन 17.13.4.1 के मुताबिक अनुमति नहीं है.
Apigee Edge में, एपीआई प्रॉक्सी, फ़ॉर्म के उन खास पैरामीटर को पढ़ता है
जिनमें ऐसे वर्ण होते हैं जिन्हें अनुरोध फ़्लो में ExtractVariables या AssignmentsMessage नीति का इस्तेमाल करने की अनुमति नहीं दी जाती है.
यह गड़बड़ी तब होती है, जब कोई ऐसा खास एचटीटीपी हेडर जिसे Apigee Edge में डुप्लीकेट
होने की अनुमति नहीं है, वह क्लाइंट ऐप्लिकेशन से Apigee Edge को भेजे गए एचटीटीपी अनुरोध के हिस्से के रूप में, एक से ज़्यादा या अलग-अलग वैल्यू के साथ एक से ज़्यादा बार दिखता है.
यह पक्का करें कि क्लाइंट ऐप्लिकेशन से Apigee Edge को भेजे गए एचटीटीपी अनुरोध में,
आरएफ़सी 7230 के सेक्शन 3.2: हेडर फ़ील्ड के मुताबिक, हेडर का मान्य नाम हमेशा शामिल हो.
protocol.http.HeaderNameWithNonAsciiChar
एचटीटीपी स्टेटस कोड:
400 Bad Request
गड़बड़ी का मैसेज:
Header {header_name} contains non ascii character {character}
संभावित वजह:
यह गड़बड़ी तब होती है, जब क्लाइंट ऐप्लिकेशन से Apigee Edge को भेजे गए एचटीटीपी अनुरोध के हिस्से के तौर पर, हेडर के नाम में गैर-ASCII वर्ण शामिल हों.
Header {header_name} contains invalid character {character}
संभावित वजह:
यह गड़बड़ी तब होती है, जब क्लाइंट ऐप्लिकेशन से Apigee Edge को भेजे गए एचटीटीपी अनुरोध के हिस्से के तौर पर, हेडर के नाम में बराबर (=), कॉमा (,), सेमीकोलन (;), टैब, CRLF, और न्यूलाइन वर्ण जैसे अमान्य वर्ण शामिल हों.
यह गड़बड़ी तब होती है, जब क्लाइंट ऐप्लिकेशन से Apigee Edge को भेजे गए एचटीटीपी अनुरोध के यूआरएल में मौजूद पाथ में, ऐसे वर्ण शामिल हैं जिन्हें आरएफ़सी 3986 के सेक्शन 3.3: पाथ के मुताबिक, इस्तेमाल करने की अनुमति नहीं है.
पक्का करें कि क्लाइंट ऐप्लिकेशन से Apigee Edge को भेजे गए एचटीटीपी अनुरोध यूआरएल के पाथ में, ऐसा कोई भी वर्ण शामिल न हो जिसे
आरएफ़सी 3986 के सेक्शन 3.3: पाथ के तौर पर अनुमति नहीं दी गई है.
protocol.http.TooBigBody
एचटीटीपी स्टेटस कोड:
413 Request Entity Too Large
गड़बड़ी का मैसेज:
Body buffer overflow
संभावित वजह:
यह गड़बड़ी तब होती है, जब क्लाइंट ऐप्लिकेशन से Apigee Edge को भेजे गए पेलोड का साइज़, Apigee Edge में दी गई सीमा से ज़्यादा हो.
क्लाइंट ऐप्लिकेशन से Apigee Edge को भेजे गए एचटीटीपी अनुरोध के तहत, भेजे गए सभी अनुरोध हेडर का कुल साइज़ Apigee Edge की अनुमति वाली सीमा से ज़्यादा है.
यह गड़बड़ी तब होती है, जब Apigee Edge को एचटीटीपी अनुरोध के हिस्से के रूप में, क्लाइंट ऐप्लिकेशन से
भेजी गई अनुरोध लाइन का साइज़ Apigee Edge में दी गई सीमा से
ज़्यादा हो.
यह गड़बड़ी तब होती है, जब एचटीटीपी रिस्पॉन्स के तौर पर क्लाइंट से भेजे गए Content-Encoding हेडर में, एन्कोडिंग/पेलोड फ़ॉर्मैट शामिल हो. यह फ़ॉर्मैट
Apigee Edge के साथ काम नहीं करता.
यह गड़बड़ी तब होती है, जब बैकएंड सर्वर के अनुरोध वाले यूआरएल को फ़्लो वैरिएबल target.url से दिखाया जाता है. इसमें एक पाथ शामिल होता है जो फ़ॉरवर्ड स्लैश (/) के बजाय, सवाल के निशान (?) से शुरू होता है. यह अमान्य है.
यह गड़बड़ी तब होती है, जब किसी खास एचटीटीपी हेडर को Apigee Edge में डुप्लीकेट
होने की अनुमति नहीं होती है. यह हेडर, बैकएंड सर्वर से Apigee Edge को भेजे गए एचटीटीपी रिस्पॉन्स के हिस्से के रूप में, एक से ज़्यादा बार
या अलग-अलग वैल्यू के साथ दिखता है.
यह पक्का करें कि बैकएंड सर्वर से Apigee Edge को भेजे गए एचटीटीपी रिस्पॉन्स में हमेशा एक मान्य हेडर नाम शामिल हो. ऐसा
आरएफ़सी 7230 के सेक्शन 3.2: हेडर फ़ील्ड के मुताबिक किया गया है.
protocol.http.EmptyPath
एचटीटीपी स्टेटस कोड:
500 Internal Server Error
गड़बड़ी का मैसेज:
Request path cannot be empty
संभावित वजह:
यह गड़बड़ी तब होती है, जब फ़्लो वैरिएबल target.url से दिखाए जाने वाले बैकएंड सर्वर के एचटीटीपी अनुरोध यूआरएल में कोई खाली पाथ होता है.
Header {header_name} contains non ascii character {character}
संभावित वजह:
यह गड़बड़ी तब होती है, जब Apigee Edge को मिले एचटीटीपी रिस्पॉन्स के हिस्से के तौर पर, बैकएंड सर्वर से भेजे गए हेडर के नाम में गैर-ASCII वर्ण शामिल हों.
Header {header_name} contains invalid character {character}
संभावित वजह:
यह गड़बड़ी तब होती है, जब बैकएंड सर्वर से भेजे गए हेडर के नाम में, बराबर (=), कॉमा (,), सेमीकोलन (;), टैब, सीआरएलएफ़, और न्यूलाइन वर्ण जैसे अमान्य वर्ण शामिल हों.
Proxy refused to create tunnel with response status {status code}
संभावित वजह:
प्रॉक्सी सर्वर से Apigee Edge और बैकएंड सर्वर के बीच टनल बनाते समय यह गड़बड़ी होती है. यह गड़बड़ी फ़ायरवॉल, एसीएल (ऐक्सेस कंट्रोल लिस्ट), डीएनएस की समस्याओं, बैकएंड सर्वर की उपलब्धता वगैरह की वजह से होती है.
ध्यान दें: गड़बड़ी के मैसेज (faultstring) में मौजूद स्टेटस कोड
समस्या की बड़ी वजह बताता है.
Response Status code 306 is reserved, so can't be used.
संभावित वजह:
यह गड़बड़ी तब होती है, जब बैकएंड सर्वर ने
Apigee Edge के साथ 306 स्टेटस कोड के साथ जवाब दिया हो.
306 स्टेटस कोड के बारे में एचटीटीपी स्पेसिफ़िकेशन के पिछले वर्शन में बताया गया था. एचटीटीपी के मौजूदा स्पेसिफ़िकेशन के मुताबिक, यह कोड रिज़र्व है. इसका इस्तेमाल नहीं किया जाना चाहिए.
यह गड़बड़ी तब होती है, जब बैकएंड सर्वर से Apigee Edge को भेजा जाने वाला एचटीटीपी रिस्पॉन्स
204 No Content या
205 Reset Content हो, लेकिन उसमें रिस्पॉन्स का मुख्य हिस्सा और/या इनमें से एक या एक से ज़्यादा हेडर शामिल हों:
यह गड़बड़ी तब होती है, जब Apigee Edge को एचटीटीपी रिस्पॉन्स के तौर पर बैकएंड सर्वर से भेजे गए सभी रिस्पॉन्स हेडर का कुल साइज़, Apigee Edge में दी गई सीमा से ज़्यादा हो.
यह गड़बड़ी तब होती है, जब Apigee Edge को एचटीटीपी रिस्पॉन्स के तौर पर बैकएंड सर्वर से भेजी गई रिस्पॉन्स लाइन का साइज़, Apigee Edge में दी गई सीमा से ज़्यादा हो.
यह गड़बड़ी तब होती है, जब एचटीटीपी रिस्पॉन्स के हिस्से के तौर पर बैकएंड सर्वर, Content-Encoding हेडर में डेटा को कोड में बदलने/पेलोड का फ़ॉर्मैट देता हो. यह फ़ॉर्मैट
Apigee Edge के साथ काम नहीं करता.
KeyAlias {KeyAlias_name} is not found in
Keystore {Keystore_Name}
संभावित वजह:
यह गड़बड़ी तब होती है, जब TargetEndpoint
या TargetServer में रेफ़र की गई KeyAlias मौजूद न हों.
समाधान
पक्का करें कि TargetEndpoint या TargetServer में बताई गई KeyAlias
मौजूद हैं और खास कीस्टोर का हिस्सा हैं.
security.util.TrustStoreWithNoCertificates
एचटीटीपी स्टेटस कोड:
500 Internal Server Error
गड़बड़ी का मैसेज:
TrustStore {truststore_name} has no certificates
संभावित वजह:
यह गड़बड़ी तब होती है, जब TargetEndpoint या TargetServer में बताई गई
Truststore फ़ाइल में कोई सर्टिफ़िकेट मौजूद न हो.
समाधान
अगर आपको बैकएंड सर्वर के सर्टिफ़िकेट की पुष्टि करनी है और आपको Truststore या TargetEndpoint याTargetServer का इस्तेमाल करना है, तो
यह पक्का करें कि Truststore में बैकएंड सर्वर के मान्य सर्टिफ़िकेट शामिल हों.