Class Status (2.15.0)

public sealed class Status : IMessage<Status>, IEquatable<Status>, IDeepCloneable<Status>, IBufferMessage, IMessage

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. Each Status message contains three pieces of data: error code, error message, and error details.

You can find out more about this error model and how to work with it in the API Design Guide.

Inheritance

object > Status

Namespace

Google.Rpc

Assembly

Google.Api.CommonProtos.dll

Constructors

Status()

public Status()

Status(Status)

public Status(Status other)
Parameter
Name Description
other Status

Fields

CodeFieldNumber

public const int CodeFieldNumber = 1

Field number for the "code" field.

Field Value
Type Description
int

DetailsFieldNumber

public const int DetailsFieldNumber = 3

Field number for the "details" field.

Field Value
Type Description
int

MessageFieldNumber

public const int MessageFieldNumber = 2

Field number for the "message" field.

Field Value
Type Description
int

Properties

Code

public int Code { get; set; }

The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].

Property Value
Type Description
int

Descriptor

public static MessageDescriptor Descriptor { get; }
Property Value
Type Description
MessageDescriptor

Details

public RepeatedField<Any> Details { get; }

A list of messages that carry the error details. There is a common set of message types for APIs to use.

Property Value
Type Description
RepeatedFieldAny

Message

public string Message { get; set; }

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][google.rpc.Status.details] field, or localized by the client.

Property Value
Type Description
string

Parser

public static MessageParser<Status> Parser { get; }
Property Value
Type Description
MessageParserStatus

Methods

CalculateSize()

public int CalculateSize()

Calculates the size of this message in Protocol Buffer wire format, in bytes.

Returns
Type Description
int

The number of bytes required to write this message to a coded output stream.

Clone()

public Status Clone()

Creates a deep clone of this object.

Returns
Type Description
Status

A deep clone of this object.

Equals(Status)

public bool Equals(Status other)
Parameter
Name Description
other Status
Returns
Type Description
bool

Equals(object)

public override bool Equals(object other)
Parameter
Name Description
other object
Returns
Type Description
bool
Overrides

GetDetail<T>()

public T GetDetail<T>() where T : class, IMessage<T>, new()

Retrieves the error details of type T from the Status message.

Returns
Type Description
T

The first error details of type T found, or null if not present.

Type Parameter
Name Description
T

The message type to decode from within the error details.

Remarks

GetHashCode()

public override int GetHashCode()
Returns
Type Description
int
Overrides

MergeFrom(CodedInputStream)

public void MergeFrom(CodedInputStream input)

Merges the data from the specified coded input stream with the current message.

Parameter
Name Description
input CodedInputStream
Remarks

See the user guide for precise merge semantics.

MergeFrom(Status)

public void MergeFrom(Status other)

Merges the given message into this one.

Parameter
Name Description
other Status
Remarks

See the user guide for precise merge semantics.

ToString()

public override string ToString()
Returns
Type Description
string
Overrides

UnpackDetailMessages()

public IEnumerable<IMessage> UnpackDetailMessages()

Iterate over all the messages in the Details

Returns
Type Description
IEnumerableIMessage
Remarks

Iterate over the messages in the Details that are messages in the standard set of error types defined in the richer error model. Any other messages found in the Details are ignored and not returned.

foreach (var msg in status.UnpackDetailMessages())
{
    switch (msg)
    {
        case ErrorInfo errorInfo:
            // Handle errorInfo ...
            break;

        // Other cases ...
    }
}

UnpackDetailMessages(TypeRegistry)

public IEnumerable<IMessage> UnpackDetailMessages(TypeRegistry registry)

Iterate over all the messages in the Details that match types in the given TypeRegistry

Parameter
Name Description
registry TypeRegistry

The type registry to use to unpack detail messages.

Returns
Type Description
IEnumerableIMessage

A (possibly-empty) sequence of detail messages.

Remarks

Iterate over the messages in the Details that are messages in the given TypeRegistry. Any other messages found in the Details are ignored and not returned. This allows iterating over custom messages if you are not using the standard set of error types defined in the rich error model.

TypeRegistry myTypes = TypeRegistry.FromMessages(FooMessage.Descriptor, BarMessage.Descriptor);

foreach (var msg in status.UnpackDetailMessages(myTypes))
{
    switch (msg)
    {
        case FooMessage foo:
            // Handle foo ...
             break;

        // Other cases ...
    }
}

WriteTo(CodedOutputStream)

public void WriteTo(CodedOutputStream output)

Writes the data to the given coded output stream.

Parameter
Name Description
output CodedOutputStream

Coded output stream to write the data to. Must not be null.