Describes what error is encountered when accessing this resource.
For example, updating a cloud project may require the writer permission
on the developer console project.
The name of the resource being accessed. For example, a shared calendar
name: "example.com_4fghdhgsrgh@group.calendar.google.com", if the current
error is
[google.rpc.Code.PERMISSION_DENIED][google.rpc.Code.PERMISSION_DENIED].
A name for the type of resource being accessed, e.g. "sql table",
"cloud storage bucket", "file", "Google calendar"; or the type URL
of the resource: e.g. "type.googleapis.com/google.pubsub.v1.Topic".
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eResourceInfo\u003c/code\u003e class describes the resource being accessed and is part of the \u003ccode\u003eGoogle.Rpc\u003c/code\u003e namespace within the \u003ccode\u003eGoogle.Api.CommonProtos.dll\u003c/code\u003e assembly.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eResourceInfo\u003c/code\u003e objects contain properties such as \u003ccode\u003eResourceType\u003c/code\u003e, \u003ccode\u003eResourceName\u003c/code\u003e, \u003ccode\u003eOwner\u003c/code\u003e, and \u003ccode\u003eDescription\u003c/code\u003e, which provide details about the resource and any errors encountered during access.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eResourceInfo\u003c/code\u003e class implements interfaces like \u003ccode\u003eIMessage\u003c/code\u003e, \u003ccode\u003eIEquatable\u003c/code\u003e, \u003ccode\u003eIDeepCloneable\u003c/code\u003e, and \u003ccode\u003eIBufferMessage\u003c/code\u003e, and includes methods for cloning, comparing, merging, calculating size, and writing to a coded output stream.\u003c/p\u003e\n"],["\u003cp\u003eThere are multiple versions of \u003ccode\u003eResourceInfo\u003c/code\u003e available, with \u003ccode\u003e2.15.0\u003c/code\u003e being the latest, and also including versions \u003ccode\u003e2.10.0\u003c/code\u003e and \u003ccode\u003e2.2.0\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eResourceInfo\u003c/code\u003e class has constructors that initialize an empty \u003ccode\u003eResourceInfo\u003c/code\u003e or creates a \u003ccode\u003eResourceInfo\u003c/code\u003e based on an existing \u003ccode\u003eResourceInfo\u003c/code\u003e object.\u003c/p\u003e\n"]]],[],null,["# Class ResourceInfo (2.17.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.17.0 (latest)](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.ResourceInfo)\n- [2.15.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.15.0/Google.Rpc.ResourceInfo)\n- [2.10.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.10.0/Google.Rpc.ResourceInfo)\n- [2.2.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.2.0/Google.Rpc.ResourceInfo) \n\n public sealed class ResourceInfo : IMessage\u003cResourceInfo\u003e, IEquatable\u003cResourceInfo\u003e, IDeepCloneable\u003cResourceInfo\u003e, IBufferMessage, IMessage\n\nDescribes the resource that is being accessed. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e ResourceInfo \n\nImplements\n----------\n\n[IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage-1.html)[ResourceInfo](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.ResourceInfo), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[ResourceInfo](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.ResourceInfo), [IDeepCloneable](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IDeepCloneable-1.html)[ResourceInfo](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.ResourceInfo), [IBufferMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IBufferMessage.html), [IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage.html) \n\nInherited Members\n-----------------\n\n[object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)) \n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) \n[object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals)\n\nNamespace\n---------\n\n[Google.Rpc](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc)\n\nAssembly\n--------\n\nGoogle.Api.CommonProtos.dll\n\nConstructors\n------------\n\n### ResourceInfo()\n\n public ResourceInfo()\n\n### ResourceInfo(ResourceInfo)\n\n public ResourceInfo(ResourceInfo other)\n\nFields\n------\n\n### DescriptionFieldNumber\n\n public const int DescriptionFieldNumber = 4\n\nField number for the \"description\" field.\n\n### OwnerFieldNumber\n\n public const int OwnerFieldNumber = 3\n\nField number for the \"owner\" field.\n\n### ResourceNameFieldNumber\n\n public const int ResourceNameFieldNumber = 2\n\nField number for the \"resource_name\" field.\n\n### ResourceTypeFieldNumber\n\n public const int ResourceTypeFieldNumber = 1\n\nField number for the \"resource_type\" field.\n\nProperties\n----------\n\n### Description\n\n public string Description { get; set; }\n\nDescribes what error is encountered when accessing this resource.\nFor example, updating a cloud project may require the `writer` permission\non the developer console project.\n\n### Descriptor\n\n public static MessageDescriptor Descriptor { get; }\n\n### Owner\n\n public string Owner { get; set; }\n\nThe owner of the resource (optional).\nFor example, \"user:\\\u003cowner email\\\u003e\" or \"project:\\\u003cGoogle developer project\nid\\\u003e\".\n\n### Parser\n\n public static MessageParser\u003cResourceInfo\u003e Parser { get; }\n\n### ResourceName\n\n public string ResourceName { get; set; }\n\nThe name of the resource being accessed. For example, a shared calendar\nname: \"example.com_4fghdhgsrgh@group.calendar.google.com\", if the current\nerror is\n\\[google.rpc.Code.PERMISSION_DENIED\\]\\[google.rpc.Code.PERMISSION_DENIED\\].\n\n### ResourceType\n\n public string ResourceType { get; set; }\n\nA name for the type of resource being accessed, e.g. \"sql table\",\n\"cloud storage bucket\", \"file\", \"Google calendar\"; or the type URL\nof the resource: e.g. \"type.googleapis.com/google.pubsub.v1.Topic\".\n\nMethods\n-------\n\n### CalculateSize()\n\n public int CalculateSize()\n\n### Clone()\n\n public ResourceInfo Clone()\n\n### Equals(ResourceInfo)\n\n public bool Equals(ResourceInfo other)\n\n### Equals(object)\n\n public override bool Equals(object other)\n\n**Overrides** \n[object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object))\n\n### GetHashCode()\n\n public override int GetHashCode()\n\n**Overrides** \n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode)\n\n### MergeFrom(CodedInputStream)\n\n public void MergeFrom(CodedInputStream input)\n\n### MergeFrom(ResourceInfo)\n\n public void MergeFrom(ResourceInfo other)\n\n### ToString()\n\n public override string ToString()\n\n**Overrides** \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\n### WriteTo(CodedOutputStream)\n\n public void WriteTo(CodedOutputStream output)"]]