public sealed class AttributeContext.Types.Request : IMessage<AttributeContext.Types.Request>, IEquatable<AttributeContext.Types.Request>, IDeepCloneable<AttributeContext.Types.Request>, IBufferMessage, IMessage
This message defines attributes for an HTTP request. If the actual
request is not an HTTP request, the runtime system should try to map
the actual request to an equivalent HTTP request.
The HTTP request headers. If multiple headers share the same key, they
must be merged according to the HTTP spec. All header keys must be
lowercased, because HTTP header keys are case-insensitive.
The unique ID for a request, which can be propagated to downstream
systems. The ID should have low probability of collision
within a single day for a specific service.
[[["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\u003eAttributeContext.Types.Request\u003c/code\u003e class defines attributes for an HTTP request and includes methods to map non-HTTP requests to equivalent HTTP requests.\u003c/p\u003e\n"],["\u003cp\u003eThis class implements several interfaces, including \u003ccode\u003eIMessage\u003c/code\u003e, \u003ccode\u003eIEquatable\u003c/code\u003e, \u003ccode\u003eIDeepCloneable\u003c/code\u003e, and \u003ccode\u003eIBufferMessage\u003c/code\u003e, providing functionalities for message handling, comparison, cloning, and buffered operations.\u003c/p\u003e\n"],["\u003cp\u003eIt includes numerous properties representing HTTP request elements like \u003ccode\u003eId\u003c/code\u003e, \u003ccode\u003eMethod\u003c/code\u003e, \u003ccode\u003eHost\u003c/code\u003e, \u003ccode\u003ePath\u003c/code\u003e, \u003ccode\u003eHeaders\u003c/code\u003e, \u003ccode\u003eQuery\u003c/code\u003e, \u003ccode\u003eProtocol\u003c/code\u003e, \u003ccode\u003eScheme\u003c/code\u003e, \u003ccode\u003eSize\u003c/code\u003e, \u003ccode\u003eTime\u003c/code\u003e, \u003ccode\u003eReason\u003c/code\u003e and \u003ccode\u003eAuth\u003c/code\u003e, all detailed with their respective data types.\u003c/p\u003e\n"],["\u003cp\u003eThe class also provides methods such as \u003ccode\u003eClone()\u003c/code\u003e, \u003ccode\u003eEquals()\u003c/code\u003e, \u003ccode\u003eGetHashCode()\u003c/code\u003e, \u003ccode\u003eMergeFrom()\u003c/code\u003e, \u003ccode\u003eToString()\u003c/code\u003e, \u003ccode\u003eWriteTo()\u003c/code\u003e and \u003ccode\u003eCalculateSize()\u003c/code\u003e for object manipulation, data processing, and output formatting.\u003c/p\u003e\n"],["\u003cp\u003eThere are many field numbers that correspond to the different HTTP request elements, such as the \u003ccode\u003eIdFieldNumber\u003c/code\u003e, \u003ccode\u003eMethodFieldNumber\u003c/code\u003e, and \u003ccode\u003eHostFieldNumber\u003c/code\u003e, to name a few.\u003c/p\u003e\n"]]],[],null,["# Class AttributeContext.Types.Request (2.17.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.17.0 (latest)](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.Context.AttributeContext.Types.Request)\n- [2.15.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.15.0/Google.Rpc.Context.AttributeContext.Types.Request)\n- [2.10.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.10.0/Google.Rpc.Context.AttributeContext.Types.Request)\n- [2.2.0](/dotnet/docs/reference/Google.Api.CommonProtos/2.2.0/Google.Rpc.Context.AttributeContext.Types.Request) \n\n public sealed class AttributeContext.Types.Request : IMessage\u003cAttributeContext.Types.Request\u003e, IEquatable\u003cAttributeContext.Types.Request\u003e, IDeepCloneable\u003cAttributeContext.Types.Request\u003e, IBufferMessage, IMessage\n\nThis message defines attributes for an HTTP request. If the actual\nrequest is not an HTTP request, the runtime system should try to map\nthe actual request to an equivalent HTTP request. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e AttributeContext.Types.Request \n\nImplements\n----------\n\n[IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage-1.html)[AttributeContext](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.Context.AttributeContext)[Types](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.Context.AttributeContext.Types)[Request](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.Context.AttributeContext.Types.Request), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[AttributeContext](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.Context.AttributeContext)[Types](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.Context.AttributeContext.Types)[Request](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.Context.AttributeContext.Types.Request), [IDeepCloneable](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IDeepCloneable-1.html)[AttributeContext](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.Context.AttributeContext)[Types](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.Context.AttributeContext.Types)[Request](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.Context.AttributeContext.Types.Request), [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.Context](/dotnet/docs/reference/Google.Api.CommonProtos/latest/Google.Rpc.Context)\n\nAssembly\n--------\n\nGoogle.Api.CommonProtos.dll\n\nConstructors\n------------\n\n### Request()\n\n public Request()\n\n### Request(Request)\n\n public Request(AttributeContext.Types.Request other)\n\nFields\n------\n\n### AuthFieldNumber\n\n public const int AuthFieldNumber = 13\n\nField number for the \"auth\" field.\n\n### HeadersFieldNumber\n\n public const int HeadersFieldNumber = 3\n\nField number for the \"headers\" field.\n\n### HostFieldNumber\n\n public const int HostFieldNumber = 5\n\nField number for the \"host\" field.\n\n### IdFieldNumber\n\n public const int IdFieldNumber = 1\n\nField number for the \"id\" field.\n\n### MethodFieldNumber\n\n public const int MethodFieldNumber = 2\n\nField number for the \"method\" field.\n\n### PathFieldNumber\n\n public const int PathFieldNumber = 4\n\nField number for the \"path\" field.\n\n### ProtocolFieldNumber\n\n public const int ProtocolFieldNumber = 11\n\nField number for the \"protocol\" field.\n\n### QueryFieldNumber\n\n public const int QueryFieldNumber = 7\n\nField number for the \"query\" field.\n\n### ReasonFieldNumber\n\n public const int ReasonFieldNumber = 12\n\nField number for the \"reason\" field.\n\n### SchemeFieldNumber\n\n public const int SchemeFieldNumber = 6\n\nField number for the \"scheme\" field.\n\n### SizeFieldNumber\n\n public const int SizeFieldNumber = 10\n\nField number for the \"size\" field.\n\n### TimeFieldNumber\n\n public const int TimeFieldNumber = 9\n\nField number for the \"time\" field.\n\nProperties\n----------\n\n### Auth\n\n public AttributeContext.Types.Auth Auth { get; set; }\n\nThe request authentication. May be absent for unauthenticated requests.\nDerived from the HTTP request `Authorization` header or equivalent.\n\n### Descriptor\n\n public static MessageDescriptor Descriptor { get; }\n\n### Headers\n\n public MapField\u003cstring, string\u003e Headers { get; }\n\nThe HTTP request headers. If multiple headers share the same key, they\nmust be merged according to the HTTP spec. All header keys must be\nlowercased, because HTTP header keys are case-insensitive.\n\n### Host\n\n public string Host { get; set; }\n\nThe HTTP request `Host` header value.\n\n### Id\n\n public string Id { get; set; }\n\nThe unique ID for a request, which can be propagated to downstream\nsystems. The ID should have low probability of collision\nwithin a single day for a specific service.\n\n### Method\n\n public string Method { get; set; }\n\nThe HTTP request method, such as `GET`, `POST`.\n\n### Parser\n\n public static MessageParser\u003cAttributeContext.Types.Request\u003e Parser { get; }\n\n### Path\n\n public string Path { get; set; }\n\nThe HTTP URL path, excluding the query parameters.\n\n### Protocol\n\n public string Protocol { get; set; }\n\nThe network protocol used with the request, such as \"http/1.1\",\n\"spdy/3\", \"h2\", \"h2c\", \"webrtc\", \"tcp\", \"udp\", \"quic\". See\n\u003chttps://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids\u003e\nfor details.\n\n### Query\n\n public string Query { get; set; }\n\nThe HTTP URL query in the format of `name1=value1&name2=value2`, as it\nappears in the first line of the HTTP request. No decoding is performed.\n\n### Reason\n\n public string Reason { get; set; }\n\nA special parameter for request reason. It is used by security systems\nto associate auditing information with a request.\n\n### Scheme\n\n public string Scheme { get; set; }\n\nThe HTTP URL scheme, such as `http` and `https`.\n\n### Size\n\n public long Size { get; set; }\n\nThe HTTP request size in bytes. If unknown, it must be -1.\n\n### Time\n\n public Timestamp Time { get; set; }\n\nThe timestamp when the `destination` service receives the last byte of\nthe request.\n\nMethods\n-------\n\n### CalculateSize()\n\n public int CalculateSize()\n\n### Clone()\n\n public AttributeContext.Types.Request Clone()\n\n### Equals(Request)\n\n public bool Equals(AttributeContext.Types.Request 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(Request)\n\n public void MergeFrom(AttributeContext.Types.Request 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)"]]