-
Notifications
You must be signed in to change notification settings - Fork 535
/
status.rb
87 lines (85 loc) · 3.91 KB
/
status.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
module Google
module Rpc
# The `Status` type defines a logical error model that is suitable for
# different programming environments, including REST APIs and RPC APIs. It is
# used by [gRPC](https://github.com/grpc). The error model is designed to be:
#
# * Simple to use and understand for most users
# * Flexible enough to meet unexpected needs
#
# = Overview
#
# The `Status` message contains three pieces of data: error code, error
# message, and error details. The error code should be an enum value of
# {Google::Rpc::Code}, but it may accept additional error codes
# if needed. The error message should be a developer-facing English message
# that helps developers *understand* and *resolve* the error. If a localized
# user-facing error message is needed, put the localized message in the error
# details or localize it in the client. The optional error details may contain
# arbitrary information about the error. There is a predefined set of error
# detail types in the package `google.rpc` that can be used for common error
# conditions.
#
# = Language mapping
#
# The `Status` message is the logical representation of the error model, but it
# is not necessarily the actual wire format. When the `Status` message is
# exposed in different client libraries and different wire protocols, it can be
# mapped differently. For example, it will likely be mapped to some exceptions
# in Java, but more likely mapped to some error codes in C.
#
# = Other uses
#
# The error model and the `Status` message can be used in a variety of
# environments, either with or without APIs, to provide a
# consistent developer experience across different environments.
#
# Example uses of this error model include:
#
# * Partial errors. If a service needs to return partial errors to the client,
# it may embed the `Status` in the normal response to indicate the partial
# errors.
#
# * Workflow errors. A typical workflow has multiple steps. Each step may
# have a `Status` message for error reporting.
#
# * Batch operations. If a client uses batch request and batch response, the
# `Status` message should be used directly inside batch response, one for
# each error sub-response.
#
# * Asynchronous operations. If an API call embeds asynchronous operation
# results in its response, the status of those operations should be
# represented directly using the `Status` message.
#
# * Logging. If some API errors are stored in logs, the message `Status` could
# be used directly after any stripping needed for security/privacy reasons.
# @!attribute [rw] code
# @return [Integer]
# The status code, which should be an enum value of
# {Google::Rpc::Code}.
# @!attribute [rw] message
# @return [String]
# A developer-facing error message, which should be in English. Any
# user-facing error message should be localized and sent in the
# {Google::Rpc::Status#details} field, or localized
# by the client.
# @!attribute [rw] details
# @return [Array<Google::Protobuf::Any>]
# A list of messages that carry the error details. There is a common set of
# message types for APIs to use.
class Status; end
end
end