Package google.rpc

সূচী

খারাপ অনুরোধ

ক্লায়েন্টের অনুরোধের ত্রুটি বর্ণনা করে। এই ধরনের ত্রুটি অনুরোধের বাক্যগঠনগত দিকগুলোর উপর আলোকপাত করে।

ক্ষেত্র
field_violations[]

FieldViolation

ক্লায়েন্টের অনুরোধে থাকা সমস্ত লঙ্ঘন বর্ণনা করে।

ক্ষেত্র লঙ্ঘন

একটি একক ত্রুটিপূর্ণ অনুরোধ ফিল্ড বর্ণনা করতে ব্যবহৃত এক ধরনের বার্তা।

ক্ষেত্র
field

string

একটি পাথ যা রিকোয়েস্ট বডির কোনো ফিল্ডে নিয়ে যায়। এর ভ্যালুটি হবে ডট দ্বারা পৃথক করা আইডেন্টিফায়ারের একটি ক্রম, যা একটি প্রোটোকল বাফার ফিল্ডকে শনাক্ত করে।

নিম্নলিখিত বিষয়গুলো বিবেচনা করুন:

message CreateContactRequest {
  message EmailAddress {
    enum Type {
      TYPE_UNSPECIFIED = 0;
      HOME = 1;
      WORK = 2;
    }

    optional string email = 1;
    repeated EmailType type = 2;
  }

  string full_name = 1;
  repeated EmailAddress email_addresses = 2;
}

এই উদাহরণে, 'proto' field নিম্নলিখিত মানগুলির মধ্যে যেকোনো একটি নিতে পারে:

  • full_name মানের লঙ্ঘনের জন্য full_name
  • প্রথম email_addresses বার্তার email ফিল্ডে লঙ্ঘনের জন্য email_addresses[0].email
  • তৃতীয় email_addresses মেসেজে দ্বিতীয় type ভ্যালুতে লঙ্ঘনের জন্য email_addresses[2].type[1]

JSON-এ একই মানগুলি নিম্নরূপে উপস্থাপন করা হয়:

  • fullName মানের লঙ্ঘনের জন্য fullName
  • প্রথম emailAddresses বার্তার email ফিল্ডে লঙ্ঘনের জন্য emailAddresses[0].email
  • তৃতীয় emailAddresses মেসেজের দ্বিতীয় type ভ্যালুতে লঙ্ঘনের জন্য emailAddresses[2].type[1]
description

string

রিকোয়েস্ট এলিমেন্টটি কেন খারাপ, তার একটি বিবরণ।

reason

string

ফিল্ড-লেভেল ত্রুটির কারণ। এটি একটি ধ্রুবক মান যা ফিল্ড-লেভেল ত্রুটির প্রত্যক্ষ কারণ শনাক্ত করে। এটি google.rpc.ErrorInfo.domain-এর আওতার মধ্যে FieldViolation-এর ধরনকে অনন্যভাবে শনাক্ত করবে। এটি সর্বাধিক ৬৩ অক্ষরের হতে হবে এবং [AZ][A-Z0-9_]+[A-Z0-9] রেগুলার এক্সপ্রেশনের সাথে মিলতে হবে, যা UPPER_SNAKE_CASE-কে বোঝায়।

localized_message

LocalizedMessage

ফিল্ড-স্তরের ত্রুটির জন্য একটি স্থানীয় ত্রুটি বার্তা প্রদান করে, যা এপিআই ব্যবহারকারীকে নিরাপদে ফেরত পাঠানো যায়।

কোড

gRPC API-এর জন্য প্রমিত ত্রুটি কোডসমূহ।

কখনও কখনও একাধিক এরর কোড প্রযোজ্য হতে পারে। সার্ভিসগুলোর উচিত সবচেয়ে সুনির্দিষ্ট এরর কোডটি রিটার্ন করা। উদাহরণস্বরূপ, যদি উভয় কোডই প্রযোজ্য হয়, তবে FAILED_PRECONDITION পরিবর্তে OUT_OF_RANGE অগ্রাধিকার দিন। একইভাবে, FAILED_PRECONDITION পরিবর্তে NOT_FOUND বা ALREADY_EXISTS অগ্রাধিকার দিন।

এনাম
OK

কোনো ত্রুটি নয়; সফল হলে ফেরত দেওয়া হয়।

HTTP ম্যাপিং: 200 OK

CANCELLED

অপারেশনটি বাতিল করা হয়েছিল, সাধারণত ফোনকারীর দ্বারাই।

HTTP ম্যাপিং: 499 ক্লায়েন্ট অনুরোধ বন্ধ করেছে

UNKNOWN

অজানা ত্রুটি। উদাহরণস্বরূপ, অন্য কোনো অ্যাড্রেস স্পেস থেকে প্রাপ্ত একটি Status ভ্যালু যদি এমন কোনো এরর স্পেসের অন্তর্গত হয় যা এই অ্যাড্রেস স্পেসে পরিচিত নয়, তাহলে এই ত্রুটিটি ফেরত আসতে পারে। এছাড়াও, যেসব এপিআই (API) পর্যাপ্ত ত্রুটির তথ্য ফেরত দেয় না, তাদের দ্বারা সৃষ্ট ত্রুটিগুলোও এই ত্রুটিতে রূপান্তরিত হতে পারে।

HTTP ম্যাপিং: 500 অভ্যন্তরীণ সার্ভার ত্রুটি

INVALID_ARGUMENT

ক্লায়েন্ট একটি অবৈধ আর্গুমেন্ট নির্দিষ্ট করেছে। উল্লেখ্য যে, এটি FAILED_PRECONDITION থেকে ভিন্ন। INVALID_ARGUMENT এমন আর্গুমেন্টগুলোকে নির্দেশ করে যা সিস্টেমের অবস্থা নির্বিশেষে সমস্যাযুক্ত (যেমন, একটি ত্রুটিপূর্ণ ফাইলের নাম)।

HTTP ম্যাপিং: 400 ত্রুটিপূর্ণ অনুরোধ

DEADLINE_EXCEEDED

অপারেশনটি সম্পন্ন হওয়ার আগেই সময়সীমা শেষ হয়ে গেছে। যেসব অপারেশন সিস্টেমের অবস্থা পরিবর্তন করে, সেগুলো সফলভাবে সম্পন্ন হলেও এই ত্রুটিটি প্রদর্শিত হতে পারে। উদাহরণস্বরূপ, সার্ভার থেকে একটি সফল প্রতিক্রিয়া আসতে এতটা দেরি হতে পারে যে সময়সীমা শেষ হয়ে গেছে।

HTTP ম্যাপিং: ৫০৪ গেটওয়ে টাইমআউট

NOT_FOUND

অনুরোধকৃত কোনো সত্তা (যেমন, ফাইল বা ডিরেক্টরি) খুঁজে পাওয়া যায়নি।

সার্ভার ডেভেলপারদের জন্য দ্রষ্টব্য: যদি ব্যবহারকারীদের একটি সম্পূর্ণ শ্রেণীর জন্য কোনো অনুরোধ প্রত্যাখ্যান করা হয়, যেমন পর্যায়ক্রমিক ফিচার রোলআউট বা অ-ডকুমেন্টেড অনুমতি তালিকার ক্ষেত্রে, NOT_FOUND ব্যবহার করা যেতে পারে। যদি ব্যবহারকারীদের একটি শ্রেণীর মধ্যে কিছু ব্যবহারকারীর জন্য অনুরোধ প্রত্যাখ্যান করা হয়, যেমন ব্যবহারকারী-ভিত্তিক অ্যাক্সেস কন্ট্রোলের ক্ষেত্রে, PERMISSION_DENIED অবশ্যই ব্যবহার করতে হবে।

HTTP ম্যাপিং: 404 পাওয়া যায়নি

ALREADY_EXISTS

ক্লায়েন্ট যে সত্তাটি তৈরি করার চেষ্টা করেছে (যেমন, ফাইল বা ডিরেক্টরি), সেটি ইতিমধ্যেই বিদ্যমান।

HTTP ম্যাপিং: ৪০৯ দ্বন্দ্ব

PERMISSION_DENIED

আহ্বানকারীর নির্দিষ্ট অপারেশনটি সম্পাদন করার অনুমতি নেই। কোনো রিসোর্স নিঃশেষ হয়ে যাওয়ার কারণে প্রত্যাখ্যানের ক্ষেত্রে PERMISSION_DENIED ব্যবহার করা যাবে না (এই ধরনের ত্রুটির জন্য পরিবর্তে RESOURCE_EXHAUSTED ব্যবহার করুন)। যদি আহ্বানকারীকে শনাক্ত করা না যায়, তাহলে PERMISSION_DENIED ব্যবহার করা যাবে না (এই ধরনের ত্রুটির জন্য পরিবর্তে UNAUTHENTICATED ব্যবহার করুন)। এই এরর কোডটি এই ইঙ্গিত দেয় না যে অনুরোধটি বৈধ অথবা অনুরোধকৃত সত্তাটি বিদ্যমান বা অন্যান্য পূর্বশর্ত পূরণ করে।

HTTP ম্যাপিং: ৪০৩ নিষিদ্ধ

UNAUTHENTICATED

অপারেশনটির জন্য অনুরোধটিতে বৈধ প্রমাণীকরণ তথ্য নেই।

HTTP ম্যাপিং: ৪০১ অননুমোদিত

RESOURCE_EXHAUSTED

কোনো একটি রিসোর্স শেষ হয়ে গেছে, হতে পারে তা ব্যবহারকারী-ভিত্তিক কোটা, অথবা পুরো ফাইল সিস্টেমেই জায়গা নেই।

HTTP ম্যাপিং: 429 অতিরিক্ত অনুরোধ

FAILED_PRECONDITION

অপারেশনটি প্রত্যাখ্যান করা হয়েছে কারণ অপারেশনটি সম্পাদনের জন্য সিস্টেমটি প্রয়োজনীয় অবস্থায় নেই। উদাহরণস্বরূপ, যে ডিরেক্টরিটি মুছে ফেলা হবে সেটি খালি নয়, কোনো নন-ডিরেক্টরিতে rmdir অপারেশন প্রয়োগ করা হয়েছে, ইত্যাদি।

সার্ভিস ইমপ্লিমেন্টররা FAILED_PRECONDITION , ABORTED এবং UNAVAILABLE মধ্যে কোনটি ব্যবহার করবেন তা সিদ্ধান্ত নিতে নিম্নলিখিত নির্দেশিকাগুলো ব্যবহার করতে পারেন: (ক) যদি ক্লায়েন্ট শুধুমাত্র ব্যর্থ হওয়া কলটি পুনরায় চেষ্টা করতে পারে, তবে UNAVAILABLE ব্যবহার করুন। (খ) যদি ক্লায়েন্টকে উচ্চতর স্তরে পুনরায় চেষ্টা করতে হয়, তবে ABORTED ব্যবহার করুন। উদাহরণস্বরূপ, যখন ক্লায়েন্ট-নির্দিষ্ট কোনো টেস্ট-অ্যান্ড-সেট ব্যর্থ হয়, যা নির্দেশ করে যে ক্লায়েন্টকে একটি রিড-মডিফাই-রাইট সিকোয়েন্স পুনরায় শুরু করতে হবে। (গ) যদি সিস্টেমের অবস্থা স্পষ্টভাবে ঠিক না করা পর্যন্ত ক্লায়েন্ট পুনরায় চেষ্টা না করে, তবে FAILED_PRECONDITION ব্যবহার করুন। উদাহরণস্বরূপ, যদি ডিরেক্টরিটি খালি না থাকার কারণে একটি "rmdir" ব্যর্থ হয়, তবে FAILED_PRECONDITION রিটার্ন করা উচিত, কারণ ডিরেক্টরি থেকে ফাইলগুলো মুছে না ফেলা পর্যন্ত ক্লায়েন্টের পুনরায় চেষ্টা করা উচিত নয়।

HTTP ম্যাপিং: 400 ত্রুটিপূর্ণ অনুরোধ

ABORTED

অপারেশনটি বাতিল করা হয়েছিল, সাধারণত কনকারেন্সি সংক্রান্ত কোনো সমস্যার কারণে, যেমন সিকোয়েন্সার চেক ব্যর্থতা বা ট্রানজ্যাকশন বাতিল হওয়া।

FAILED_PRECONDITION , ABORTED এবং UNAVAILABLE মধ্যে সিদ্ধান্ত নেওয়ার জন্য উপরের নির্দেশিকাগুলো দেখুন।

HTTP ম্যাপিং: ৪০৯ দ্বন্দ্ব

OUT_OF_RANGE

অপারেশনটি বৈধ সীমার বাইরে করার চেষ্টা করা হয়েছিল। যেমন, ফাইলের শেষ প্রান্তের বাইরে খোঁজা বা পড়া।

INVALID_ARGUMENT বিপরীতে, এই ত্রুটিটি এমন একটি সমস্যা নির্দেশ করে যা সিস্টেমের অবস্থা পরিবর্তন করলে সমাধান হতে পারে। উদাহরণস্বরূপ, একটি 32-বিট ফাইল সিস্টেম INVALID_ARGUMENT তৈরি করবে যদি তাকে [0,2^32-1] সীমার বাইরে কোনো অফসেট থেকে পড়তে বলা হয়, কিন্তু বর্তমান ফাইলের আকারের চেয়ে বড় কোনো অফসেট থেকে পড়তে বলা হলে এটি OUT_OF_RANGE তৈরি করবে।

FAILED_PRECONDITION এবং OUT_OF_RANGE মধ্যে বেশ কিছুটা মিল রয়েছে। আমরা সুপারিশ করি যে, যখন প্রযোজ্য হয় তখন OUT_OF_RANGE (আরও সুনির্দিষ্ট ত্রুটি) ব্যবহার করা হোক, যাতে কোনো একটি স্পেসের মধ্যে দিয়ে পুনরাবৃত্তি করার সময় কলাররা তাদের কাজ শেষ হয়েছে কিনা তা শনাক্ত করার জন্য সহজেই একটি OUT_OF_RANGE ত্রুটি খুঁজে নিতে পারে।

HTTP ম্যাপিং: 400 ত্রুটিপূর্ণ অনুরোধ

UNIMPLEMENTED

এই পরিষেবাতে অপারেশনটি বাস্তবায়িত বা সমর্থিত/সক্রিয় নয়।

HTTP ম্যাপিং: ৫০১ বাস্তবায়িত হয়নি

INTERNAL

অভ্যন্তরীণ ত্রুটি। এর অর্থ হলো, অন্তর্নিহিত সিস্টেমের প্রত্যাশিত কিছু অপরিবর্তনীয়তা লঙ্ঘিত হয়েছে। এই ত্রুটি কোডটি গুরুতর ত্রুটির জন্য সংরক্ষিত।

HTTP ম্যাপিং: 500 অভ্যন্তরীণ সার্ভার ত্রুটি

UNAVAILABLE

পরিষেবাটি বর্তমানে অনুপলব্ধ। এটি সম্ভবত একটি সাময়িক অবস্থা, যা ব্যাকঅফ সহ পুনরায় চেষ্টা করে ঠিক করা যেতে পারে। মনে রাখবেন যে নন-আইডেমপোটেন্ট অপারেশনগুলো পুনরায় চেষ্টা করা সবসময় নিরাপদ নয়।

FAILED_PRECONDITION , ABORTED এবং UNAVAILABLE মধ্যে সিদ্ধান্ত নেওয়ার জন্য উপরের নির্দেশিকাগুলো দেখুন।

HTTP ম্যাপিং: ৫০৩ পরিষেবা অনুপলব্ধ

DATA_LOSS

অপূরণীয় ডেটা ক্ষতি বা বিকৃতি।

HTTP ম্যাপিং: 500 অভ্যন্তরীণ সার্ভার ত্রুটি

ত্রুটির তথ্য

ত্রুটির কারণটি সুসংগঠিত বিশদ বিবরণসহ বর্ণনা করে।

'pubsub.googleapis.com' এপিআই সক্রিয় না থাকা অবস্থায় সেটির সাথে যোগাযোগ করার সময় একটি ত্রুটির উদাহরণ:

{ "reason": "API_DISABLED"
  "domain": "googleapis.com"
  "metadata": {
    "resource": "projects/123",
    "service": "pubsub.googleapis.com"
  }
}

এই প্রতিক্রিয়া থেকে বোঝা যায় যে pubsub.googleapis.com API-টি সক্রিয় করা নেই।

যে অঞ্চলে স্টক নেই, সেখানে স্প্যানার ইনস্ট্যান্স তৈরি করার চেষ্টা করলে যে এররটি আসে তার একটি উদাহরণ:

{ "reason": "STOCKOUT"
  "domain": "spanner.googleapis.com",
  "metadata": {
    "availableRegions": "us-central1,us-east2"
  }
}
ক্ষেত্র
reason

string

ত্রুটির কারণ। এটি একটি ধ্রুবক মান যা ত্রুটির প্রত্যক্ষ কারণ শনাক্ত করে। ত্রুটির কারণগুলো একটি নির্দিষ্ট ত্রুটির ডোমেনের মধ্যে অনন্য হয়। এটি সর্বাধিক ৬৩ অক্ষরের হতে হবে এবং [AZ][A-Z0-9_]+[A-Z0-9] এর একটি রেগুলার এক্সপ্রেশনের সাথে মিলতে হবে, যা আপার স্নেক কেস (UPPER_SNAKE_CASE) বোঝায়।

domain

string

যে যৌক্তিক গোষ্ঠীর মধ্যে 'কারণটি' অন্তর্ভুক্ত। এরর ডোমেইন সাধারণত সেই টুল বা প্রোডাক্টের নিবন্ধিত পরিষেবার নাম হয়, যা এররটি তৈরি করে। উদাহরণ: "pubsub.googleapis.com"। যদি এররটি কোনো সাধারণ ইনফ্রাস্ট্রাকচার দ্বারা তৈরি হয়, তবে এরর ডোমেইনটি অবশ্যই একটি বিশ্বব্যাপী অনন্য মান হতে হবে যা ইনফ্রাস্ট্রাকচারটিকে শনাক্ত করে। গুগল এপিআই ইনফ্রাস্ট্রাকচারের জন্য, এরর ডোমেইন হলো "googleapis.com"।

metadata

map<string, string>

এই ত্রুটি সম্পর্কে অতিরিক্ত কাঠামোগত বিবরণ।

কী-গুলোকে অবশ্যই [az][a-zA-Z0-9-_]+ এর একটি রেগুলার এক্সপ্রেশনের সাথে মিলতে হবে, তবে আদর্শগতভাবে লোয়ার-ক্যামেল-কেস (lowerCamelCase) হওয়া উচিত। এছাড়াও, এগুলোর দৈর্ঘ্য অবশ্যই ৬৪ অক্ষরের মধ্যে সীমাবদ্ধ থাকতে হবে। কোনো সীমা অতিক্রম করার বর্তমান মান শনাক্ত করার সময়, এককটি ভ্যালুতে না থেকে কী-এর মধ্যে থাকতে হবে। উদাহরণস্বরূপ, যদি ক্লায়েন্ট একটি একক (ব্যাচ) অনুরোধে তৈরি করা যায় এমন ইনস্ট্যান্সের সংখ্যা অতিক্রম করে, তাহলে {"instanceLimit": "100/request"} এর পরিবর্তে {"instanceLimitPerRequest": "100"} হিসাবে রিটার্ন করতে হবে।

সাহায্য

ডকুমেন্টেশন দেখার জন্য অথবা কোনো আউট-অফ-ব্যান্ড অ্যাকশন সম্পাদন করার জন্য লিঙ্ক প্রদান করে।

উদাহরণস্বরূপ, যদি কোটা চেক এই ত্রুটি সহ ব্যর্থ হয় যে কলিং প্রজেক্টটি অ্যাক্সেস করা পরিষেবাটি সক্রিয় করেনি, তবে এতে একটি URL থাকতে পারে যা সরাসরি ডেভেলপার কনসোলের সঠিক জায়গায় নির্দেশ করে, যেখানে বিটটি ফ্লিপ করা যায়।

ক্ষেত্র

স্থানীয় বার্তা

একটি স্থানীয় ত্রুটি বার্তা প্রদান করে যা ব্যবহারকারীকে নিরাপদে ফেরত পাঠানো যায় এবং এটিকে একটি RPC ত্রুটির সাথে সংযুক্ত করা যেতে পারে।

ক্ষেত্র
locale

string

https://www.rfc-editor.org/rfc/bcp/bcp47.txt -এ সংজ্ঞায়িত স্পেসিফিকেশন অনুযায়ী লোকেল ব্যবহার করা হয়। উদাহরণস্বরূপ: "en-US", "fr-CH", "es-MX"।

message

string

উপরোক্ত লোকেলে স্থানীয়কৃত ত্রুটির বার্তা।

অনুরোধ তথ্য

এতে অনুরোধ সম্পর্কিত মেটাডেটা থাকে, যা ক্লায়েন্টরা কোনো বাগ রিপোর্ট করার সময় বা অন্য কোনো ধরনের মতামত জানানোর সময় সংযুক্ত করতে পারেন।

ক্ষেত্র
request_id

string

একটি অস্বচ্ছ স্ট্রিং যা শুধুমাত্র এটিকে তৈরি করা পরিষেবা দ্বারাই ব্যাখ্যা করা উচিত। উদাহরণস্বরূপ, এটি পরিষেবার লগগুলিতে অনুরোধগুলি সনাক্ত করতে ব্যবহার করা যেতে পারে।

serving_data

string

এই অনুরোধটি সম্পন্ন করতে ব্যবহৃত যেকোনো ডেটা। উদাহরণস্বরূপ, একটি এনক্রিপ্টেড স্ট্যাক ট্রেস যা ডিবাগিংয়ের জন্য পরিষেবা প্রদানকারীর কাছে ফেরত পাঠানো যেতে পারে।

অবস্থা

Status টাইপ একটি লজিক্যাল এরর মডেল নির্ধারণ করে যা REST API এবং RPC API সহ বিভিন্ন প্রোগ্রামিং এনভায়রনমেন্টের জন্য উপযুক্ত। এটি gRPC দ্বারা ব্যবহৃত হয়। প্রতিটি Status মেসেজে তিনটি ডেটা থাকে: এরর কোড, এরর মেসেজ এবং এররের বিস্তারিত বিবরণ।

এই এরর মডেল এবং এটি নিয়ে কীভাবে কাজ করতে হয়, সে সম্পর্কে আরও জানতে আপনি এপিআই ডিজাইন গাইড দেখতে পারেন।

ক্ষেত্র
code

int32

স্ট্যাটাস কোডটি google.rpc.Code এর একটি enum ভ্যালু হওয়া উচিত।

message

string

ডেভেলপারদের জন্য একটি ত্রুটির বার্তা, যা ইংরেজিতে হওয়া উচিত। ব্যবহারকারীদের জন্য যেকোনো ত্রুটির বার্তা স্থানীয়করণ করে google.rpc.Status.details ফিল্ডে পাঠাতে হবে, অথবা ক্লায়েন্ট দ্বারা স্থানীয়করণ করতে হবে।

details[]

Any

ত্রুটির বিবরণ বহনকারী বার্তাগুলির একটি তালিকা। এপিআই (API) ব্যবহারের জন্য কিছু সাধারণ বার্তা প্রকার রয়েছে।