इंडेक्स
BadRequest(मैसेज)BadRequest.FieldViolation(मैसेज)Code(enum)ErrorInfo(मैसेज)Help(मैसेज)Help.Link(मैसेज)LocalizedMessage(मैसेज)PreconditionFailure(मैसेज)PreconditionFailure.Violation(मैसेज)QuotaFailure(मैसेज)QuotaFailure.Violation(मैसेज)RequestInfo(मैसेज)ResourceInfo(मैसेज)RetryInfo(मैसेज)Status(मैसेज)
BadRequest
क्लाइंट के अनुरोध में हुए उल्लंघनों के बारे में बताता है. इस तरह की गड़बड़ी में, अनुरोध के सिंटैक्टिक पहलुओं पर फ़ोकस किया जाता है.
| फ़ील्ड | |
|---|---|
field_violations[] |
इसमें क्लाइंट के अनुरोध में हुए सभी उल्लंघनों के बारे में बताया जाता है. |
FieldViolation
इस मैसेज टाइप का इस्तेमाल, किसी एक गलत अनुरोध वाले फ़ील्ड के बारे में बताने के लिए किया जाता है.
| फ़ील्ड | |
|---|---|
field |
अनुरोध के मुख्य हिस्से में मौजूद फ़ील्ड तक ले जाने वाला पाथ. वैल्यू, डॉट से अलग किए गए आइडेंटिफ़ायर का क्रम होगा. इससे प्रोटोकॉल बफ़र फ़ील्ड की पहचान की जा सकेगी. इसके लिए, इन्हें आज़माएं: इस उदाहरण में, प्रोटो
JSON में, एक जैसी वैल्यू को इस तरह दिखाया जाता है:
|
description |
अनुरोध एलिमेंट खराब क्यों है, इसकी जानकारी. |
reason |
फ़ील्ड-लेवल की गड़बड़ी की वजह. यह एक ऐसी वैल्यू है जो फ़ील्ड-लेवल की गड़बड़ी की मुख्य वजह की पहचान करती है. इससे google.rpc.ErrorInfo.domain के स्कोप में, FieldViolation के टाइप की खास तौर पर पहचान होनी चाहिए. यह ज़्यादा से ज़्यादा 63 वर्णों का होना चाहिए. साथ ही, यह |
localized_message |
यह फ़ील्ड-लेवल की गड़बड़ियों के लिए, स्थानीय भाषा में गड़बड़ी का मैसेज दिखाता है. इसे एपीआई का इस्तेमाल करने वाले व्यक्ति को दिखाया जा सकता है. |
कोड
gRPC API के लिए कैननिकल गड़बड़ी कोड.
कभी-कभी एक से ज़्यादा गड़बड़ी कोड लागू हो सकते हैं. सेवाओं को सबसे सटीक गड़बड़ी कोड दिखाना चाहिए. उदाहरण के लिए, अगर दोनों कोड लागू होते हैं, तो FAILED_PRECONDITION के बजाय OUT_OF_RANGE को प्राथमिकता दें. इसी तरह, FAILED_PRECONDITION के बजाय NOT_FOUND या ALREADY_EXISTS को प्राथमिकता दें.
| Enums | |
|---|---|
OK |
यह कोई गड़बड़ी नहीं है. यह अनुरोध पूरा होने पर दिखता है. एचटीटीपी मैपिंग: 200 OK |
CANCELLED |
कार्रवाई रद्द कर दी गई थी. आम तौर पर, ऐसा कॉल करने वाला व्यक्ति करता है. एचटीटीपी मैपिंग: 499 अनुरोध की प्रोसेस होने के दौरान क्लाइंट ने कनेक्शन बंद कर दिया |
UNKNOWN |
ऐसी गड़बड़ी जिसकी कोई जानकारी नहीं है. उदाहरण के लिए, यह गड़बड़ी तब दिख सकती है, जब किसी दूसरे पते की जगह से मिली HTTP मैपिंग: 500 सर्वर में गड़बड़ी |
INVALID_ARGUMENT |
क्लाइंट ने एक अमान्य तर्क बताया. ध्यान दें कि यह एचटीटीपी मैपिंग: 400 खराब अनुरोध |
DEADLINE_EXCEEDED |
कार्रवाई पूरी होने से पहले ही समयसीमा खत्म हो गई. सिस्टम की स्थिति में बदलाव करने वाली कार्रवाइयों के लिए, यह गड़बड़ी तब भी दिख सकती है, जब कार्रवाई पूरी हो गई हो. उदाहरण के लिए, किसी सर्वर से मिला जवाब, समयसीमा खत्म होने के बाद मिला हो. एचटीटीपी मैपिंग: 504 गेटवे टाइम आउट |
NOT_FOUND |
अनुरोध की गई कुछ इकाई (जैसे, फ़ाइल या डायरेक्ट्री) नहीं मिली. सर्वर डेवलपर के लिए सूचना: अगर उपयोगकर्ताओं के पूरे ग्रुप के लिए किसी अनुरोध को अस्वीकार कर दिया जाता है, तो एचटीटीपी मैपिंग: 404 नहीं मिला |
ALREADY_EXISTS |
क्लाइंट ने जिस इकाई को बनाने की कोशिश की है (जैसे, फ़ाइल या डायरेक्ट्री), वह पहले से मौजूद है. एचटीटीपी मैपिंग: 409 गड़बड़ी |
PERMISSION_DENIED |
कॉलर के पास, तय की गई कार्रवाई को पूरा करने की अनुमति नहीं है. एचटीटीपी मैपिंग: 403 अनुमति नहीं है |
UNAUTHENTICATED |
अनुरोध में, कार्रवाई के लिए पुष्टि करने वाले मान्य क्रेडेंशियल मौजूद नहीं हैं. एचटीटीपी मैपिंग: 401 Unauthorized |
RESOURCE_EXHAUSTED |
कुछ संसाधन खत्म हो गए हैं. ऐसा हो सकता है कि हर उपयोगकर्ता के लिए तय किया गया कोटा खत्म हो गया हो या पूरे फ़ाइल सिस्टम में जगह न बची हो. एचटीटीपी मैपिंग: 429 कई बार अनुरोध किया गया |
FAILED_PRECONDITION |
इस कार्रवाई को अस्वीकार कर दिया गया है, क्योंकि सिस्टम उस स्थिति में नहीं है जिसमें कार्रवाई को पूरा किया जा सकता है. उदाहरण के लिए, मिटाई जाने वाली डायरेक्ट्री खाली नहीं है, rmdir ऑपरेशन को किसी डायरेक्ट्री पर लागू नहीं किया गया है वगैरह. सेवा लागू करने वाले लोग, इन दिशा-निर्देशों का इस्तेमाल करके यह तय कर सकते हैं कि एचटीटीपी मैपिंग: 400 खराब अनुरोध |
ABORTED |
कार्रवाई को रोक दिया गया है. आम तौर पर, ऐसा एक साथ कई अनुरोध मिलने की वजह से होता है. जैसे, सीक्वेंसर की जांच पूरी न हो पाना या लेन-देन रद्द होना.
एचटीटीपी मैपिंग: 409 गड़बड़ी |
OUT_OF_RANGE |
मान्य सीमा से बाहर जाकर कार्रवाई करने की कोशिश की गई. उदाहरण के लिए, फ़ाइल के आखिर से पहले या बाद में डेटा खोजना या पढ़ना.
एचटीटीपी मैपिंग: 400 खराब अनुरोध |
UNIMPLEMENTED |
यह ऑपरेशन लागू नहीं किया गया है या इस सेवा में काम नहीं करता/चालू नहीं है. एचटीटीपी मैपिंग: 501 अनुरोध पूरा करने के लिए सुविधाएं मौजूद नहीं हैं |
INTERNAL |
सिस्टम की गड़बड़ियां. इसका मतलब है कि सिस्टम के कुछ इनवेरिएंट टूट गए हैं. यह गड़बड़ी कोड, गंभीर गड़बड़ियों के लिए रिज़र्व किया गया है. HTTP मैपिंग: 500 सर्वर में गड़बड़ी |
UNAVAILABLE |
फ़िलहाल, सेवा उपलब्ध नहीं है. यह एक अस्थायी समस्या है. कुछ समय बाद फिर से कोशिश करने पर, यह ठीक हो सकती है. ध्यान दें कि नॉन-आइडमपोटेंट ऑपरेशन को फिर से आज़माना हमेशा सुरक्षित नहीं होता.
HTTP मैपिंग: 503 सेवा उपलब्ध नहीं है |
DATA_LOSS |
डेटा को वापस नहीं पाया जा सकता या डेटा खराब हो गया. HTTP मैपिंग: 500 सर्वर में गड़बड़ी |
ErrorInfo
इसमें गड़बड़ी की वजह के बारे में स्ट्रक्चर्ड जानकारी दी गई है.
जब "pubsub.googleapis.com" एपीआई चालू नहीं होता है, तब उससे संपर्क करने पर गड़बड़ी का उदाहरण:
{ "reason": "API_DISABLED"
"domain": "googleapis.com"
"metadata": {
"resource": "projects/123",
"service": "pubsub.googleapis.com"
}
}
इस जवाब से पता चलता है कि pubsub.googleapis.com API चालू नहीं है.
किसी ऐसे इलाके में Spanner इंस्टेंस बनाने की कोशिश करने पर मिलने वाली गड़बड़ी का उदाहरण जहां यह सुविधा उपलब्ध नहीं है:
{ "reason": "STOCKOUT"
"domain": "spanner.googleapis.com",
"metadata": {
"availableRegions": "us-central1,us-east2"
}
}
| फ़ील्ड | |
|---|---|
reason |
गड़बड़ी की वजह. यह एक ऐसी वैल्यू होती है जो बदलती नहीं है. इससे गड़बड़ी की मुख्य वजह का पता चलता है. गड़बड़ी की वजहें, गड़बड़ियों के किसी खास डोमेन में यूनीक होती हैं. यह ज़्यादा से ज़्यादा 63 वर्णों का होना चाहिए. साथ ही, यह |
domain |
लॉजिकल ग्रुपिंग, जिससे "reason" एट्रिब्यूट की वैल्यू जुड़ी है. गड़बड़ी का डोमेन आम तौर पर, उस टूल या प्रॉडक्ट का रजिस्टर किया गया सेवा नाम होता है जो गड़बड़ी जनरेट करता है. उदाहरण: "pubsub.googleapis.com". अगर गड़बड़ी किसी सामान्य इन्फ़्रास्ट्रक्चर की वजह से हुई है, तो गड़बड़ी का डोमेन एक ऐसी वैल्यू होनी चाहिए जो दुनिया भर में यूनीक हो और इन्फ़्रास्ट्रक्चर की पहचान करती हो. Google API के इन्फ़्रास्ट्रक्चर के लिए, गड़बड़ी वाला डोमेन "googleapis.com" है. |
metadata |
इस गड़बड़ी के बारे में स्ट्रक्चर्ड फ़ॉर्मैट में ज़्यादा जानकारी. कुंजियां, |
सहायता
इससे दस्तावेज़ों के लिंक मिलते हैं या बैंड से बाहर की कार्रवाई की जा सकती है.
उदाहरण के लिए, अगर कोटा की जांच में गड़बड़ी हुई है और गड़बड़ी से पता चलता है कि कॉल करने वाले प्रोजेक्ट ने ऐक्सेस की गई सेवा चालू नहीं की है, तो इसमें एक ऐसा यूआरएल शामिल हो सकता है जो डेवलपर कंसोल में सीधे तौर पर सही जगह पर ले जाता है, ताकि बिट को फ़्लिप किया जा सके.
| फ़ील्ड | |
|---|---|
links[] |
ऐसे यूआरएल जो मौजूदा गड़बड़ी को ठीक करने के बारे में ज़्यादा जानकारी देते हैं. |
लिंक
यूआरएल लिंक के बारे में बताता है.
| फ़ील्ड | |
|---|---|
description |
इससे पता चलता है कि लिंक में क्या ऑफ़र किया गया है. |
url |
लिंक का यूआरएल. |
LocalizedMessage
यह स्थानीय भाषा में गड़बड़ी का ऐसा मैसेज दिखाता है जिसे उपयोगकर्ता को दिखाया जा सकता है. इसे आरपीसी की गड़बड़ी से जोड़ा जा सकता है.
| फ़ील्ड | |
|---|---|
locale |
इस कुकी में, https://www.rfc-editor.org/rfc/bcp/bcp47.txt पर तय किए गए स्पेसिफ़िकेशन के मुताबिक इस्तेमाल की गई स्थान-भाषा की जानकारी होती है. उदाहरण के लिए: "en-US", "fr-CH", "es-MX" |
message |
ऊपर दी गई स्थानीय भाषा में गड़बड़ी का मैसेज. |
PreconditionFailure
इससे पता चलता है कि कौनसी ज़रूरी शर्तें पूरी नहीं हुई हैं.
उदाहरण के लिए, अगर किसी आरपीसी को सेवा की शर्तों को स्वीकार करने की ज़रूरत है और वह ऐसा नहीं कर पाती है, तो PreconditionFailure मैसेज में सेवा की शर्तों के उल्लंघन की जानकारी दी जा सकती है.
| फ़ील्ड | |
|---|---|
violations[] |
इसमें, शर्तों के उल्लंघन से जुड़ी सभी जानकारी होती है. |
मैच की नीतियों का उल्लंघन
इस मैसेज टाइप का इस्तेमाल, किसी एक पूर्व शर्त के पूरा न होने की जानकारी देने के लिए किया जाता है.
| फ़ील्ड | |
|---|---|
type |
PreconditionFailure का टाइप. हमारा सुझाव है कि सेवा से जुड़े एनम टाइप का इस्तेमाल करके, शर्तों के उल्लंघन से जुड़े विषयों के बारे में बताएं. उदाहरण के लिए, "सेवा की शर्तों का उल्लंघन" के लिए "TOS". |
subject |
टाइप के हिसाब से, वह विषय जो पूरा नहीं किया जा सका. उदाहरण के लिए, "google.com/cloud" से पता चलेगा कि "TOS" टाइप के लिए, सेवा की किन शर्तों का रेफ़रंस दिया जा रहा है. |
description |
पहले से तय की गई शर्त पूरी न होने के बारे में जानकारी. डेवलपर इस जानकारी का इस्तेमाल करके, गड़बड़ी को ठीक करने का तरीका जान सकते हैं. उदाहरण के लिए: "सेवा की शर्तें स्वीकार नहीं की गई हैं". |
QuotaFailure
यह बताता है कि कोटा की जांच क्यों नहीं की जा सकी.
उदाहरण के लिए, अगर किसी कॉलिंग प्रोजेक्ट के लिए रोज़ की सीमा पार हो गई है, तो सेवा QuotaFailure की जानकारी के साथ जवाब दे सकती है. इसमें प्रोजेक्ट आईडी और कोटा की उस सीमा का ब्यौरा शामिल होता है जिसे पार किया गया है. अगर कॉल करने वाले प्रोजेक्ट ने डेवलपर कंसोल में सेवा चालू नहीं की है, तो सेवा प्रोजेक्ट आईडी के साथ जवाब दे सकती है और service_disabled को सही पर सेट कर सकती है.
कोटा पूरा न होने की समस्या को हल करने के बारे में ज़्यादा जानकारी के लिए, RetryInfo और Help टाइप भी देखें.
| फ़ील्ड | |
|---|---|
violations[] |
इसमें कोटा के सभी उल्लंघनों के बारे में बताया जाता है. |
मैच की नीतियों का उल्लंघन
इस मैसेज टाइप का इस्तेमाल, कोटे के उल्लंघन के बारे में बताने के लिए किया जाता है. उदाहरण के लिए, रोज़ का कोटा या पसंद के मुताबिक तय किया गया कोटा पूरा हो गया है.
| फ़ील्ड | |
|---|---|
subject |
वह विषय जिस पर कोटे की जांच नहीं हो सकी. उदाहरण के लिए, "clientip: |
description |
कोटा की जांच पूरी न होने की वजह के बारे में जानकारी. क्लाइंट इस ब्यौरे का इस्तेमाल करके, सेवा के सार्वजनिक दस्तावेज़ में कोटे के कॉन्फ़िगरेशन के बारे में ज़्यादा जान सकते हैं. इसके अलावा, डेवलपर कंसोल के ज़रिए कोटे की ज़रूरी सीमा को अडजस्ट किया जा सकता है. उदाहरण के लिए: "सेवा बंद है" या "पढ़ने के लिए रोज़ाना तय की गई सीमा पार हो गई है". |
api_service |
एपीआई सेवा, जिससे उदाहरण के लिए, अगर कॉल किया गया एपीआई Kubernetes Engine API (container.googleapis.com) है और Kubernetes Engine API में ही कोटे का उल्लंघन होता है, तो इस फ़ील्ड की वैल्यू "container.googleapis.com" होगी. दूसरी ओर, अगर Compute Engine API (compute.googleapis.com) में Kubernetes Engine API के ज़रिए VM बनाते समय कोटे का उल्लंघन होता है, तो इस फ़ील्ड की वैल्यू "compute.googleapis.com" होगी. |
quota_metric |
कोटा उल्लंघन की मेट्रिक. कोटा मेट्रिक, इस्तेमाल को मेज़र करने वाला एक काउंटर होता है. जैसे, एपीआई अनुरोध या सीपीयू. जब किसी सेवा में कोई गतिविधि होती है, जैसे कि वर्चुअल मशीन का असाइनमेंट, तो एक या उससे ज़्यादा कोटा मेट्रिक पर असर पड़ सकता है. उदाहरण के लिए, "compute.googleapis.com/cpus_per_vm_family", "storage.googleapis.com/internet_egress_bandwidth". |
quota_id |
उल्लंघन किए गए कोटे का आईडी. इसे "सीमा का नाम" भी कहा जाता है. यह एपीआई सेवा के संदर्भ में, किसी कोटे का यूनीक आइडेंटिफ़ायर होता है. उदाहरण के लिए, "CPUS-PER-VM-FAMILY-per-project-region". |
quota_dimensions |
कोटे के उल्लंघन से जुड़े डाइमेंशन. हर नॉन-ग्लोबल कोटा, डाइमेंशन के सेट पर लागू होता है. कोटा मेट्रिक से यह तय होता है कि क्या गिना जाना चाहिए. वहीं, डाइमेंशन से यह तय होता है कि काउंटर को किन पहलुओं के लिए बढ़ाया जाना चाहिए. उदाहरण के लिए, "हर वीएम फ़ैमिली के लिए, हर इलाके में सीपीयू" कोटा, "compute.googleapis.com/cpus_per_vm_family" मेट्रिक पर सीमा लागू करता है. यह सीमा, "region" और "vm_family" डाइमेंशन पर लागू होती है. अगर उल्लंघन "us-central1" क्षेत्र में और वीएम फ़ैमिली "n1" के लिए हुआ है, तो quota_dimensions ये होंगे, { "region": "us-central1", "vm_family": "n1", } जब किसी कोटे को दुनिया भर में लागू किया जाता है, तो quota_dimensions हमेशा खाली रहेगा. |
quota_value |
उदाहरण के लिए, अगर सीपीयू की संख्या पर लागू किए गए कोटे की वैल्यू "10" है, तो इस फ़ील्ड की वैल्यू में यह संख्या दिखेगी. |
future_quota_value |
उल्लंघन के समय लागू की जा रही कोटे की नई वैल्यू. इस सुविधा के लॉन्च होने के बाद, quota_value की जगह इस वैल्यू को लागू किया जाएगा. अगर उल्लंघन के समय कोई रोलआउट जारी नहीं है, तो यह फ़ील्ड सेट नहीं होता है. उदाहरण के लिए, अगर उल्लंघन के समय सीपीयू के कोटे को 10 से 20 में बदलने के लिए रोलआउट किया जा रहा है, तो इस फ़ील्ड की वैल्यू 20 होगी. |
RequestInfo
इस कुकी में अनुरोध के बारे में मेटाडेटा होता है. क्लाइंट, गड़बड़ी की शिकायत करते समय या अन्य तरह का सुझाव/राय देते समय इसे अटैच कर सकते हैं.
| फ़ील्ड | |
|---|---|
request_id |
यह एक ओपेक स्ट्रिंग है. इसका मतलब यह है कि इसे सिर्फ़ जनरेट करने वाली सेवा ही समझ सकती है. उदाहरण के लिए, इसका इस्तेमाल सेवा के लॉग में अनुरोधों की पहचान करने के लिए किया जा सकता है. |
serving_data |
इस अनुरोध को पूरा करने के लिए इस्तेमाल किया गया कोई भी डेटा. उदाहरण के लिए, एन्क्रिप्ट (सुरक्षित) किया गया स्टैक ट्रेस, जिसे डीबग करने के लिए सेवा देने वाली कंपनी को वापस भेजा जा सकता है. |
ResourceInfo
ऐक्सेस किए जा रहे संसाधन के बारे में बताता है.
| फ़ील्ड | |
|---|---|
resource_type |
ऐक्सेस किए जा रहे संसाधन के टाइप का नाम. उदाहरण के लिए, "sql table", "cloud storage bucket", "file", "Google calendar". इसके अलावा, संसाधन का टाइप यूआरएल भी इस्तेमाल किया जा सकता है. उदाहरण के लिए, "type.googleapis.com/google.pubsub.v1.Topic". |
resource_name |
ऐक्सेस किए जा रहे संसाधन का नाम. उदाहरण के लिए, शेयर किए गए कैलेंडर का नाम: "example.com_4fghdhgsrgh@group.calendar.google.com", अगर मौजूदा गड़बड़ी |
owner |
संसाधन का मालिक (ज़रूरी नहीं). उदाहरण के लिए, "user: |
description |
इस कुकी से पता चलता है कि इस संसाधन को ऐक्सेस करते समय कौनसी गड़बड़ी हुई. उदाहरण के लिए, किसी क्लाउड प्रोजेक्ट को अपडेट करने के लिए, डेवलपर कंसोल प्रोजेक्ट पर |
RetryInfo
इससे पता चलता है कि क्लाइंट, अनुरोध पूरा न होने पर कब फिर से कोशिश कर सकते हैं. क्लाइंट यहां दिए गए सुझाव को अनदेखा कर सकते हैं या गड़बड़ी के जवाबों में यह जानकारी मौजूद न होने पर फिर से कोशिश कर सकते हैं.
हमेशा यह सुझाव दिया जाता है कि क्लाइंट को फिर से कोशिश करते समय, एक्सपोनेंशियल बैकऑफ़ का इस्तेमाल करना चाहिए.
क्लाइंट को गड़बड़ी का जवाब मिलने के बाद, retry_delay समय तक इंतज़ार करना चाहिए. इसके बाद, वे फिर से कोशिश कर सकते हैं. अगर अनुरोधों को फिर से भेजने पर भी गड़बड़ी होती है, तो क्लाइंट को एक्स्पोनेंशियल बैकऑफ़ स्कीम का इस्तेमाल करना चाहिए. इससे, retry_delay के आधार पर, अनुरोधों को फिर से भेजने के बीच के समय को धीरे-धीरे बढ़ाया जा सकता है. ऐसा तब तक किया जाना चाहिए, जब तक अनुरोधों को फिर से भेजने की तय की गई ज़्यादा से ज़्यादा संख्या पूरी न हो जाए या अनुरोधों को फिर से भेजने के बीच के समय की तय की गई ज़्यादा से ज़्यादा सीमा पूरी न हो जाए.
| फ़ील्ड | |
|---|---|
retry_delay |
क्लाइंट को एक ही अनुरोध को फिर से करने से पहले, कम से कम इतने समय तक इंतज़ार करना चाहिए. |
स्थिति
Status टाइप, लॉजिकल गड़बड़ी का एक ऐसा मॉडल तय करता है जो अलग-अलग प्रोग्रामिंग एनवायरमेंट के लिए सही होता है. इनमें REST API और RPC API शामिल हैं. इसका इस्तेमाल gRPC करता है. हर Status मैसेज में तीन तरह का डेटा होता है: गड़बड़ी का कोड, गड़बड़ी का मैसेज, और गड़बड़ी की जानकारी.
इस गड़बड़ी के मॉडल और इसके साथ काम करने के तरीके के बारे में ज़्यादा जानने के लिए, एपीआई डिज़ाइन गाइड पढ़ें.
| फ़ील्ड | |
|---|---|
code |
स्टेटस कोड, जो |
message |
डेवलपर को दिखने वाला गड़बड़ी का मैसेज, जो अंग्रेज़ी में होना चाहिए. उपयोगकर्ता को दिखने वाली गड़बड़ी के किसी भी मैसेज को स्थानीय भाषा में होना चाहिए. साथ ही, उसे |
details[] |
मैसेज की सूची, जिसमें गड़बड़ी की जानकारी होती है. एपीआई के इस्तेमाल के लिए, मैसेज टाइप का एक सामान्य सेट होता है. |