http.pb.go raw

   1  // Copyright 2025 Google LLC
   2  //
   3  // Licensed under the Apache License, Version 2.0 (the "License");
   4  // you may not use this file except in compliance with the License.
   5  // You may obtain a copy of the License at
   6  //
   7  //     http://www.apache.org/licenses/LICENSE-2.0
   8  //
   9  // Unless required by applicable law or agreed to in writing, software
  10  // distributed under the License is distributed on an "AS IS" BASIS,
  11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12  // See the License for the specific language governing permissions and
  13  // limitations under the License.
  14  
  15  // Code generated by protoc-gen-go. DO NOT EDIT.
  16  // versions:
  17  // 	protoc-gen-go v1.26.0
  18  // 	protoc        v4.24.4
  19  // source: google/api/http.proto
  20  
  21  package annotations
  22  
  23  import (
  24  	reflect "reflect"
  25  	sync "sync"
  26  
  27  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
  28  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
  29  )
  30  
  31  const (
  32  	// Verify that this generated code is sufficiently up-to-date.
  33  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
  34  	// Verify that runtime/protoimpl is sufficiently up-to-date.
  35  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
  36  )
  37  
  38  // Defines the HTTP configuration for an API service. It contains a list of
  39  // [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method
  40  // to one or more HTTP REST API methods.
  41  type Http struct {
  42  	state         protoimpl.MessageState
  43  	sizeCache     protoimpl.SizeCache
  44  	unknownFields protoimpl.UnknownFields
  45  
  46  	// A list of HTTP configuration rules that apply to individual API methods.
  47  	//
  48  	// **NOTE:** All service configuration rules follow "last one wins" order.
  49  	Rules []*HttpRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"`
  50  	// When set to true, URL path parameters will be fully URI-decoded except in
  51  	// cases of single segment matches in reserved expansion, where "%2F" will be
  52  	// left encoded.
  53  	//
  54  	// The default behavior is to not decode RFC 6570 reserved characters in multi
  55  	// segment matches.
  56  	FullyDecodeReservedExpansion bool `protobuf:"varint,2,opt,name=fully_decode_reserved_expansion,json=fullyDecodeReservedExpansion,proto3" json:"fully_decode_reserved_expansion,omitempty"`
  57  }
  58  
  59  func (x *Http) Reset() {
  60  	*x = Http{}
  61  	if protoimpl.UnsafeEnabled {
  62  		mi := &file_google_api_http_proto_msgTypes[0]
  63  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  64  		ms.StoreMessageInfo(mi)
  65  	}
  66  }
  67  
  68  func (x *Http) String() string {
  69  	return protoimpl.X.MessageStringOf(x)
  70  }
  71  
  72  func (*Http) ProtoMessage() {}
  73  
  74  func (x *Http) ProtoReflect() protoreflect.Message {
  75  	mi := &file_google_api_http_proto_msgTypes[0]
  76  	if protoimpl.UnsafeEnabled && x != nil {
  77  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  78  		if ms.LoadMessageInfo() == nil {
  79  			ms.StoreMessageInfo(mi)
  80  		}
  81  		return ms
  82  	}
  83  	return mi.MessageOf(x)
  84  }
  85  
  86  // Deprecated: Use Http.ProtoReflect.Descriptor instead.
  87  func (*Http) Descriptor() ([]byte, []int) {
  88  	return file_google_api_http_proto_rawDescGZIP(), []int{0}
  89  }
  90  
  91  func (x *Http) GetRules() []*HttpRule {
  92  	if x != nil {
  93  		return x.Rules
  94  	}
  95  	return nil
  96  }
  97  
  98  func (x *Http) GetFullyDecodeReservedExpansion() bool {
  99  	if x != nil {
 100  		return x.FullyDecodeReservedExpansion
 101  	}
 102  	return false
 103  }
 104  
 105  // gRPC Transcoding
 106  //
 107  // gRPC Transcoding is a feature for mapping between a gRPC method and one or
 108  // more HTTP REST endpoints. It allows developers to build a single API service
 109  // that supports both gRPC APIs and REST APIs. Many systems, including [Google
 110  // APIs](https://github.com/googleapis/googleapis),
 111  // [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC
 112  // Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
 113  // and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature
 114  // and use it for large scale production services.
 115  //
 116  // `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies
 117  // how different portions of the gRPC request message are mapped to the URL
 118  // path, URL query parameters, and HTTP request body. It also controls how the
 119  // gRPC response message is mapped to the HTTP response body. `HttpRule` is
 120  // typically specified as an `google.api.http` annotation on the gRPC method.
 121  //
 122  // Each mapping specifies a URL path template and an HTTP method. The path
 123  // template may refer to one or more fields in the gRPC request message, as long
 124  // as each field is a non-repeated field with a primitive (non-message) type.
 125  // The path template controls how fields of the request message are mapped to
 126  // the URL path.
 127  //
 128  // Example:
 129  //
 130  //	service Messaging {
 131  //	  rpc GetMessage(GetMessageRequest) returns (Message) {
 132  //	    option (google.api.http) = {
 133  //	        get: "/v1/{name=messages/*}"
 134  //	    };
 135  //	  }
 136  //	}
 137  //	message GetMessageRequest {
 138  //	  string name = 1; // Mapped to URL path.
 139  //	}
 140  //	message Message {
 141  //	  string text = 1; // The resource content.
 142  //	}
 143  //
 144  // This enables an HTTP REST to gRPC mapping as below:
 145  //
 146  // - HTTP: `GET /v1/messages/123456`
 147  // - gRPC: `GetMessage(name: "messages/123456")`
 148  //
 149  // Any fields in the request message which are not bound by the path template
 150  // automatically become HTTP query parameters if there is no HTTP request body.
 151  // For example:
 152  //
 153  //	service Messaging {
 154  //	  rpc GetMessage(GetMessageRequest) returns (Message) {
 155  //	    option (google.api.http) = {
 156  //	        get:"/v1/messages/{message_id}"
 157  //	    };
 158  //	  }
 159  //	}
 160  //	message GetMessageRequest {
 161  //	  message SubMessage {
 162  //	    string subfield = 1;
 163  //	  }
 164  //	  string message_id = 1; // Mapped to URL path.
 165  //	  int64 revision = 2;    // Mapped to URL query parameter `revision`.
 166  //	  SubMessage sub = 3;    // Mapped to URL query parameter `sub.subfield`.
 167  //	}
 168  //
 169  // This enables a HTTP JSON to RPC mapping as below:
 170  //
 171  // - HTTP: `GET /v1/messages/123456?revision=2&sub.subfield=foo`
 172  // - gRPC: `GetMessage(message_id: "123456" revision: 2 sub:
 173  // SubMessage(subfield: "foo"))`
 174  //
 175  // Note that fields which are mapped to URL query parameters must have a
 176  // primitive type or a repeated primitive type or a non-repeated message type.
 177  // In the case of a repeated type, the parameter can be repeated in the URL
 178  // as `...?param=A&param=B`. In the case of a message type, each field of the
 179  // message is mapped to a separate parameter, such as
 180  // `...?foo.a=A&foo.b=B&foo.c=C`.
 181  //
 182  // For HTTP methods that allow a request body, the `body` field
 183  // specifies the mapping. Consider a REST update method on the
 184  // message resource collection:
 185  //
 186  //	service Messaging {
 187  //	  rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
 188  //	    option (google.api.http) = {
 189  //	      patch: "/v1/messages/{message_id}"
 190  //	      body: "message"
 191  //	    };
 192  //	  }
 193  //	}
 194  //	message UpdateMessageRequest {
 195  //	  string message_id = 1; // mapped to the URL
 196  //	  Message message = 2;   // mapped to the body
 197  //	}
 198  //
 199  // The following HTTP JSON to RPC mapping is enabled, where the
 200  // representation of the JSON in the request body is determined by
 201  // protos JSON encoding:
 202  //
 203  // - HTTP: `PATCH /v1/messages/123456 { "text": "Hi!" }`
 204  // - gRPC: `UpdateMessage(message_id: "123456" message { text: "Hi!" })`
 205  //
 206  // The special name `*` can be used in the body mapping to define that
 207  // every field not bound by the path template should be mapped to the
 208  // request body.  This enables the following alternative definition of
 209  // the update method:
 210  //
 211  //	service Messaging {
 212  //	  rpc UpdateMessage(Message) returns (Message) {
 213  //	    option (google.api.http) = {
 214  //	      patch: "/v1/messages/{message_id}"
 215  //	      body: "*"
 216  //	    };
 217  //	  }
 218  //	}
 219  //	message Message {
 220  //	  string message_id = 1;
 221  //	  string text = 2;
 222  //	}
 223  //
 224  // The following HTTP JSON to RPC mapping is enabled:
 225  //
 226  // - HTTP: `PATCH /v1/messages/123456 { "text": "Hi!" }`
 227  // - gRPC: `UpdateMessage(message_id: "123456" text: "Hi!")`
 228  //
 229  // Note that when using `*` in the body mapping, it is not possible to
 230  // have HTTP parameters, as all fields not bound by the path end in
 231  // the body. This makes this option more rarely used in practice when
 232  // defining REST APIs. The common usage of `*` is in custom methods
 233  // which don't use the URL at all for transferring data.
 234  //
 235  // It is possible to define multiple HTTP methods for one RPC by using
 236  // the `additional_bindings` option. Example:
 237  //
 238  //	service Messaging {
 239  //	  rpc GetMessage(GetMessageRequest) returns (Message) {
 240  //	    option (google.api.http) = {
 241  //	      get: "/v1/messages/{message_id}"
 242  //	      additional_bindings {
 243  //	        get: "/v1/users/{user_id}/messages/{message_id}"
 244  //	      }
 245  //	    };
 246  //	  }
 247  //	}
 248  //	message GetMessageRequest {
 249  //	  string message_id = 1;
 250  //	  string user_id = 2;
 251  //	}
 252  //
 253  // This enables the following two alternative HTTP JSON to RPC mappings:
 254  //
 255  // - HTTP: `GET /v1/messages/123456`
 256  // - gRPC: `GetMessage(message_id: "123456")`
 257  //
 258  // - HTTP: `GET /v1/users/me/messages/123456`
 259  // - gRPC: `GetMessage(user_id: "me" message_id: "123456")`
 260  //
 261  // # Rules for HTTP mapping
 262  //
 263  //  1. Leaf request fields (recursive expansion nested messages in the request
 264  //     message) are classified into three categories:
 265  //     - Fields referred by the path template. They are passed via the URL path.
 266  //     - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They
 267  //     are passed via the HTTP
 268  //     request body.
 269  //     - All other fields are passed via the URL query parameters, and the
 270  //     parameter name is the field path in the request message. A repeated
 271  //     field can be represented as multiple query parameters under the same
 272  //     name.
 273  //  2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL
 274  //     query parameter, all fields
 275  //     are passed via URL path and HTTP request body.
 276  //  3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP
 277  //     request body, all
 278  //     fields are passed via URL path and URL query parameters.
 279  //
 280  // Path template syntax
 281  //
 282  //	Template = "/" Segments [ Verb ] ;
 283  //	Segments = Segment { "/" Segment } ;
 284  //	Segment  = "*" | "**" | LITERAL | Variable ;
 285  //	Variable = "{" FieldPath [ "=" Segments ] "}" ;
 286  //	FieldPath = IDENT { "." IDENT } ;
 287  //	Verb     = ":" LITERAL ;
 288  //
 289  // The syntax `*` matches a single URL path segment. The syntax `**` matches
 290  // zero or more URL path segments, which must be the last part of the URL path
 291  // except the `Verb`.
 292  //
 293  // The syntax `Variable` matches part of the URL path as specified by its
 294  // template. A variable template must not contain other variables. If a variable
 295  // matches a single path segment, its template may be omitted, e.g. `{var}`
 296  // is equivalent to `{var=*}`.
 297  //
 298  // The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`
 299  // contains any reserved character, such characters should be percent-encoded
 300  // before the matching.
 301  //
 302  // If a variable contains exactly one path segment, such as `"{var}"` or
 303  // `"{var=*}"`, when such a variable is expanded into a URL path on the client
 304  // side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The
 305  // server side does the reverse decoding. Such variables show up in the
 306  // [Discovery
 307  // Document](https://developers.google.com/discovery/v1/reference/apis) as
 308  // `{var}`.
 309  //
 310  // If a variable contains multiple path segments, such as `"{var=foo/*}"`
 311  // or `"{var=**}"`, when such a variable is expanded into a URL path on the
 312  // client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.
 313  // The server side does the reverse decoding, except "%2F" and "%2f" are left
 314  // unchanged. Such variables show up in the
 315  // [Discovery
 316  // Document](https://developers.google.com/discovery/v1/reference/apis) as
 317  // `{+var}`.
 318  //
 319  // # Using gRPC API Service Configuration
 320  //
 321  // gRPC API Service Configuration (service config) is a configuration language
 322  // for configuring a gRPC service to become a user-facing product. The
 323  // service config is simply the YAML representation of the `google.api.Service`
 324  // proto message.
 325  //
 326  // As an alternative to annotating your proto file, you can configure gRPC
 327  // transcoding in your service config YAML files. You do this by specifying a
 328  // `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
 329  // effect as the proto annotation. This can be particularly useful if you
 330  // have a proto that is reused in multiple services. Note that any transcoding
 331  // specified in the service config will override any matching transcoding
 332  // configuration in the proto.
 333  //
 334  // The following example selects a gRPC method and applies an `HttpRule` to it:
 335  //
 336  //	http:
 337  //	  rules:
 338  //	    - selector: example.v1.Messaging.GetMessage
 339  //	      get: /v1/messages/{message_id}/{sub.subfield}
 340  //
 341  // # Special notes
 342  //
 343  // When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the
 344  // proto to JSON conversion must follow the [proto3
 345  // specification](https://developers.google.com/protocol-buffers/docs/proto3#json).
 346  //
 347  // While the single segment variable follows the semantics of
 348  // [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
 349  // Expansion, the multi segment variable **does not** follow RFC 6570 Section
 350  // 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion
 351  // does not expand special characters like `?` and `#`, which would lead
 352  // to invalid URLs. As the result, gRPC Transcoding uses a custom encoding
 353  // for multi segment variables.
 354  //
 355  // The path variables **must not** refer to any repeated or mapped field,
 356  // because client libraries are not capable of handling such variable expansion.
 357  //
 358  // The path variables **must not** capture the leading "/" character. The reason
 359  // is that the most common use case "{var}" does not capture the leading "/"
 360  // character. For consistency, all path variables must share the same behavior.
 361  //
 362  // Repeated message fields must not be mapped to URL query parameters, because
 363  // no client library can support such complicated mapping.
 364  //
 365  // If an API needs to use a JSON array for request or response body, it can map
 366  // the request or response body to a repeated field. However, some gRPC
 367  // Transcoding implementations may not support this feature.
 368  type HttpRule struct {
 369  	state         protoimpl.MessageState
 370  	sizeCache     protoimpl.SizeCache
 371  	unknownFields protoimpl.UnknownFields
 372  
 373  	// Selects a method to which this rule applies.
 374  	//
 375  	// Refer to [selector][google.api.DocumentationRule.selector] for syntax
 376  	// details.
 377  	Selector string `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"`
 378  	// Determines the URL pattern is matched by this rules. This pattern can be
 379  	// used with any of the {get|put|post|delete|patch} methods. A custom method
 380  	// can be defined using the 'custom' field.
 381  	//
 382  	// Types that are assignable to Pattern:
 383  	//
 384  	//	*HttpRule_Get
 385  	//	*HttpRule_Put
 386  	//	*HttpRule_Post
 387  	//	*HttpRule_Delete
 388  	//	*HttpRule_Patch
 389  	//	*HttpRule_Custom
 390  	Pattern isHttpRule_Pattern `protobuf_oneof:"pattern"`
 391  	// The name of the request field whose value is mapped to the HTTP request
 392  	// body, or `*` for mapping all request fields not captured by the path
 393  	// pattern to the HTTP body, or omitted for not having any HTTP request body.
 394  	//
 395  	// NOTE: the referred field must be present at the top-level of the request
 396  	// message type.
 397  	Body string `protobuf:"bytes,7,opt,name=body,proto3" json:"body,omitempty"`
 398  	// Optional. The name of the response field whose value is mapped to the HTTP
 399  	// response body. When omitted, the entire response message will be used
 400  	// as the HTTP response body.
 401  	//
 402  	// NOTE: The referred field must be present at the top-level of the response
 403  	// message type.
 404  	ResponseBody string `protobuf:"bytes,12,opt,name=response_body,json=responseBody,proto3" json:"response_body,omitempty"`
 405  	// Additional HTTP bindings for the selector. Nested bindings must
 406  	// not contain an `additional_bindings` field themselves (that is,
 407  	// the nesting may only be one level deep).
 408  	AdditionalBindings []*HttpRule `protobuf:"bytes,11,rep,name=additional_bindings,json=additionalBindings,proto3" json:"additional_bindings,omitempty"`
 409  }
 410  
 411  func (x *HttpRule) Reset() {
 412  	*x = HttpRule{}
 413  	if protoimpl.UnsafeEnabled {
 414  		mi := &file_google_api_http_proto_msgTypes[1]
 415  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 416  		ms.StoreMessageInfo(mi)
 417  	}
 418  }
 419  
 420  func (x *HttpRule) String() string {
 421  	return protoimpl.X.MessageStringOf(x)
 422  }
 423  
 424  func (*HttpRule) ProtoMessage() {}
 425  
 426  func (x *HttpRule) ProtoReflect() protoreflect.Message {
 427  	mi := &file_google_api_http_proto_msgTypes[1]
 428  	if protoimpl.UnsafeEnabled && x != nil {
 429  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 430  		if ms.LoadMessageInfo() == nil {
 431  			ms.StoreMessageInfo(mi)
 432  		}
 433  		return ms
 434  	}
 435  	return mi.MessageOf(x)
 436  }
 437  
 438  // Deprecated: Use HttpRule.ProtoReflect.Descriptor instead.
 439  func (*HttpRule) Descriptor() ([]byte, []int) {
 440  	return file_google_api_http_proto_rawDescGZIP(), []int{1}
 441  }
 442  
 443  func (x *HttpRule) GetSelector() string {
 444  	if x != nil {
 445  		return x.Selector
 446  	}
 447  	return ""
 448  }
 449  
 450  func (m *HttpRule) GetPattern() isHttpRule_Pattern {
 451  	if m != nil {
 452  		return m.Pattern
 453  	}
 454  	return nil
 455  }
 456  
 457  func (x *HttpRule) GetGet() string {
 458  	if x, ok := x.GetPattern().(*HttpRule_Get); ok {
 459  		return x.Get
 460  	}
 461  	return ""
 462  }
 463  
 464  func (x *HttpRule) GetPut() string {
 465  	if x, ok := x.GetPattern().(*HttpRule_Put); ok {
 466  		return x.Put
 467  	}
 468  	return ""
 469  }
 470  
 471  func (x *HttpRule) GetPost() string {
 472  	if x, ok := x.GetPattern().(*HttpRule_Post); ok {
 473  		return x.Post
 474  	}
 475  	return ""
 476  }
 477  
 478  func (x *HttpRule) GetDelete() string {
 479  	if x, ok := x.GetPattern().(*HttpRule_Delete); ok {
 480  		return x.Delete
 481  	}
 482  	return ""
 483  }
 484  
 485  func (x *HttpRule) GetPatch() string {
 486  	if x, ok := x.GetPattern().(*HttpRule_Patch); ok {
 487  		return x.Patch
 488  	}
 489  	return ""
 490  }
 491  
 492  func (x *HttpRule) GetCustom() *CustomHttpPattern {
 493  	if x, ok := x.GetPattern().(*HttpRule_Custom); ok {
 494  		return x.Custom
 495  	}
 496  	return nil
 497  }
 498  
 499  func (x *HttpRule) GetBody() string {
 500  	if x != nil {
 501  		return x.Body
 502  	}
 503  	return ""
 504  }
 505  
 506  func (x *HttpRule) GetResponseBody() string {
 507  	if x != nil {
 508  		return x.ResponseBody
 509  	}
 510  	return ""
 511  }
 512  
 513  func (x *HttpRule) GetAdditionalBindings() []*HttpRule {
 514  	if x != nil {
 515  		return x.AdditionalBindings
 516  	}
 517  	return nil
 518  }
 519  
 520  type isHttpRule_Pattern interface {
 521  	isHttpRule_Pattern()
 522  }
 523  
 524  type HttpRule_Get struct {
 525  	// Maps to HTTP GET. Used for listing and getting information about
 526  	// resources.
 527  	Get string `protobuf:"bytes,2,opt,name=get,proto3,oneof"`
 528  }
 529  
 530  type HttpRule_Put struct {
 531  	// Maps to HTTP PUT. Used for replacing a resource.
 532  	Put string `protobuf:"bytes,3,opt,name=put,proto3,oneof"`
 533  }
 534  
 535  type HttpRule_Post struct {
 536  	// Maps to HTTP POST. Used for creating a resource or performing an action.
 537  	Post string `protobuf:"bytes,4,opt,name=post,proto3,oneof"`
 538  }
 539  
 540  type HttpRule_Delete struct {
 541  	// Maps to HTTP DELETE. Used for deleting a resource.
 542  	Delete string `protobuf:"bytes,5,opt,name=delete,proto3,oneof"`
 543  }
 544  
 545  type HttpRule_Patch struct {
 546  	// Maps to HTTP PATCH. Used for updating a resource.
 547  	Patch string `protobuf:"bytes,6,opt,name=patch,proto3,oneof"`
 548  }
 549  
 550  type HttpRule_Custom struct {
 551  	// The custom pattern is used for specifying an HTTP method that is not
 552  	// included in the `pattern` field, such as HEAD, or "*" to leave the
 553  	// HTTP method unspecified for this rule. The wild-card rule is useful
 554  	// for services that provide content to Web (HTML) clients.
 555  	Custom *CustomHttpPattern `protobuf:"bytes,8,opt,name=custom,proto3,oneof"`
 556  }
 557  
 558  func (*HttpRule_Get) isHttpRule_Pattern() {}
 559  
 560  func (*HttpRule_Put) isHttpRule_Pattern() {}
 561  
 562  func (*HttpRule_Post) isHttpRule_Pattern() {}
 563  
 564  func (*HttpRule_Delete) isHttpRule_Pattern() {}
 565  
 566  func (*HttpRule_Patch) isHttpRule_Pattern() {}
 567  
 568  func (*HttpRule_Custom) isHttpRule_Pattern() {}
 569  
 570  // A custom pattern is used for defining custom HTTP verb.
 571  type CustomHttpPattern struct {
 572  	state         protoimpl.MessageState
 573  	sizeCache     protoimpl.SizeCache
 574  	unknownFields protoimpl.UnknownFields
 575  
 576  	// The name of this custom HTTP verb.
 577  	Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
 578  	// The path matched by this custom verb.
 579  	Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
 580  }
 581  
 582  func (x *CustomHttpPattern) Reset() {
 583  	*x = CustomHttpPattern{}
 584  	if protoimpl.UnsafeEnabled {
 585  		mi := &file_google_api_http_proto_msgTypes[2]
 586  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 587  		ms.StoreMessageInfo(mi)
 588  	}
 589  }
 590  
 591  func (x *CustomHttpPattern) String() string {
 592  	return protoimpl.X.MessageStringOf(x)
 593  }
 594  
 595  func (*CustomHttpPattern) ProtoMessage() {}
 596  
 597  func (x *CustomHttpPattern) ProtoReflect() protoreflect.Message {
 598  	mi := &file_google_api_http_proto_msgTypes[2]
 599  	if protoimpl.UnsafeEnabled && x != nil {
 600  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 601  		if ms.LoadMessageInfo() == nil {
 602  			ms.StoreMessageInfo(mi)
 603  		}
 604  		return ms
 605  	}
 606  	return mi.MessageOf(x)
 607  }
 608  
 609  // Deprecated: Use CustomHttpPattern.ProtoReflect.Descriptor instead.
 610  func (*CustomHttpPattern) Descriptor() ([]byte, []int) {
 611  	return file_google_api_http_proto_rawDescGZIP(), []int{2}
 612  }
 613  
 614  func (x *CustomHttpPattern) GetKind() string {
 615  	if x != nil {
 616  		return x.Kind
 617  	}
 618  	return ""
 619  }
 620  
 621  func (x *CustomHttpPattern) GetPath() string {
 622  	if x != nil {
 623  		return x.Path
 624  	}
 625  	return ""
 626  }
 627  
 628  var File_google_api_http_proto protoreflect.FileDescriptor
 629  
 630  var file_google_api_http_proto_rawDesc = []byte{
 631  	0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74,
 632  	0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
 633  	0x61, 0x70, 0x69, 0x22, 0x79, 0x0a, 0x04, 0x48, 0x74, 0x74, 0x70, 0x12, 0x2a, 0x0a, 0x05, 0x72,
 634  	0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f,
 635  	0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65,
 636  	0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x66, 0x75, 0x6c, 0x6c, 0x79,
 637  	0x5f, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,
 638  	0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
 639  	0x52, 0x1c, 0x66, 0x75, 0x6c, 0x6c, 0x79, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73,
 640  	0x65, 0x72, 0x76, 0x65, 0x64, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xda,
 641  	0x02, 0x0a, 0x08, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73,
 642  	0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73,
 643  	0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x03, 0x67, 0x65, 0x74, 0x18, 0x02,
 644  	0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x70,
 645  	0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x70, 0x75, 0x74, 0x12,
 646  	0x14, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
 647  	0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18,
 648  	0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12,
 649  	0x16, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
 650  	0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f,
 651  	0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
 652  	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x74, 0x74, 0x70, 0x50,
 653  	0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d,
 654  	0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
 655  	0x62, 0x6f, 0x64, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
 656  	0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73,
 657  	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x45, 0x0a, 0x13, 0x61, 0x64, 0x64,
 658  	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
 659  	0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
 660  	0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x12, 0x61, 0x64,
 661  	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
 662  	0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x3b, 0x0a, 0x11, 0x43,
 663  	0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x74, 0x74, 0x70, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
 664  	0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
 665  	0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01,
 666  	0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x67, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e,
 667  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x09, 0x48, 0x74, 0x74, 0x70,
 668  	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
 669  	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72,
 670  	0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61,
 671  	0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x61,
 672  	0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x04, 0x47, 0x41, 0x50,
 673  	0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 674  }
 675  
 676  var (
 677  	file_google_api_http_proto_rawDescOnce sync.Once
 678  	file_google_api_http_proto_rawDescData = file_google_api_http_proto_rawDesc
 679  )
 680  
 681  func file_google_api_http_proto_rawDescGZIP() []byte {
 682  	file_google_api_http_proto_rawDescOnce.Do(func() {
 683  		file_google_api_http_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_api_http_proto_rawDescData)
 684  	})
 685  	return file_google_api_http_proto_rawDescData
 686  }
 687  
 688  var file_google_api_http_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
 689  var file_google_api_http_proto_goTypes = []interface{}{
 690  	(*Http)(nil),              // 0: google.api.Http
 691  	(*HttpRule)(nil),          // 1: google.api.HttpRule
 692  	(*CustomHttpPattern)(nil), // 2: google.api.CustomHttpPattern
 693  }
 694  var file_google_api_http_proto_depIdxs = []int32{
 695  	1, // 0: google.api.Http.rules:type_name -> google.api.HttpRule
 696  	2, // 1: google.api.HttpRule.custom:type_name -> google.api.CustomHttpPattern
 697  	1, // 2: google.api.HttpRule.additional_bindings:type_name -> google.api.HttpRule
 698  	3, // [3:3] is the sub-list for method output_type
 699  	3, // [3:3] is the sub-list for method input_type
 700  	3, // [3:3] is the sub-list for extension type_name
 701  	3, // [3:3] is the sub-list for extension extendee
 702  	0, // [0:3] is the sub-list for field type_name
 703  }
 704  
 705  func init() { file_google_api_http_proto_init() }
 706  func file_google_api_http_proto_init() {
 707  	if File_google_api_http_proto != nil {
 708  		return
 709  	}
 710  	if !protoimpl.UnsafeEnabled {
 711  		file_google_api_http_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 712  			switch v := v.(*Http); i {
 713  			case 0:
 714  				return &v.state
 715  			case 1:
 716  				return &v.sizeCache
 717  			case 2:
 718  				return &v.unknownFields
 719  			default:
 720  				return nil
 721  			}
 722  		}
 723  		file_google_api_http_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
 724  			switch v := v.(*HttpRule); i {
 725  			case 0:
 726  				return &v.state
 727  			case 1:
 728  				return &v.sizeCache
 729  			case 2:
 730  				return &v.unknownFields
 731  			default:
 732  				return nil
 733  			}
 734  		}
 735  		file_google_api_http_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
 736  			switch v := v.(*CustomHttpPattern); i {
 737  			case 0:
 738  				return &v.state
 739  			case 1:
 740  				return &v.sizeCache
 741  			case 2:
 742  				return &v.unknownFields
 743  			default:
 744  				return nil
 745  			}
 746  		}
 747  	}
 748  	file_google_api_http_proto_msgTypes[1].OneofWrappers = []interface{}{
 749  		(*HttpRule_Get)(nil),
 750  		(*HttpRule_Put)(nil),
 751  		(*HttpRule_Post)(nil),
 752  		(*HttpRule_Delete)(nil),
 753  		(*HttpRule_Patch)(nil),
 754  		(*HttpRule_Custom)(nil),
 755  	}
 756  	type x struct{}
 757  	out := protoimpl.TypeBuilder{
 758  		File: protoimpl.DescBuilder{
 759  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 760  			RawDescriptor: file_google_api_http_proto_rawDesc,
 761  			NumEnums:      0,
 762  			NumMessages:   3,
 763  			NumExtensions: 0,
 764  			NumServices:   0,
 765  		},
 766  		GoTypes:           file_google_api_http_proto_goTypes,
 767  		DependencyIndexes: file_google_api_http_proto_depIdxs,
 768  		MessageInfos:      file_google_api_http_proto_msgTypes,
 769  	}.Build()
 770  	File_google_api_http_proto = out.File
 771  	file_google_api_http_proto_rawDesc = nil
 772  	file_google_api_http_proto_goTypes = nil
 773  	file_google_api_http_proto_depIdxs = nil
 774  }
 775