1// Copyright 2020 Google LLC. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5// Code generated file. DO NOT EDIT. 6 7// Package servicenetworking provides access to the Service Networking API. 8// 9// For product documentation, see: https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started 10// 11// Creating a client 12// 13// Usage example: 14// 15// import "google.golang.org/api/servicenetworking/v1beta" 16// ... 17// ctx := context.Background() 18// servicenetworkingService, err := servicenetworking.NewService(ctx) 19// 20// In this example, Google Application Default Credentials are used for authentication. 21// 22// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials. 23// 24// Other authentication options 25// 26// By default, all available scopes (see "Constants") are used to authenticate. To restrict scopes, use option.WithScopes: 27// 28// servicenetworkingService, err := servicenetworking.NewService(ctx, option.WithScopes(servicenetworking.ServiceManagementScope)) 29// 30// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey: 31// 32// servicenetworkingService, err := servicenetworking.NewService(ctx, option.WithAPIKey("AIza...")) 33// 34// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource: 35// 36// config := &oauth2.Config{...} 37// // ... 38// token, err := config.Exchange(ctx, ...) 39// servicenetworkingService, err := servicenetworking.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token))) 40// 41// See https://godoc.org/google.golang.org/api/option/ for details on options. 42package servicenetworking // import "google.golang.org/api/servicenetworking/v1beta" 43 44import ( 45 "bytes" 46 "context" 47 "encoding/json" 48 "errors" 49 "fmt" 50 "io" 51 "net/http" 52 "net/url" 53 "strconv" 54 "strings" 55 56 googleapi "google.golang.org/api/googleapi" 57 gensupport "google.golang.org/api/internal/gensupport" 58 option "google.golang.org/api/option" 59 internaloption "google.golang.org/api/option/internaloption" 60 htransport "google.golang.org/api/transport/http" 61) 62 63// Always reference these packages, just in case the auto-generated code 64// below doesn't. 65var _ = bytes.NewBuffer 66var _ = strconv.Itoa 67var _ = fmt.Sprintf 68var _ = json.NewDecoder 69var _ = io.Copy 70var _ = url.Parse 71var _ = gensupport.MarshalJSON 72var _ = googleapi.Version 73var _ = errors.New 74var _ = strings.Replace 75var _ = context.Canceled 76var _ = internaloption.WithDefaultEndpoint 77 78const apiId = "servicenetworking:v1beta" 79const apiName = "servicenetworking" 80const apiVersion = "v1beta" 81const basePath = "https://servicenetworking.googleapis.com/" 82 83// OAuth2 scopes used by this API. 84const ( 85 // View and manage your data across Google Cloud Platform services 86 CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform" 87 88 // Manage your Google API service configuration 89 ServiceManagementScope = "https://www.googleapis.com/auth/service.management" 90) 91 92// NewService creates a new APIService. 93func NewService(ctx context.Context, opts ...option.ClientOption) (*APIService, error) { 94 scopesOption := option.WithScopes( 95 "https://www.googleapis.com/auth/cloud-platform", 96 "https://www.googleapis.com/auth/service.management", 97 ) 98 // NOTE: prepend, so we don't override user-specified scopes. 99 opts = append([]option.ClientOption{scopesOption}, opts...) 100 opts = append(opts, internaloption.WithDefaultEndpoint(basePath)) 101 client, endpoint, err := htransport.NewClient(ctx, opts...) 102 if err != nil { 103 return nil, err 104 } 105 s, err := New(client) 106 if err != nil { 107 return nil, err 108 } 109 if endpoint != "" { 110 s.BasePath = endpoint 111 } 112 return s, nil 113} 114 115// New creates a new APIService. It uses the provided http.Client for requests. 116// 117// Deprecated: please use NewService instead. 118// To provide a custom HTTP client, use option.WithHTTPClient. 119// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead. 120func New(client *http.Client) (*APIService, error) { 121 if client == nil { 122 return nil, errors.New("client is nil") 123 } 124 s := &APIService{client: client, BasePath: basePath} 125 s.Operations = NewOperationsService(s) 126 s.Services = NewServicesService(s) 127 return s, nil 128} 129 130type APIService struct { 131 client *http.Client 132 BasePath string // API endpoint base URL 133 UserAgent string // optional additional User-Agent fragment 134 135 Operations *OperationsService 136 137 Services *ServicesService 138} 139 140func (s *APIService) userAgent() string { 141 if s.UserAgent == "" { 142 return googleapi.UserAgent 143 } 144 return googleapi.UserAgent + " " + s.UserAgent 145} 146 147func NewOperationsService(s *APIService) *OperationsService { 148 rs := &OperationsService{s: s} 149 return rs 150} 151 152type OperationsService struct { 153 s *APIService 154} 155 156func NewServicesService(s *APIService) *ServicesService { 157 rs := &ServicesService{s: s} 158 rs.Connections = NewServicesConnectionsService(s) 159 return rs 160} 161 162type ServicesService struct { 163 s *APIService 164 165 Connections *ServicesConnectionsService 166} 167 168func NewServicesConnectionsService(s *APIService) *ServicesConnectionsService { 169 rs := &ServicesConnectionsService{s: s} 170 return rs 171} 172 173type ServicesConnectionsService struct { 174 s *APIService 175} 176 177// AddSubnetworkRequest: Request to create a subnetwork in a previously 178// peered service network. 179type AddSubnetworkRequest struct { 180 // Consumer: Required. A resource that represents the service consumer, 181 // such as 182 // `projects/123456`. The project number can be different from the 183 // value in the consumer network parameter. For example, the network 184 // might be 185 // part of a Shared VPC network. In those cases, Service Networking 186 // validates 187 // that this resource belongs to that Shared VPC. 188 Consumer string `json:"consumer,omitempty"` 189 190 // ConsumerNetwork: Required. The name of the service consumer's VPC 191 // network. The network 192 // must have an existing private connection that was provisioned through 193 // the 194 // connections.create method. The name must be in the following 195 // format: 196 // `projects/{project}/global/networks/{network}`, where {project} 197 // is a project number, such as `12345`. {network} is the name of a 198 // VPC network in the project. 199 ConsumerNetwork string `json:"consumerNetwork,omitempty"` 200 201 // Description: An optional description of the subnet. 202 Description string `json:"description,omitempty"` 203 204 // IpPrefixLength: Required. The prefix length of the subnet's IP 205 // address range. Use CIDR 206 // range notation, such as `30` to provision a subnet with 207 // an 208 // `x.x.x.x/30` CIDR range. The IP address range is drawn from a 209 // pool of available ranges in the service consumer's allocated range. 210 IpPrefixLength int64 `json:"ipPrefixLength,omitempty"` 211 212 // Region: Required. The name of a 213 // [region](/compute/docs/regions-zones) 214 // for the subnet, such `europe-west1`. 215 Region string `json:"region,omitempty"` 216 217 // RequestedAddress: Optional. The starting address of a range. The 218 // address must be a valid 219 // IPv4 address in the x.x.x.x format. This value combined with the IP 220 // prefix 221 // range is the CIDR range for the subnet. The range must be within 222 // the 223 // allocated range that is assigned to the private connection. If the 224 // CIDR 225 // range isn't available, the call fails. 226 RequestedAddress string `json:"requestedAddress,omitempty"` 227 228 // Subnetwork: Required. A name for the new subnet. For information 229 // about the naming 230 // requirements, see 231 // [subnetwork](/compute/docs/reference/rest/v1/subnetworks) 232 // in the Compute API documentation. 233 Subnetwork string `json:"subnetwork,omitempty"` 234 235 // SubnetworkUsers: A list of members that are granted the 236 // `compute.networkUser` 237 // role on the subnet. 238 SubnetworkUsers []string `json:"subnetworkUsers,omitempty"` 239 240 // ForceSendFields is a list of field names (e.g. "Consumer") to 241 // unconditionally include in API requests. By default, fields with 242 // empty values are omitted from API requests. However, any non-pointer, 243 // non-interface field appearing in ForceSendFields will be sent to the 244 // server regardless of whether the field is empty or not. This may be 245 // used to include empty fields in Patch requests. 246 ForceSendFields []string `json:"-"` 247 248 // NullFields is a list of field names (e.g. "Consumer") to include in 249 // API requests with the JSON null value. By default, fields with empty 250 // values are omitted from API requests. However, any field with an 251 // empty value appearing in NullFields will be sent to the server as 252 // null. It is an error if a field in this list has a non-empty value. 253 // This may be used to include null fields in Patch requests. 254 NullFields []string `json:"-"` 255} 256 257func (s *AddSubnetworkRequest) MarshalJSON() ([]byte, error) { 258 type NoMethod AddSubnetworkRequest 259 raw := NoMethod(*s) 260 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 261} 262 263// Api: Api is a light-weight descriptor for an API 264// Interface. 265// 266// Interfaces are also described as "protocol buffer services" in some 267// contexts, 268// such as by the "service" keyword in a .proto file, but they are 269// different 270// from API Services, which represent a concrete implementation of an 271// interface 272// as opposed to simply a description of methods and bindings. They are 273// also 274// sometimes simply referred to as "APIs" in other contexts, such as the 275// name of 276// this message itself. See 277// https://cloud.google.com/apis/design/glossary for 278// detailed terminology. 279type Api struct { 280 // Methods: The methods of this interface, in unspecified order. 281 Methods []*Method `json:"methods,omitempty"` 282 283 // Mixins: Included interfaces. See Mixin. 284 Mixins []*Mixin `json:"mixins,omitempty"` 285 286 // Name: The fully qualified name of this interface, including package 287 // name 288 // followed by the interface's simple name. 289 Name string `json:"name,omitempty"` 290 291 // Options: Any metadata attached to the interface. 292 Options []*Option `json:"options,omitempty"` 293 294 // SourceContext: Source context for the protocol buffer service 295 // represented by this 296 // message. 297 SourceContext *SourceContext `json:"sourceContext,omitempty"` 298 299 // Syntax: The source syntax of the service. 300 // 301 // Possible values: 302 // "SYNTAX_PROTO2" - Syntax `proto2`. 303 // "SYNTAX_PROTO3" - Syntax `proto3`. 304 Syntax string `json:"syntax,omitempty"` 305 306 // Version: A version string for this interface. If specified, must have 307 // the form 308 // `major-version.minor-version`, as in `1.10`. If the minor version 309 // is 310 // omitted, it defaults to zero. If the entire version field is empty, 311 // the 312 // major version is derived from the package name, as outlined below. If 313 // the 314 // field is not empty, the version in the package name will be verified 315 // to be 316 // consistent with what is provided here. 317 // 318 // The versioning schema uses [semantic 319 // versioning](http://semver.org) where the major version 320 // number 321 // indicates a breaking change and the minor version an 322 // additive, 323 // non-breaking change. Both version numbers are signals to users 324 // what to expect from different versions, and should be 325 // carefully 326 // chosen based on the product plan. 327 // 328 // The major version is also reflected in the package name of 329 // the 330 // interface, which must end in `v<major-version>`, as 331 // in 332 // `google.feature.v1`. For major versions 0 and 1, the suffix can 333 // be omitted. Zero major versions must only be used for 334 // experimental, non-GA interfaces. 335 // 336 Version string `json:"version,omitempty"` 337 338 // ForceSendFields is a list of field names (e.g. "Methods") to 339 // unconditionally include in API requests. By default, fields with 340 // empty values are omitted from API requests. However, any non-pointer, 341 // non-interface field appearing in ForceSendFields will be sent to the 342 // server regardless of whether the field is empty or not. This may be 343 // used to include empty fields in Patch requests. 344 ForceSendFields []string `json:"-"` 345 346 // NullFields is a list of field names (e.g. "Methods") to include in 347 // API requests with the JSON null value. By default, fields with empty 348 // values are omitted from API requests. However, any field with an 349 // empty value appearing in NullFields will be sent to the server as 350 // null. It is an error if a field in this list has a non-empty value. 351 // This may be used to include null fields in Patch requests. 352 NullFields []string `json:"-"` 353} 354 355func (s *Api) MarshalJSON() ([]byte, error) { 356 type NoMethod Api 357 raw := NoMethod(*s) 358 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 359} 360 361// AuthProvider: Configuration for an authentication provider, including 362// support for 363// [JSON Web 364// Token 365// (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-tok 366// en-32). 367type AuthProvider struct { 368 // Audiences: The list of 369 // JWT 370 // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web- 371 // token-32#section-4.1.3). 372 // that are allowed to access. A JWT containing any of these audiences 373 // will 374 // be accepted. When this setting is absent, only JWTs with 375 // audience 376 // "https://Service_name/API_name" 377 // will be accepted. For example, if no audiences are in the 378 // setting, 379 // LibraryService API will only accept JWTs with the following 380 // audience 381 // "https://library-example.googleapis.com/google.example.librar 382 // y.v1.LibraryService". 383 // 384 // Example: 385 // 386 // audiences: bookstore_android.apps.googleusercontent.com, 387 // bookstore_web.apps.googleusercontent.com 388 Audiences string `json:"audiences,omitempty"` 389 390 // AuthorizationUrl: Redirect URL if JWT token is required but not 391 // present or is expired. 392 // Implement authorizationUrl of securityDefinitions in OpenAPI spec. 393 AuthorizationUrl string `json:"authorizationUrl,omitempty"` 394 395 // Id: The unique identifier of the auth provider. It will be referred 396 // to by 397 // `AuthRequirement.provider_id`. 398 // 399 // Example: "bookstore_auth". 400 Id string `json:"id,omitempty"` 401 402 // Issuer: Identifies the principal that issued the JWT. 403 // See 404 // https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#sec 405 // tion-4.1.1 406 // Usually a URL or an email address. 407 // 408 // Example: https://securetoken.google.com 409 // Example: 1234567-compute@developer.gserviceaccount.com 410 Issuer string `json:"issuer,omitempty"` 411 412 // JwksUri: URL of the provider's public key set to validate signature 413 // of the JWT. 414 // See 415 // [OpenID 416 // Discovery](https://openid.net/specs/openid-connect-discove 417 // ry-1_0.html#ProviderMetadata). 418 // Optional if the key set document: 419 // - can be retrieved from 420 // [OpenID 421 // 422 // Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html 423 // of 424 // the issuer. 425 // - can be inferred from the email domain of the issuer (e.g. a 426 // Google 427 // service account). 428 // 429 // Example: https://www.googleapis.com/oauth2/v1/certs 430 JwksUri string `json:"jwksUri,omitempty"` 431 432 // JwtLocations: Defines the locations to extract the JWT. 433 // 434 // JWT locations can be either from HTTP headers or URL query 435 // parameters. 436 // The rule is that the first match wins. The checking order is: 437 // checking 438 // all headers first, then URL query parameters. 439 // 440 // If not specified, default to use following 3 locations: 441 // 1) Authorization: Bearer 442 // 2) x-goog-iap-jwt-assertion 443 // 3) access_token query parameter 444 // 445 // Default locations can be specified as followings: 446 // jwt_locations: 447 // - header: Authorization 448 // value_prefix: "Bearer " 449 // - header: x-goog-iap-jwt-assertion 450 // - query: access_token 451 JwtLocations []*JwtLocation `json:"jwtLocations,omitempty"` 452 453 // ForceSendFields is a list of field names (e.g. "Audiences") to 454 // unconditionally include in API requests. By default, fields with 455 // empty values are omitted from API requests. However, any non-pointer, 456 // non-interface field appearing in ForceSendFields will be sent to the 457 // server regardless of whether the field is empty or not. This may be 458 // used to include empty fields in Patch requests. 459 ForceSendFields []string `json:"-"` 460 461 // NullFields is a list of field names (e.g. "Audiences") to include in 462 // API requests with the JSON null value. By default, fields with empty 463 // values are omitted from API requests. However, any field with an 464 // empty value appearing in NullFields will be sent to the server as 465 // null. It is an error if a field in this list has a non-empty value. 466 // This may be used to include null fields in Patch requests. 467 NullFields []string `json:"-"` 468} 469 470func (s *AuthProvider) MarshalJSON() ([]byte, error) { 471 type NoMethod AuthProvider 472 raw := NoMethod(*s) 473 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 474} 475 476// AuthRequirement: User-defined authentication requirements, including 477// support for 478// [JSON Web 479// Token 480// (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-tok 481// en-32). 482type AuthRequirement struct { 483 // Audiences: NOTE: This will be deprecated soon, once 484 // AuthProvider.audiences is 485 // implemented and accepted in all the runtime components. 486 // 487 // The list of 488 // JWT 489 // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web- 490 // token-32#section-4.1.3). 491 // that are allowed to access. A JWT containing any of these audiences 492 // will 493 // be accepted. When this setting is absent, only JWTs with 494 // audience 495 // "https://Service_name/API_name" 496 // will be accepted. For example, if no audiences are in the 497 // setting, 498 // LibraryService API will only accept JWTs with the following 499 // audience 500 // "https://library-example.googleapis.com/google.example.librar 501 // y.v1.LibraryService". 502 // 503 // Example: 504 // 505 // audiences: bookstore_android.apps.googleusercontent.com, 506 // bookstore_web.apps.googleusercontent.com 507 Audiences string `json:"audiences,omitempty"` 508 509 // ProviderId: id from authentication provider. 510 // 511 // Example: 512 // 513 // provider_id: bookstore_auth 514 ProviderId string `json:"providerId,omitempty"` 515 516 // ForceSendFields is a list of field names (e.g. "Audiences") to 517 // unconditionally include in API requests. By default, fields with 518 // empty values are omitted from API requests. However, any non-pointer, 519 // non-interface field appearing in ForceSendFields will be sent to the 520 // server regardless of whether the field is empty or not. This may be 521 // used to include empty fields in Patch requests. 522 ForceSendFields []string `json:"-"` 523 524 // NullFields is a list of field names (e.g. "Audiences") to include in 525 // API requests with the JSON null value. By default, fields with empty 526 // values are omitted from API requests. However, any field with an 527 // empty value appearing in NullFields will be sent to the server as 528 // null. It is an error if a field in this list has a non-empty value. 529 // This may be used to include null fields in Patch requests. 530 NullFields []string `json:"-"` 531} 532 533func (s *AuthRequirement) MarshalJSON() ([]byte, error) { 534 type NoMethod AuthRequirement 535 raw := NoMethod(*s) 536 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 537} 538 539// Authentication: `Authentication` defines the authentication 540// configuration for an API. 541// 542// Example for an API targeted for external use: 543// 544// name: calendar.googleapis.com 545// authentication: 546// providers: 547// - id: google_calendar_auth 548// jwks_uri: https://www.googleapis.com/oauth2/v1/certs 549// issuer: https://securetoken.google.com 550// rules: 551// - selector: "*" 552// requirements: 553// provider_id: google_calendar_auth 554type Authentication struct { 555 // Providers: Defines a set of authentication providers that a service 556 // supports. 557 Providers []*AuthProvider `json:"providers,omitempty"` 558 559 // Rules: A list of authentication rules that apply to individual API 560 // methods. 561 // 562 // **NOTE:** All service configuration rules follow "last one wins" 563 // order. 564 Rules []*AuthenticationRule `json:"rules,omitempty"` 565 566 // ForceSendFields is a list of field names (e.g. "Providers") to 567 // unconditionally include in API requests. By default, fields with 568 // empty values are omitted from API requests. However, any non-pointer, 569 // non-interface field appearing in ForceSendFields will be sent to the 570 // server regardless of whether the field is empty or not. This may be 571 // used to include empty fields in Patch requests. 572 ForceSendFields []string `json:"-"` 573 574 // NullFields is a list of field names (e.g. "Providers") to include in 575 // API requests with the JSON null value. By default, fields with empty 576 // values are omitted from API requests. However, any field with an 577 // empty value appearing in NullFields will be sent to the server as 578 // null. It is an error if a field in this list has a non-empty value. 579 // This may be used to include null fields in Patch requests. 580 NullFields []string `json:"-"` 581} 582 583func (s *Authentication) MarshalJSON() ([]byte, error) { 584 type NoMethod Authentication 585 raw := NoMethod(*s) 586 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 587} 588 589// AuthenticationRule: Authentication rules for the service. 590// 591// By default, if a method has any authentication requirements, every 592// request 593// must include a valid credential matching one of the 594// requirements. 595// It's an error to include more than one kind of credential in a 596// single 597// request. 598// 599// If a method doesn't have any auth requirements, request credentials 600// will be 601// ignored. 602type AuthenticationRule struct { 603 // AllowWithoutCredential: If true, the service accepts API keys without 604 // any other credential. 605 AllowWithoutCredential bool `json:"allowWithoutCredential,omitempty"` 606 607 // Oauth: The requirements for OAuth credentials. 608 Oauth *OAuthRequirements `json:"oauth,omitempty"` 609 610 // Requirements: Requirements for additional authentication providers. 611 Requirements []*AuthRequirement `json:"requirements,omitempty"` 612 613 // Selector: Selects the methods to which this rule applies. 614 // 615 // Refer to selector for syntax details. 616 Selector string `json:"selector,omitempty"` 617 618 // ForceSendFields is a list of field names (e.g. 619 // "AllowWithoutCredential") to unconditionally include in API requests. 620 // By default, fields with empty values are omitted from API requests. 621 // However, any non-pointer, non-interface field appearing in 622 // ForceSendFields will be sent to the server regardless of whether the 623 // field is empty or not. This may be used to include empty fields in 624 // Patch requests. 625 ForceSendFields []string `json:"-"` 626 627 // NullFields is a list of field names (e.g. "AllowWithoutCredential") 628 // to include in API requests with the JSON null value. By default, 629 // fields with empty values are omitted from API requests. However, any 630 // field with an empty value appearing in NullFields will be sent to the 631 // server as null. It is an error if a field in this list has a 632 // non-empty value. This may be used to include null fields in Patch 633 // requests. 634 NullFields []string `json:"-"` 635} 636 637func (s *AuthenticationRule) MarshalJSON() ([]byte, error) { 638 type NoMethod AuthenticationRule 639 raw := NoMethod(*s) 640 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 641} 642 643// Backend: `Backend` defines the backend configuration for a service. 644type Backend struct { 645 // Rules: A list of API backend rules that apply to individual API 646 // methods. 647 // 648 // **NOTE:** All service configuration rules follow "last one wins" 649 // order. 650 Rules []*BackendRule `json:"rules,omitempty"` 651 652 // ForceSendFields is a list of field names (e.g. "Rules") to 653 // unconditionally include in API requests. By default, fields with 654 // empty values are omitted from API requests. However, any non-pointer, 655 // non-interface field appearing in ForceSendFields will be sent to the 656 // server regardless of whether the field is empty or not. This may be 657 // used to include empty fields in Patch requests. 658 ForceSendFields []string `json:"-"` 659 660 // NullFields is a list of field names (e.g. "Rules") to include in API 661 // requests with the JSON null value. By default, fields with empty 662 // values are omitted from API requests. However, any field with an 663 // empty value appearing in NullFields will be sent to the server as 664 // null. It is an error if a field in this list has a non-empty value. 665 // This may be used to include null fields in Patch requests. 666 NullFields []string `json:"-"` 667} 668 669func (s *Backend) MarshalJSON() ([]byte, error) { 670 type NoMethod Backend 671 raw := NoMethod(*s) 672 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 673} 674 675// BackendRule: A backend rule provides configuration for an individual 676// API element. 677type BackendRule struct { 678 // Address: The address of the API backend. 679 // 680 // The scheme is used to determine the backend protocol and 681 // security. 682 // The following schemes are accepted: 683 // 684 // SCHEME PROTOCOL SECURITY 685 // http:// HTTP None 686 // https:// HTTP TLS 687 // grpc:// gRPC None 688 // grpcs:// gRPC TLS 689 // 690 // It is recommended to explicitly include a scheme. Leaving out the 691 // scheme 692 // may cause constrasting behaviors across platforms. 693 // 694 // If the port is unspecified, the default is: 695 // - 80 for schemes without TLS 696 // - 443 for schemes with TLS 697 // 698 // For HTTP backends, use protocol 699 // to specify the protocol version. 700 Address string `json:"address,omitempty"` 701 702 // Deadline: The number of seconds to wait for a response from a 703 // request. The default 704 // varies based on the request protocol and deployment environment. 705 Deadline float64 `json:"deadline,omitempty"` 706 707 // DisableAuth: When disable_auth is true, a JWT ID token won't be 708 // generated and the 709 // original "Authorization" HTTP header will be preserved. If the header 710 // is 711 // used to carry the original token and is expected by the backend, 712 // this 713 // field must be set to true to preserve the header. 714 DisableAuth bool `json:"disableAuth,omitempty"` 715 716 // JwtAudience: The JWT audience is used when generating a JWT ID token 717 // for the backend. 718 // This ID token will be added in the HTTP "authorization" header, and 719 // sent 720 // to the backend. 721 JwtAudience string `json:"jwtAudience,omitempty"` 722 723 // MinDeadline: Minimum deadline in seconds needed for this method. 724 // Calls having deadline 725 // value lower than this will be rejected. 726 MinDeadline float64 `json:"minDeadline,omitempty"` 727 728 // OperationDeadline: The number of seconds to wait for the completion 729 // of a long running 730 // operation. The default is no deadline. 731 OperationDeadline float64 `json:"operationDeadline,omitempty"` 732 733 // Possible values: 734 // "PATH_TRANSLATION_UNSPECIFIED" 735 // "CONSTANT_ADDRESS" - Use the backend address as-is, with no 736 // modification to the path. If the 737 // URL pattern contains variables, the variable names and values will 738 // be 739 // appended to the query string. If a query string parameter and a 740 // URL 741 // pattern variable have the same name, this may result in duplicate 742 // keys in 743 // the query string. 744 // 745 // # Examples 746 // 747 // Given the following operation config: 748 // 749 // Method path: /api/company/{cid}/user/{uid} 750 // Backend address: 751 // https://example.cloudfunctions.net/getUser 752 // 753 // Requests to the following request paths will call the backend at 754 // the 755 // translated path: 756 // 757 // Request path: /api/company/widgetworks/user/johndoe 758 // Translated: 759 // 760 // https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe 761 // 762 // Request path: /api/company/widgetworks/user/johndoe?timezone=EST 763 // Translated: 764 // 765 // https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe 766 // "APPEND_PATH_TO_ADDRESS" - The request path will be appended to the 767 // backend address. 768 // 769 // # Examples 770 // 771 // Given the following operation config: 772 // 773 // Method path: /api/company/{cid}/user/{uid} 774 // Backend address: https://example.appspot.com 775 // 776 // Requests to the following request paths will call the backend at 777 // the 778 // translated path: 779 // 780 // Request path: /api/company/widgetworks/user/johndoe 781 // Translated: 782 // 783 // https://example.appspot.com/api/company/widgetworks/user/johndoe 784 // 785 // Request path: /api/company/widgetworks/user/johndoe?timezone=EST 786 // Translated: 787 // 788 // https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST 789 PathTranslation string `json:"pathTranslation,omitempty"` 790 791 // Protocol: The protocol used for sending a request to the backend. 792 // The supported values are "http/1.1" and "h2". 793 // 794 // The default value is inferred from the scheme in the 795 // address field: 796 // 797 // SCHEME PROTOCOL 798 // http:// http/1.1 799 // https:// http/1.1 800 // grpc:// h2 801 // grpcs:// h2 802 // 803 // For secure HTTP backends (https://) that support HTTP/2, set this 804 // field 805 // to "h2" for improved performance. 806 // 807 // Configuring this field to non-default values is only supported for 808 // secure 809 // HTTP backends. This field will be ignored for all other 810 // backends. 811 // 812 // See 813 // https://www.iana.org/assignments/tls-extensiontype-valu 814 // es/tls-extensiontype-values.xhtml#alpn-protocol-ids 815 // for more details on the supported values. 816 Protocol string `json:"protocol,omitempty"` 817 818 // Selector: Selects the methods to which this rule applies. 819 // 820 // Refer to selector for syntax details. 821 Selector string `json:"selector,omitempty"` 822 823 // ForceSendFields is a list of field names (e.g. "Address") to 824 // unconditionally include in API requests. By default, fields with 825 // empty values are omitted from API requests. However, any non-pointer, 826 // non-interface field appearing in ForceSendFields will be sent to the 827 // server regardless of whether the field is empty or not. This may be 828 // used to include empty fields in Patch requests. 829 ForceSendFields []string `json:"-"` 830 831 // NullFields is a list of field names (e.g. "Address") to include in 832 // API requests with the JSON null value. By default, fields with empty 833 // values are omitted from API requests. However, any field with an 834 // empty value appearing in NullFields will be sent to the server as 835 // null. It is an error if a field in this list has a non-empty value. 836 // This may be used to include null fields in Patch requests. 837 NullFields []string `json:"-"` 838} 839 840func (s *BackendRule) MarshalJSON() ([]byte, error) { 841 type NoMethod BackendRule 842 raw := NoMethod(*s) 843 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 844} 845 846func (s *BackendRule) UnmarshalJSON(data []byte) error { 847 type NoMethod BackendRule 848 var s1 struct { 849 Deadline gensupport.JSONFloat64 `json:"deadline"` 850 MinDeadline gensupport.JSONFloat64 `json:"minDeadline"` 851 OperationDeadline gensupport.JSONFloat64 `json:"operationDeadline"` 852 *NoMethod 853 } 854 s1.NoMethod = (*NoMethod)(s) 855 if err := json.Unmarshal(data, &s1); err != nil { 856 return err 857 } 858 s.Deadline = float64(s1.Deadline) 859 s.MinDeadline = float64(s1.MinDeadline) 860 s.OperationDeadline = float64(s1.OperationDeadline) 861 return nil 862} 863 864// Billing: Billing related configuration of the service. 865// 866// The following example shows how to configure monitored resources and 867// metrics 868// for billing: 869// 870// monitored_resources: 871// - type: library.googleapis.com/branch 872// labels: 873// - key: /city 874// description: The city where the library branch is located 875// in. 876// - key: /name 877// description: The name of the branch. 878// metrics: 879// - name: library.googleapis.com/book/borrowed_count 880// metric_kind: DELTA 881// value_type: INT64 882// billing: 883// consumer_destinations: 884// - monitored_resource: library.googleapis.com/branch 885// metrics: 886// - library.googleapis.com/book/borrowed_count 887type Billing struct { 888 // ConsumerDestinations: Billing configurations for sending metrics to 889 // the consumer project. 890 // There can be multiple consumer destinations per service, each one 891 // must have 892 // a different monitored resource type. A metric can be used in at 893 // most 894 // one consumer destination. 895 ConsumerDestinations []*BillingDestination `json:"consumerDestinations,omitempty"` 896 897 // ForceSendFields is a list of field names (e.g. 898 // "ConsumerDestinations") to unconditionally include in API requests. 899 // By default, fields with empty values are omitted from API requests. 900 // However, any non-pointer, non-interface field appearing in 901 // ForceSendFields will be sent to the server regardless of whether the 902 // field is empty or not. This may be used to include empty fields in 903 // Patch requests. 904 ForceSendFields []string `json:"-"` 905 906 // NullFields is a list of field names (e.g. "ConsumerDestinations") to 907 // include in API requests with the JSON null value. By default, fields 908 // with empty values are omitted from API requests. However, any field 909 // with an empty value appearing in NullFields will be sent to the 910 // server as null. It is an error if a field in this list has a 911 // non-empty value. This may be used to include null fields in Patch 912 // requests. 913 NullFields []string `json:"-"` 914} 915 916func (s *Billing) MarshalJSON() ([]byte, error) { 917 type NoMethod Billing 918 raw := NoMethod(*s) 919 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 920} 921 922// BillingDestination: Configuration of a specific billing destination 923// (Currently only support 924// bill against consumer project). 925type BillingDestination struct { 926 // Metrics: Names of the metrics to report to this billing 927 // destination. 928 // Each name must be defined in Service.metrics section. 929 Metrics []string `json:"metrics,omitempty"` 930 931 // MonitoredResource: The monitored resource type. The type must be 932 // defined in 933 // Service.monitored_resources section. 934 MonitoredResource string `json:"monitoredResource,omitempty"` 935 936 // ForceSendFields is a list of field names (e.g. "Metrics") to 937 // unconditionally include in API requests. By default, fields with 938 // empty values are omitted from API requests. However, any non-pointer, 939 // non-interface field appearing in ForceSendFields will be sent to the 940 // server regardless of whether the field is empty or not. This may be 941 // used to include empty fields in Patch requests. 942 ForceSendFields []string `json:"-"` 943 944 // NullFields is a list of field names (e.g. "Metrics") to include in 945 // API requests with the JSON null value. By default, fields with empty 946 // values are omitted from API requests. However, any field with an 947 // empty value appearing in NullFields will be sent to the server as 948 // null. It is an error if a field in this list has a non-empty value. 949 // This may be used to include null fields in Patch requests. 950 NullFields []string `json:"-"` 951} 952 953func (s *BillingDestination) MarshalJSON() ([]byte, error) { 954 type NoMethod BillingDestination 955 raw := NoMethod(*s) 956 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 957} 958 959// Connection: Represents a private connection resource. A private 960// connection is implemented 961// as a VPC Network Peering connection between a service producer's VPC 962// network 963// and a service consumer's VPC network. 964type Connection struct { 965 // Network: The name of service consumer's VPC network that's connected 966 // with service 967 // producer network, in the following 968 // format: 969 // `projects/{project}/global/networks/{network}`. 970 // `{project}` is a project number, such as in `12345` that includes 971 // the VPC service consumer's VPC network. `{network}` is the name of 972 // the 973 // service consumer's VPC network. 974 Network string `json:"network,omitempty"` 975 976 // Peering: Output only. The name of the VPC Network Peering connection 977 // that was created by the 978 // service producer. 979 Peering string `json:"peering,omitempty"` 980 981 // ReservedPeeringRanges: The name of one or more allocated IP address 982 // ranges for this service 983 // producer of type `PEERING`. 984 // Note that invoking this method with a different range when connection 985 // is 986 // already established will not modify already provisioned 987 // service 988 // producer subnetworks. 989 ReservedPeeringRanges []string `json:"reservedPeeringRanges,omitempty"` 990 991 // Service: Output only. The name of the peering service that's 992 // associated with this connection, in 993 // the following format: `services/{service name}`. 994 Service string `json:"service,omitempty"` 995 996 // ForceSendFields is a list of field names (e.g. "Network") to 997 // unconditionally include in API requests. By default, fields with 998 // empty values are omitted from API requests. However, any non-pointer, 999 // non-interface field appearing in ForceSendFields will be sent to the 1000 // server regardless of whether the field is empty or not. This may be 1001 // used to include empty fields in Patch requests. 1002 ForceSendFields []string `json:"-"` 1003 1004 // NullFields is a list of field names (e.g. "Network") to include in 1005 // API requests with the JSON null value. By default, fields with empty 1006 // values are omitted from API requests. However, any field with an 1007 // empty value appearing in NullFields will be sent to the server as 1008 // null. It is an error if a field in this list has a non-empty value. 1009 // This may be used to include null fields in Patch requests. 1010 NullFields []string `json:"-"` 1011} 1012 1013func (s *Connection) MarshalJSON() ([]byte, error) { 1014 type NoMethod Connection 1015 raw := NoMethod(*s) 1016 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1017} 1018 1019// Context: `Context` defines which contexts an API 1020// requests. 1021// 1022// Example: 1023// 1024// context: 1025// rules: 1026// - selector: "*" 1027// requested: 1028// - google.rpc.context.ProjectContext 1029// - google.rpc.context.OriginContext 1030// 1031// The above specifies that all methods in the API 1032// request 1033// `google.rpc.context.ProjectContext` 1034// and 1035// `google.rpc.context.OriginContext`. 1036// 1037// Available context types are defined in 1038// package 1039// `google.rpc.context`. 1040// 1041// This also provides mechanism to whitelist any protobuf message 1042// extension that 1043// can be sent in grpc metadata using 1044// “x-goog-ext-<extension_id>-bin” 1045// and 1046// “x-goog-ext-<extension_id>-jspb” format. For example, list any 1047// service 1048// specific protobuf types that can appear in grpc metadata as follows 1049// in your 1050// yaml file: 1051// 1052// Example: 1053// 1054// context: 1055// rules: 1056// - selector: 1057// "google.example.library.v1.LibraryService.CreateBook" 1058// allowed_request_extensions: 1059// - google.foo.v1.NewExtension 1060// allowed_response_extensions: 1061// - google.foo.v1.NewExtension 1062// 1063// You can also specify extension ID instead of fully qualified 1064// extension name 1065// here. 1066type Context struct { 1067 // Rules: A list of RPC context rules that apply to individual API 1068 // methods. 1069 // 1070 // **NOTE:** All service configuration rules follow "last one wins" 1071 // order. 1072 Rules []*ContextRule `json:"rules,omitempty"` 1073 1074 // ForceSendFields is a list of field names (e.g. "Rules") to 1075 // unconditionally include in API requests. By default, fields with 1076 // empty values are omitted from API requests. However, any non-pointer, 1077 // non-interface field appearing in ForceSendFields will be sent to the 1078 // server regardless of whether the field is empty or not. This may be 1079 // used to include empty fields in Patch requests. 1080 ForceSendFields []string `json:"-"` 1081 1082 // NullFields is a list of field names (e.g. "Rules") to include in API 1083 // requests with the JSON null value. By default, fields with empty 1084 // values are omitted from API requests. However, any field with an 1085 // empty value appearing in NullFields will be sent to the server as 1086 // null. It is an error if a field in this list has a non-empty value. 1087 // This may be used to include null fields in Patch requests. 1088 NullFields []string `json:"-"` 1089} 1090 1091func (s *Context) MarshalJSON() ([]byte, error) { 1092 type NoMethod Context 1093 raw := NoMethod(*s) 1094 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1095} 1096 1097// ContextRule: A context rule provides information about the context 1098// for an individual API 1099// element. 1100type ContextRule struct { 1101 // AllowedRequestExtensions: A list of full type names or extension IDs 1102 // of extensions allowed in grpc 1103 // side channel from client to backend. 1104 AllowedRequestExtensions []string `json:"allowedRequestExtensions,omitempty"` 1105 1106 // AllowedResponseExtensions: A list of full type names or extension IDs 1107 // of extensions allowed in grpc 1108 // side channel from backend to client. 1109 AllowedResponseExtensions []string `json:"allowedResponseExtensions,omitempty"` 1110 1111 // Provided: A list of full type names of provided contexts. 1112 Provided []string `json:"provided,omitempty"` 1113 1114 // Requested: A list of full type names of requested contexts. 1115 Requested []string `json:"requested,omitempty"` 1116 1117 // Selector: Selects the methods to which this rule applies. 1118 // 1119 // Refer to selector for syntax details. 1120 Selector string `json:"selector,omitempty"` 1121 1122 // ForceSendFields is a list of field names (e.g. 1123 // "AllowedRequestExtensions") to unconditionally include in API 1124 // requests. By default, fields with empty values are omitted from API 1125 // requests. However, any non-pointer, non-interface field appearing in 1126 // ForceSendFields will be sent to the server regardless of whether the 1127 // field is empty or not. This may be used to include empty fields in 1128 // Patch requests. 1129 ForceSendFields []string `json:"-"` 1130 1131 // NullFields is a list of field names (e.g. "AllowedRequestExtensions") 1132 // to include in API requests with the JSON null value. By default, 1133 // fields with empty values are omitted from API requests. However, any 1134 // field with an empty value appearing in NullFields will be sent to the 1135 // server as null. It is an error if a field in this list has a 1136 // non-empty value. This may be used to include null fields in Patch 1137 // requests. 1138 NullFields []string `json:"-"` 1139} 1140 1141func (s *ContextRule) MarshalJSON() ([]byte, error) { 1142 type NoMethod ContextRule 1143 raw := NoMethod(*s) 1144 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1145} 1146 1147// Control: Selects and configures the service controller used by the 1148// service. The 1149// service controller handles features like abuse, quota, billing, 1150// logging, 1151// monitoring, etc. 1152type Control struct { 1153 // Environment: The service control environment to use. If empty, no 1154 // control plane 1155 // feature (like quota and billing) will be enabled. 1156 Environment string `json:"environment,omitempty"` 1157 1158 // ForceSendFields is a list of field names (e.g. "Environment") to 1159 // unconditionally include in API requests. By default, fields with 1160 // empty values are omitted from API requests. However, any non-pointer, 1161 // non-interface field appearing in ForceSendFields will be sent to the 1162 // server regardless of whether the field is empty or not. This may be 1163 // used to include empty fields in Patch requests. 1164 ForceSendFields []string `json:"-"` 1165 1166 // NullFields is a list of field names (e.g. "Environment") to include 1167 // in API requests with the JSON null value. By default, fields with 1168 // empty values are omitted from API requests. However, any field with 1169 // an empty value appearing in NullFields will be sent to the server as 1170 // null. It is an error if a field in this list has a non-empty value. 1171 // This may be used to include null fields in Patch requests. 1172 NullFields []string `json:"-"` 1173} 1174 1175func (s *Control) MarshalJSON() ([]byte, error) { 1176 type NoMethod Control 1177 raw := NoMethod(*s) 1178 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1179} 1180 1181// CustomError: Customize service error responses. For example, list 1182// any service 1183// specific protobuf types that can appear in error detail lists 1184// of 1185// error responses. 1186// 1187// Example: 1188// 1189// custom_error: 1190// types: 1191// - google.foo.v1.CustomError 1192// - google.foo.v1.AnotherError 1193type CustomError struct { 1194 // Rules: The list of custom error rules that apply to individual API 1195 // messages. 1196 // 1197 // **NOTE:** All service configuration rules follow "last one wins" 1198 // order. 1199 Rules []*CustomErrorRule `json:"rules,omitempty"` 1200 1201 // Types: The list of custom error detail types, e.g. 1202 // 'google.foo.v1.CustomError'. 1203 Types []string `json:"types,omitempty"` 1204 1205 // ForceSendFields is a list of field names (e.g. "Rules") to 1206 // unconditionally include in API requests. By default, fields with 1207 // empty values are omitted from API requests. However, any non-pointer, 1208 // non-interface field appearing in ForceSendFields will be sent to the 1209 // server regardless of whether the field is empty or not. This may be 1210 // used to include empty fields in Patch requests. 1211 ForceSendFields []string `json:"-"` 1212 1213 // NullFields is a list of field names (e.g. "Rules") to include in API 1214 // requests with the JSON null value. By default, fields with empty 1215 // values are omitted from API requests. However, any field with an 1216 // empty value appearing in NullFields will be sent to the server as 1217 // null. It is an error if a field in this list has a non-empty value. 1218 // This may be used to include null fields in Patch requests. 1219 NullFields []string `json:"-"` 1220} 1221 1222func (s *CustomError) MarshalJSON() ([]byte, error) { 1223 type NoMethod CustomError 1224 raw := NoMethod(*s) 1225 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1226} 1227 1228// CustomErrorRule: A custom error rule. 1229type CustomErrorRule struct { 1230 // IsErrorType: Mark this message as possible payload in error response. 1231 // Otherwise, 1232 // objects of this type will be filtered when they appear in error 1233 // payload. 1234 IsErrorType bool `json:"isErrorType,omitempty"` 1235 1236 // Selector: Selects messages to which this rule applies. 1237 // 1238 // Refer to selector for syntax details. 1239 Selector string `json:"selector,omitempty"` 1240 1241 // ForceSendFields is a list of field names (e.g. "IsErrorType") to 1242 // unconditionally include in API requests. By default, fields with 1243 // empty values are omitted from API requests. However, any non-pointer, 1244 // non-interface field appearing in ForceSendFields will be sent to the 1245 // server regardless of whether the field is empty or not. This may be 1246 // used to include empty fields in Patch requests. 1247 ForceSendFields []string `json:"-"` 1248 1249 // NullFields is a list of field names (e.g. "IsErrorType") to include 1250 // in API requests with the JSON null value. By default, fields with 1251 // empty values are omitted from API requests. However, any field with 1252 // an empty value appearing in NullFields will be sent to the server as 1253 // null. It is an error if a field in this list has a non-empty value. 1254 // This may be used to include null fields in Patch requests. 1255 NullFields []string `json:"-"` 1256} 1257 1258func (s *CustomErrorRule) MarshalJSON() ([]byte, error) { 1259 type NoMethod CustomErrorRule 1260 raw := NoMethod(*s) 1261 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1262} 1263 1264// CustomHttpPattern: A custom pattern is used for defining custom HTTP 1265// verb. 1266type CustomHttpPattern struct { 1267 // Kind: The name of this custom HTTP verb. 1268 Kind string `json:"kind,omitempty"` 1269 1270 // Path: The path matched by this custom verb. 1271 Path string `json:"path,omitempty"` 1272 1273 // ForceSendFields is a list of field names (e.g. "Kind") to 1274 // unconditionally include in API requests. By default, fields with 1275 // empty values are omitted from API requests. However, any non-pointer, 1276 // non-interface field appearing in ForceSendFields will be sent to the 1277 // server regardless of whether the field is empty or not. This may be 1278 // used to include empty fields in Patch requests. 1279 ForceSendFields []string `json:"-"` 1280 1281 // NullFields is a list of field names (e.g. "Kind") to include in API 1282 // requests with the JSON null value. By default, fields with empty 1283 // values are omitted from API requests. However, any field with an 1284 // empty value appearing in NullFields will be sent to the server as 1285 // null. It is an error if a field in this list has a non-empty value. 1286 // This may be used to include null fields in Patch requests. 1287 NullFields []string `json:"-"` 1288} 1289 1290func (s *CustomHttpPattern) MarshalJSON() ([]byte, error) { 1291 type NoMethod CustomHttpPattern 1292 raw := NoMethod(*s) 1293 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1294} 1295 1296// Documentation: `Documentation` provides the information for 1297// describing a service. 1298// 1299// Example: 1300// <pre><code>documentation: 1301// summary: > 1302// The Google Calendar API gives access 1303// to most calendar features. 1304// pages: 1305// - name: Overview 1306// content: (== include google/foo/overview.md ==) 1307// - name: Tutorial 1308// content: (== include google/foo/tutorial.md ==) 1309// subpages; 1310// - name: Java 1311// content: (== include google/foo/tutorial_java.md ==) 1312// rules: 1313// - selector: google.calendar.Calendar.Get 1314// description: > 1315// ... 1316// - selector: google.calendar.Calendar.Put 1317// description: > 1318// ... 1319// </code></pre> 1320// Documentation is provided in markdown syntax. In addition to 1321// standard markdown features, definition lists, tables and fenced 1322// code blocks are supported. Section headers can be provided and 1323// are 1324// interpreted relative to the section nesting of the context where 1325// a documentation fragment is embedded. 1326// 1327// Documentation from the IDL is merged with documentation defined 1328// via the config at normalization time, where documentation provided 1329// by config rules overrides IDL provided. 1330// 1331// A number of constructs specific to the API platform are supported 1332// in documentation text. 1333// 1334// In order to reference a proto element, the following 1335// notation can be 1336// used: 1337// <pre><code>[fully.qualified.proto.name][]</code></pre> 1338// T 1339// o override the display text used for the link, this can be 1340// used: 1341// <pre><code>[display 1342// text][fully.qualified.proto.name]</code></pre> 1343// Text can be excluded from doc using the following 1344// notation: 1345// <pre><code>(-- internal comment --)</code></pre> 1346// 1347// A few directives are available in documentation. Note that 1348// directives must appear on a single line to be properly 1349// identified. The `include` directive includes a markdown file from 1350// an external source: 1351// <pre><code>(== include path/to/file ==)</code></pre> 1352// The `resource_for` directive marks a message to be the resource of 1353// a collection in REST view. If it is not specified, tools attempt 1354// to infer the resource from the operations in a 1355// collection: 1356// <pre><code>(== resource_for v1.shelves.books 1357// ==)</code></pre> 1358// The directive `suppress_warning` does not directly affect 1359// documentation 1360// and is documented together with service config validation. 1361type Documentation struct { 1362 // DocumentationRootUrl: The URL to the root of documentation. 1363 DocumentationRootUrl string `json:"documentationRootUrl,omitempty"` 1364 1365 // Overview: Declares a single overview page. For 1366 // example: 1367 // <pre><code>documentation: 1368 // summary: ... 1369 // overview: (== include overview.md ==) 1370 // </code></pre> 1371 // This is a shortcut for the following declaration (using pages 1372 // style): 1373 // <pre><code>documentation: 1374 // summary: ... 1375 // pages: 1376 // - name: Overview 1377 // content: (== include overview.md ==) 1378 // </code></pre> 1379 // Note: you cannot specify both `overview` field and `pages` field. 1380 Overview string `json:"overview,omitempty"` 1381 1382 // Pages: The top level pages for the documentation set. 1383 Pages []*Page `json:"pages,omitempty"` 1384 1385 // Rules: A list of documentation rules that apply to individual API 1386 // elements. 1387 // 1388 // **NOTE:** All service configuration rules follow "last one wins" 1389 // order. 1390 Rules []*DocumentationRule `json:"rules,omitempty"` 1391 1392 // ServiceRootUrl: Specifies the service root url if the default one 1393 // (the service name 1394 // from the yaml file) is not suitable. This can be seen in any 1395 // fully 1396 // specified service urls as well as sections that show a base that 1397 // other 1398 // urls are relative to. 1399 ServiceRootUrl string `json:"serviceRootUrl,omitempty"` 1400 1401 // Summary: A short summary of what the service does. Can only be 1402 // provided by 1403 // plain text. 1404 Summary string `json:"summary,omitempty"` 1405 1406 // ForceSendFields is a list of field names (e.g. 1407 // "DocumentationRootUrl") to unconditionally include in API requests. 1408 // By default, fields with empty values are omitted from API requests. 1409 // However, any non-pointer, non-interface field appearing in 1410 // ForceSendFields will be sent to the server regardless of whether the 1411 // field is empty or not. This may be used to include empty fields in 1412 // Patch requests. 1413 ForceSendFields []string `json:"-"` 1414 1415 // NullFields is a list of field names (e.g. "DocumentationRootUrl") to 1416 // include in API requests with the JSON null value. By default, fields 1417 // with empty values are omitted from API requests. However, any field 1418 // with an empty value appearing in NullFields will be sent to the 1419 // server as null. It is an error if a field in this list has a 1420 // non-empty value. This may be used to include null fields in Patch 1421 // requests. 1422 NullFields []string `json:"-"` 1423} 1424 1425func (s *Documentation) MarshalJSON() ([]byte, error) { 1426 type NoMethod Documentation 1427 raw := NoMethod(*s) 1428 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1429} 1430 1431// DocumentationRule: A documentation rule provides information about 1432// individual API elements. 1433type DocumentationRule struct { 1434 // DeprecationDescription: Deprecation description of the selected 1435 // element(s). It can be provided if 1436 // an element is marked as `deprecated`. 1437 DeprecationDescription string `json:"deprecationDescription,omitempty"` 1438 1439 // Description: Description of the selected API(s). 1440 Description string `json:"description,omitempty"` 1441 1442 // Selector: The selector is a comma-separated list of patterns. Each 1443 // pattern is a 1444 // qualified name of the element which may end in "*", indicating a 1445 // wildcard. 1446 // Wildcards are only allowed at the end and for a whole component of 1447 // the 1448 // qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". 1449 // A 1450 // wildcard will match one or more components. To specify a default for 1451 // all 1452 // applicable elements, the whole pattern "*" is used. 1453 Selector string `json:"selector,omitempty"` 1454 1455 // ForceSendFields is a list of field names (e.g. 1456 // "DeprecationDescription") to unconditionally include in API requests. 1457 // By default, fields with empty values are omitted from API requests. 1458 // However, any non-pointer, non-interface field appearing in 1459 // ForceSendFields will be sent to the server regardless of whether the 1460 // field is empty or not. This may be used to include empty fields in 1461 // Patch requests. 1462 ForceSendFields []string `json:"-"` 1463 1464 // NullFields is a list of field names (e.g. "DeprecationDescription") 1465 // to include in API requests with the JSON null value. By default, 1466 // fields with empty values are omitted from API requests. However, any 1467 // field with an empty value appearing in NullFields will be sent to the 1468 // server as null. It is an error if a field in this list has a 1469 // non-empty value. This may be used to include null fields in Patch 1470 // requests. 1471 NullFields []string `json:"-"` 1472} 1473 1474func (s *DocumentationRule) MarshalJSON() ([]byte, error) { 1475 type NoMethod DocumentationRule 1476 raw := NoMethod(*s) 1477 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1478} 1479 1480// Endpoint: `Endpoint` describes a network endpoint that serves a set 1481// of APIs. 1482// A service may expose any number of endpoints, and all endpoints share 1483// the 1484// same service configuration, such as quota configuration and 1485// monitoring 1486// configuration. 1487// 1488// Example service configuration: 1489// 1490// name: library-example.googleapis.com 1491// endpoints: 1492// # Below entry makes 'google.example.library.v1.Library' 1493// # API be served from endpoint address 1494// library-example.googleapis.com. 1495// # It also allows HTTP OPTIONS calls to be passed to the 1496// backend, for 1497// # it to decide whether the subsequent cross-origin request is 1498// # allowed to proceed. 1499// - name: library-example.googleapis.com 1500// allow_cors: true 1501type Endpoint struct { 1502 // Aliases: DEPRECATED: This field is no longer supported. Instead of 1503 // using aliases, 1504 // please specify multiple google.api.Endpoint for each of the 1505 // intended 1506 // aliases. 1507 // 1508 // Additional names that this endpoint will be hosted on. 1509 Aliases []string `json:"aliases,omitempty"` 1510 1511 // AllowCors: 1512 // Allowing 1513 // [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sh 1514 // aring), aka 1515 // cross-domain traffic, would allow the backends served from this 1516 // endpoint to 1517 // receive and respond to HTTP OPTIONS requests. The response will be 1518 // used by 1519 // the browser to determine whether the subsequent cross-origin request 1520 // is 1521 // allowed to proceed. 1522 AllowCors bool `json:"allowCors,omitempty"` 1523 1524 // Features: The list of features enabled on this endpoint. 1525 Features []string `json:"features,omitempty"` 1526 1527 // Name: The canonical name of this endpoint. 1528 Name string `json:"name,omitempty"` 1529 1530 // Target: The specification of an Internet routable address of API 1531 // frontend that will 1532 // handle requests to this 1533 // [API 1534 // Endpoint](https://cloud.google.com/apis/design/glossary). It should 1535 // be 1536 // either a valid IPv4 address or a fully-qualified domain name. For 1537 // example, 1538 // "8.8.8.8" or "myservice.appspot.com". 1539 Target string `json:"target,omitempty"` 1540 1541 // ForceSendFields is a list of field names (e.g. "Aliases") to 1542 // unconditionally include in API requests. By default, fields with 1543 // empty values are omitted from API requests. However, any non-pointer, 1544 // non-interface field appearing in ForceSendFields will be sent to the 1545 // server regardless of whether the field is empty or not. This may be 1546 // used to include empty fields in Patch requests. 1547 ForceSendFields []string `json:"-"` 1548 1549 // NullFields is a list of field names (e.g. "Aliases") to include in 1550 // API requests with the JSON null value. By default, fields with empty 1551 // values are omitted from API requests. However, any field with an 1552 // empty value appearing in NullFields will be sent to the server as 1553 // null. It is an error if a field in this list has a non-empty value. 1554 // This may be used to include null fields in Patch requests. 1555 NullFields []string `json:"-"` 1556} 1557 1558func (s *Endpoint) MarshalJSON() ([]byte, error) { 1559 type NoMethod Endpoint 1560 raw := NoMethod(*s) 1561 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1562} 1563 1564// Enum: Enum type definition. 1565type Enum struct { 1566 // Enumvalue: Enum value definitions. 1567 Enumvalue []*EnumValue `json:"enumvalue,omitempty"` 1568 1569 // Name: Enum type name. 1570 Name string `json:"name,omitempty"` 1571 1572 // Options: Protocol buffer options. 1573 Options []*Option `json:"options,omitempty"` 1574 1575 // SourceContext: The source context. 1576 SourceContext *SourceContext `json:"sourceContext,omitempty"` 1577 1578 // Syntax: The source syntax. 1579 // 1580 // Possible values: 1581 // "SYNTAX_PROTO2" - Syntax `proto2`. 1582 // "SYNTAX_PROTO3" - Syntax `proto3`. 1583 Syntax string `json:"syntax,omitempty"` 1584 1585 // ForceSendFields is a list of field names (e.g. "Enumvalue") to 1586 // unconditionally include in API requests. By default, fields with 1587 // empty values are omitted from API requests. However, any non-pointer, 1588 // non-interface field appearing in ForceSendFields will be sent to the 1589 // server regardless of whether the field is empty or not. This may be 1590 // used to include empty fields in Patch requests. 1591 ForceSendFields []string `json:"-"` 1592 1593 // NullFields is a list of field names (e.g. "Enumvalue") to include in 1594 // API requests with the JSON null value. By default, fields with empty 1595 // values are omitted from API requests. However, any field with an 1596 // empty value appearing in NullFields will be sent to the server as 1597 // null. It is an error if a field in this list has a non-empty value. 1598 // This may be used to include null fields in Patch requests. 1599 NullFields []string `json:"-"` 1600} 1601 1602func (s *Enum) MarshalJSON() ([]byte, error) { 1603 type NoMethod Enum 1604 raw := NoMethod(*s) 1605 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1606} 1607 1608// EnumValue: Enum value definition. 1609type EnumValue struct { 1610 // Name: Enum value name. 1611 Name string `json:"name,omitempty"` 1612 1613 // Number: Enum value number. 1614 Number int64 `json:"number,omitempty"` 1615 1616 // Options: Protocol buffer options. 1617 Options []*Option `json:"options,omitempty"` 1618 1619 // ForceSendFields is a list of field names (e.g. "Name") to 1620 // unconditionally include in API requests. By default, fields with 1621 // empty values are omitted from API requests. However, any non-pointer, 1622 // non-interface field appearing in ForceSendFields will be sent to the 1623 // server regardless of whether the field is empty or not. This may be 1624 // used to include empty fields in Patch requests. 1625 ForceSendFields []string `json:"-"` 1626 1627 // NullFields is a list of field names (e.g. "Name") to include in API 1628 // requests with the JSON null value. By default, fields with empty 1629 // values are omitted from API requests. However, any field with an 1630 // empty value appearing in NullFields will be sent to the server as 1631 // null. It is an error if a field in this list has a non-empty value. 1632 // This may be used to include null fields in Patch requests. 1633 NullFields []string `json:"-"` 1634} 1635 1636func (s *EnumValue) MarshalJSON() ([]byte, error) { 1637 type NoMethod EnumValue 1638 raw := NoMethod(*s) 1639 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1640} 1641 1642// Field: A single field of a message type. 1643type Field struct { 1644 // Cardinality: The field cardinality. 1645 // 1646 // Possible values: 1647 // "CARDINALITY_UNKNOWN" - For fields with unknown cardinality. 1648 // "CARDINALITY_OPTIONAL" - For optional fields. 1649 // "CARDINALITY_REQUIRED" - For required fields. Proto2 syntax only. 1650 // "CARDINALITY_REPEATED" - For repeated fields. 1651 Cardinality string `json:"cardinality,omitempty"` 1652 1653 // DefaultValue: The string value of the default value of this field. 1654 // Proto2 syntax only. 1655 DefaultValue string `json:"defaultValue,omitempty"` 1656 1657 // JsonName: The field JSON name. 1658 JsonName string `json:"jsonName,omitempty"` 1659 1660 // Kind: The field type. 1661 // 1662 // Possible values: 1663 // "TYPE_UNKNOWN" - Field type unknown. 1664 // "TYPE_DOUBLE" - Field type double. 1665 // "TYPE_FLOAT" - Field type float. 1666 // "TYPE_INT64" - Field type int64. 1667 // "TYPE_UINT64" - Field type uint64. 1668 // "TYPE_INT32" - Field type int32. 1669 // "TYPE_FIXED64" - Field type fixed64. 1670 // "TYPE_FIXED32" - Field type fixed32. 1671 // "TYPE_BOOL" - Field type bool. 1672 // "TYPE_STRING" - Field type string. 1673 // "TYPE_GROUP" - Field type group. Proto2 syntax only, and 1674 // deprecated. 1675 // "TYPE_MESSAGE" - Field type message. 1676 // "TYPE_BYTES" - Field type bytes. 1677 // "TYPE_UINT32" - Field type uint32. 1678 // "TYPE_ENUM" - Field type enum. 1679 // "TYPE_SFIXED32" - Field type sfixed32. 1680 // "TYPE_SFIXED64" - Field type sfixed64. 1681 // "TYPE_SINT32" - Field type sint32. 1682 // "TYPE_SINT64" - Field type sint64. 1683 Kind string `json:"kind,omitempty"` 1684 1685 // Name: The field name. 1686 Name string `json:"name,omitempty"` 1687 1688 // Number: The field number. 1689 Number int64 `json:"number,omitempty"` 1690 1691 // OneofIndex: The index of the field type in `Type.oneofs`, for message 1692 // or enumeration 1693 // types. The first type has index 1; zero means the type is not in the 1694 // list. 1695 OneofIndex int64 `json:"oneofIndex,omitempty"` 1696 1697 // Options: The protocol buffer options. 1698 Options []*Option `json:"options,omitempty"` 1699 1700 // Packed: Whether to use alternative packed wire representation. 1701 Packed bool `json:"packed,omitempty"` 1702 1703 // TypeUrl: The field type URL, without the scheme, for message or 1704 // enumeration 1705 // types. Example: "type.googleapis.com/google.protobuf.Timestamp". 1706 TypeUrl string `json:"typeUrl,omitempty"` 1707 1708 // ForceSendFields is a list of field names (e.g. "Cardinality") to 1709 // unconditionally include in API requests. By default, fields with 1710 // empty values are omitted from API requests. However, any non-pointer, 1711 // non-interface field appearing in ForceSendFields will be sent to the 1712 // server regardless of whether the field is empty or not. This may be 1713 // used to include empty fields in Patch requests. 1714 ForceSendFields []string `json:"-"` 1715 1716 // NullFields is a list of field names (e.g. "Cardinality") to include 1717 // in API requests with the JSON null value. By default, fields with 1718 // empty values are omitted from API requests. However, any field with 1719 // an empty value appearing in NullFields will be sent to the server as 1720 // null. It is an error if a field in this list has a non-empty value. 1721 // This may be used to include null fields in Patch requests. 1722 NullFields []string `json:"-"` 1723} 1724 1725func (s *Field) MarshalJSON() ([]byte, error) { 1726 type NoMethod Field 1727 raw := NoMethod(*s) 1728 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1729} 1730 1731// GoogleCloudServicenetworkingV1betaSubnetwork: Represents a subnet 1732// that was created or discovered by a private access 1733// management service. 1734type GoogleCloudServicenetworkingV1betaSubnetwork struct { 1735 // IpCidrRange: Subnetwork CIDR range in `10.x.x.x/y` format. 1736 IpCidrRange string `json:"ipCidrRange,omitempty"` 1737 1738 // Name: Subnetwork name. 1739 // See https://cloud.google.com/compute/docs/vpc/ 1740 Name string `json:"name,omitempty"` 1741 1742 // Network: In the Shared VPC host project, the VPC network that's 1743 // peered with the 1744 // consumer network. For 1745 // example: 1746 // `projects/1234321/global/networks/host-network` 1747 Network string `json:"network,omitempty"` 1748 1749 // OutsideAllocation: This is a discovered subnet that is not within the 1750 // current consumer 1751 // allocated ranges. 1752 OutsideAllocation bool `json:"outsideAllocation,omitempty"` 1753 1754 // ForceSendFields is a list of field names (e.g. "IpCidrRange") to 1755 // unconditionally include in API requests. By default, fields with 1756 // empty values are omitted from API requests. However, any non-pointer, 1757 // non-interface field appearing in ForceSendFields will be sent to the 1758 // server regardless of whether the field is empty or not. This may be 1759 // used to include empty fields in Patch requests. 1760 ForceSendFields []string `json:"-"` 1761 1762 // NullFields is a list of field names (e.g. "IpCidrRange") to include 1763 // in API requests with the JSON null value. By default, fields with 1764 // empty values are omitted from API requests. However, any field with 1765 // an empty value appearing in NullFields will be sent to the server as 1766 // null. It is an error if a field in this list has a non-empty value. 1767 // This may be used to include null fields in Patch requests. 1768 NullFields []string `json:"-"` 1769} 1770 1771func (s *GoogleCloudServicenetworkingV1betaSubnetwork) MarshalJSON() ([]byte, error) { 1772 type NoMethod GoogleCloudServicenetworkingV1betaSubnetwork 1773 raw := NoMethod(*s) 1774 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1775} 1776 1777// Http: Defines the HTTP configuration for an API service. It contains 1778// a list of 1779// HttpRule, each specifying the mapping of an RPC method 1780// to one or more HTTP REST API methods. 1781type Http struct { 1782 // FullyDecodeReservedExpansion: When set to true, URL path parameters 1783 // will be fully URI-decoded except in 1784 // cases of single segment matches in reserved expansion, where "%2F" 1785 // will be 1786 // left encoded. 1787 // 1788 // The default behavior is to not decode RFC 6570 reserved characters in 1789 // multi 1790 // segment matches. 1791 FullyDecodeReservedExpansion bool `json:"fullyDecodeReservedExpansion,omitempty"` 1792 1793 // Rules: A list of HTTP configuration rules that apply to individual 1794 // API methods. 1795 // 1796 // **NOTE:** All service configuration rules follow "last one wins" 1797 // order. 1798 Rules []*HttpRule `json:"rules,omitempty"` 1799 1800 // ForceSendFields is a list of field names (e.g. 1801 // "FullyDecodeReservedExpansion") to unconditionally include in API 1802 // requests. By default, fields with empty values are omitted from API 1803 // requests. However, any non-pointer, non-interface field appearing in 1804 // ForceSendFields will be sent to the server regardless of whether the 1805 // field is empty or not. This may be used to include empty fields in 1806 // Patch requests. 1807 ForceSendFields []string `json:"-"` 1808 1809 // NullFields is a list of field names (e.g. 1810 // "FullyDecodeReservedExpansion") to include in API requests with the 1811 // JSON null value. By default, fields with empty values are omitted 1812 // from API requests. However, any field with an empty value appearing 1813 // in NullFields will be sent to the server as null. It is an error if a 1814 // field in this list has a non-empty value. This may be used to include 1815 // null fields in Patch requests. 1816 NullFields []string `json:"-"` 1817} 1818 1819func (s *Http) MarshalJSON() ([]byte, error) { 1820 type NoMethod Http 1821 raw := NoMethod(*s) 1822 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 1823} 1824 1825// HttpRule: # gRPC Transcoding 1826// 1827// gRPC Transcoding is a feature for mapping between a gRPC method and 1828// one or 1829// more HTTP REST endpoints. It allows developers to build a single API 1830// service 1831// that supports both gRPC APIs and REST APIs. Many systems, including 1832// [Google 1833// APIs](https://github.com/googleapis/googleapis), 1834// [Cloud Endpoints](https://cloud.google.com/endpoints), 1835// [gRPC 1836// Gateway](https://github.com/grpc-ecosystem/grpc-gateway), 1837// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this 1838// feature 1839// and use it for large scale production services. 1840// 1841// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping 1842// specifies 1843// how different portions of the gRPC request message are mapped to the 1844// URL 1845// path, URL query parameters, and HTTP request body. It also controls 1846// how the 1847// gRPC response message is mapped to the HTTP response body. `HttpRule` 1848// is 1849// typically specified as an `google.api.http` annotation on the gRPC 1850// method. 1851// 1852// Each mapping specifies a URL path template and an HTTP method. The 1853// path 1854// template may refer to one or more fields in the gRPC request message, 1855// as long 1856// as each field is a non-repeated field with a primitive (non-message) 1857// type. 1858// The path template controls how fields of the request message are 1859// mapped to 1860// the URL path. 1861// 1862// Example: 1863// 1864// service Messaging { 1865// rpc GetMessage(GetMessageRequest) returns (Message) { 1866// option (google.api.http) = { 1867// get: "/v1/{name=messages/*}" 1868// }; 1869// } 1870// } 1871// message GetMessageRequest { 1872// string name = 1; // Mapped to URL path. 1873// } 1874// message Message { 1875// string text = 1; // The resource content. 1876// } 1877// 1878// This enables an HTTP REST to gRPC mapping as below: 1879// 1880// HTTP | gRPC 1881// -----|----- 1882// `GET /v1/messages/123456` | `GetMessage(name: 1883// "messages/123456")` 1884// 1885// Any fields in the request message which are not bound by the path 1886// template 1887// automatically become HTTP query parameters if there is no HTTP 1888// request body. 1889// For example: 1890// 1891// service Messaging { 1892// rpc GetMessage(GetMessageRequest) returns (Message) { 1893// option (google.api.http) = { 1894// get:"/v1/messages/{message_id}" 1895// }; 1896// } 1897// } 1898// message GetMessageRequest { 1899// message SubMessage { 1900// string subfield = 1; 1901// } 1902// string message_id = 1; // Mapped to URL path. 1903// int64 revision = 2; // Mapped to URL query parameter 1904// `revision`. 1905// SubMessage sub = 3; // Mapped to URL query parameter 1906// `sub.subfield`. 1907// } 1908// 1909// This enables a HTTP JSON to RPC mapping as below: 1910// 1911// HTTP | gRPC 1912// -----|----- 1913// `GET /v1/messages/123456?revision=2&sub.subfield=foo` 1914// | 1915// `GetMessage(message_id: "123456" revision: 2 sub: 1916// SubMessage(subfield: 1917// "foo"))` 1918// 1919// Note that fields which are mapped to URL query parameters must have 1920// a 1921// primitive type or a repeated primitive type or a non-repeated message 1922// type. 1923// In the case of a repeated type, the parameter can be repeated in the 1924// URL 1925// as `...?param=A¶m=B`. In the case of a message type, each field 1926// of the 1927// message is mapped to a separate parameter, such 1928// as 1929// `...?foo.a=A&foo.b=B&foo.c=C`. 1930// 1931// For HTTP methods that allow a request body, the `body` 1932// field 1933// specifies the mapping. Consider a REST update method on the 1934// message resource collection: 1935// 1936// service Messaging { 1937// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { 1938// option (google.api.http) = { 1939// patch: "/v1/messages/{message_id}" 1940// body: "message" 1941// }; 1942// } 1943// } 1944// message UpdateMessageRequest { 1945// string message_id = 1; // mapped to the URL 1946// Message message = 2; // mapped to the body 1947// } 1948// 1949// The following HTTP JSON to RPC mapping is enabled, where 1950// the 1951// representation of the JSON in the request body is determined 1952// by 1953// protos JSON encoding: 1954// 1955// HTTP | gRPC 1956// -----|----- 1957// `PATCH /v1/messages/123456 { "text": "Hi!" }` | 1958// `UpdateMessage(message_id: 1959// "123456" message { text: "Hi!" })` 1960// 1961// The special name `*` can be used in the body mapping to define 1962// that 1963// every field not bound by the path template should be mapped to 1964// the 1965// request body. This enables the following alternative definition 1966// of 1967// the update method: 1968// 1969// service Messaging { 1970// rpc UpdateMessage(Message) returns (Message) { 1971// option (google.api.http) = { 1972// patch: "/v1/messages/{message_id}" 1973// body: "*" 1974// }; 1975// } 1976// } 1977// message Message { 1978// string message_id = 1; 1979// string text = 2; 1980// } 1981// 1982// 1983// The following HTTP JSON to RPC mapping is enabled: 1984// 1985// HTTP | gRPC 1986// -----|----- 1987// `PATCH /v1/messages/123456 { "text": "Hi!" }` | 1988// `UpdateMessage(message_id: 1989// "123456" text: "Hi!")` 1990// 1991// Note that when using `*` in the body mapping, it is not possible 1992// to 1993// have HTTP parameters, as all fields not bound by the path end in 1994// the body. This makes this option more rarely used in practice 1995// when 1996// defining REST APIs. The common usage of `*` is in custom 1997// methods 1998// which don't use the URL at all for transferring data. 1999// 2000// It is possible to define multiple HTTP methods for one RPC by 2001// using 2002// the `additional_bindings` option. Example: 2003// 2004// service Messaging { 2005// rpc GetMessage(GetMessageRequest) returns (Message) { 2006// option (google.api.http) = { 2007// get: "/v1/messages/{message_id}" 2008// additional_bindings { 2009// get: "/v1/users/{user_id}/messages/{message_id}" 2010// } 2011// }; 2012// } 2013// } 2014// message GetMessageRequest { 2015// string message_id = 1; 2016// string user_id = 2; 2017// } 2018// 2019// This enables the following two alternative HTTP JSON to RPC 2020// mappings: 2021// 2022// HTTP | gRPC 2023// -----|----- 2024// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` 2025// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" 2026// message_id: 2027// "123456")` 2028// 2029// ## Rules for HTTP mapping 2030// 2031// 1. Leaf request fields (recursive expansion nested messages in the 2032// request 2033// message) are classified into three categories: 2034// - Fields referred by the path template. They are passed via the 2035// URL path. 2036// - Fields referred by the HttpRule.body. They are passed via the 2037// HTTP 2038// request body. 2039// - All other fields are passed via the URL query parameters, and 2040// the 2041// parameter name is the field path in the request message. A 2042// repeated 2043// field can be represented as multiple query parameters under the 2044// same 2045// name. 2046// 2. If HttpRule.body is "*", there is no URL query parameter, all 2047// fields 2048// are passed via URL path and HTTP request body. 2049// 3. If HttpRule.body is omitted, there is no HTTP request body, all 2050// fields are passed via URL path and URL query parameters. 2051// 2052// ### Path template syntax 2053// 2054// Template = "/" Segments [ Verb ] ; 2055// Segments = Segment { "/" Segment } ; 2056// Segment = "*" | "**" | LITERAL | Variable ; 2057// Variable = "{" FieldPath [ "=" Segments ] "}" ; 2058// FieldPath = IDENT { "." IDENT } ; 2059// Verb = ":" LITERAL ; 2060// 2061// The syntax `*` matches a single URL path segment. The syntax `**` 2062// matches 2063// zero or more URL path segments, which must be the last part of the 2064// URL path 2065// except the `Verb`. 2066// 2067// The syntax `Variable` matches part of the URL path as specified by 2068// its 2069// template. A variable template must not contain other variables. If a 2070// variable 2071// matches a single path segment, its template may be omitted, e.g. 2072// `{var}` 2073// is equivalent to `{var=*}`. 2074// 2075// The syntax `LITERAL` matches literal text in the URL path. If the 2076// `LITERAL` 2077// contains any reserved character, such characters should be 2078// percent-encoded 2079// before the matching. 2080// 2081// If a variable contains exactly one path segment, such as "{var}" 2082// or 2083// "{var=*}", when such a variable is expanded into a URL path on the 2084// client 2085// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. 2086// The 2087// server side does the reverse decoding. Such variables show up in 2088// the 2089// [Discovery 2090// Document](https://developers.google.com/discovery/v1/re 2091// ference/apis) as 2092// `{var}`. 2093// 2094// If a variable contains multiple path segments, such as 2095// "{var=foo/*}" 2096// or "{var=**}", when such a variable is expanded into a URL path on 2097// the 2098// client side, all characters except `[-_.~/0-9a-zA-Z]` are 2099// percent-encoded. 2100// The server side does the reverse decoding, except "%2F" and "%2f" are 2101// left 2102// unchanged. Such variables show up in 2103// the 2104// [Discovery 2105// Document](https://developers.google.com/discovery/v1/re 2106// ference/apis) as 2107// `{+var}`. 2108// 2109// ## Using gRPC API Service Configuration 2110// 2111// gRPC API Service Configuration (service config) is a configuration 2112// language 2113// for configuring a gRPC service to become a user-facing product. 2114// The 2115// service config is simply the YAML representation of the 2116// `google.api.Service` 2117// proto message. 2118// 2119// As an alternative to annotating your proto file, you can configure 2120// gRPC 2121// transcoding in your service config YAML files. You do this by 2122// specifying a 2123// `HttpRule` that maps the gRPC method to a REST endpoint, achieving 2124// the same 2125// effect as the proto annotation. This can be particularly useful if 2126// you 2127// have a proto that is reused in multiple services. Note that any 2128// transcoding 2129// specified in the service config will override any matching 2130// transcoding 2131// configuration in the proto. 2132// 2133// Example: 2134// 2135// http: 2136// rules: 2137// # Selects a gRPC method and applies HttpRule to it. 2138// - selector: example.v1.Messaging.GetMessage 2139// get: /v1/messages/{message_id}/{sub.subfield} 2140// 2141// ## Special notes 2142// 2143// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, 2144// the 2145// proto to JSON conversion must follow the 2146// [proto3 2147// specification](https://developers.google.com/protocol-buffers/ 2148// docs/proto3#json). 2149// 2150// While the single segment variable follows the semantics of 2151// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple 2152// String 2153// Expansion, the multi segment variable **does not** follow RFC 6570 2154// Section 2155// 3.2.3 Reserved Expansion. The reason is that the Reserved 2156// Expansion 2157// does not expand special characters like `?` and `#`, which would 2158// lead 2159// to invalid URLs. As the result, gRPC Transcoding uses a custom 2160// encoding 2161// for multi segment variables. 2162// 2163// The path variables **must not** refer to any repeated or mapped 2164// field, 2165// because client libraries are not capable of handling such variable 2166// expansion. 2167// 2168// The path variables **must not** capture the leading "/" character. 2169// The reason 2170// is that the most common use case "{var}" does not capture the leading 2171// "/" 2172// character. For consistency, all path variables must share the same 2173// behavior. 2174// 2175// Repeated message fields must not be mapped to URL query parameters, 2176// because 2177// no client library can support such complicated mapping. 2178// 2179// If an API needs to use a JSON array for request or response body, it 2180// can map 2181// the request or response body to a repeated field. However, some 2182// gRPC 2183// Transcoding implementations may not support this feature. 2184type HttpRule struct { 2185 // AdditionalBindings: Additional HTTP bindings for the selector. Nested 2186 // bindings must 2187 // not contain an `additional_bindings` field themselves (that is, 2188 // the nesting may only be one level deep). 2189 AdditionalBindings []*HttpRule `json:"additionalBindings,omitempty"` 2190 2191 // AllowHalfDuplex: When this flag is set to true, HTTP requests will be 2192 // allowed to invoke a 2193 // half-duplex streaming method. 2194 AllowHalfDuplex bool `json:"allowHalfDuplex,omitempty"` 2195 2196 // Body: The name of the request field whose value is mapped to the HTTP 2197 // request 2198 // body, or `*` for mapping all request fields not captured by the 2199 // path 2200 // pattern to the HTTP body, or omitted for not having any HTTP request 2201 // body. 2202 // 2203 // NOTE: the referred field must be present at the top-level of the 2204 // request 2205 // message type. 2206 Body string `json:"body,omitempty"` 2207 2208 // Custom: The custom pattern is used for specifying an HTTP method that 2209 // is not 2210 // included in the `pattern` field, such as HEAD, or "*" to leave 2211 // the 2212 // HTTP method unspecified for this rule. The wild-card rule is 2213 // useful 2214 // for services that provide content to Web (HTML) clients. 2215 Custom *CustomHttpPattern `json:"custom,omitempty"` 2216 2217 // Delete: Maps to HTTP DELETE. Used for deleting a resource. 2218 Delete string `json:"delete,omitempty"` 2219 2220 // Get: Maps to HTTP GET. Used for listing and getting information 2221 // about 2222 // resources. 2223 Get string `json:"get,omitempty"` 2224 2225 // Patch: Maps to HTTP PATCH. Used for updating a resource. 2226 Patch string `json:"patch,omitempty"` 2227 2228 // Post: Maps to HTTP POST. Used for creating a resource or performing 2229 // an action. 2230 Post string `json:"post,omitempty"` 2231 2232 // Put: Maps to HTTP PUT. Used for replacing a resource. 2233 Put string `json:"put,omitempty"` 2234 2235 // ResponseBody: Optional. The name of the response field whose value is 2236 // mapped to the HTTP 2237 // response body. When omitted, the entire response message will be 2238 // used 2239 // as the HTTP response body. 2240 // 2241 // NOTE: The referred field must be present at the top-level of the 2242 // response 2243 // message type. 2244 ResponseBody string `json:"responseBody,omitempty"` 2245 2246 // Selector: Selects a method to which this rule applies. 2247 // 2248 // Refer to selector for syntax details. 2249 Selector string `json:"selector,omitempty"` 2250 2251 // ForceSendFields is a list of field names (e.g. "AdditionalBindings") 2252 // to unconditionally include in API requests. By default, fields with 2253 // empty values are omitted from API requests. However, any non-pointer, 2254 // non-interface field appearing in ForceSendFields will be sent to the 2255 // server regardless of whether the field is empty or not. This may be 2256 // used to include empty fields in Patch requests. 2257 ForceSendFields []string `json:"-"` 2258 2259 // NullFields is a list of field names (e.g. "AdditionalBindings") to 2260 // include in API requests with the JSON null value. By default, fields 2261 // with empty values are omitted from API requests. However, any field 2262 // with an empty value appearing in NullFields will be sent to the 2263 // server as null. It is an error if a field in this list has a 2264 // non-empty value. This may be used to include null fields in Patch 2265 // requests. 2266 NullFields []string `json:"-"` 2267} 2268 2269func (s *HttpRule) MarshalJSON() ([]byte, error) { 2270 type NoMethod HttpRule 2271 raw := NoMethod(*s) 2272 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 2273} 2274 2275// JwtLocation: Specifies a location to extract JWT from an API request. 2276type JwtLocation struct { 2277 // Header: Specifies HTTP header name to extract JWT token. 2278 Header string `json:"header,omitempty"` 2279 2280 // Query: Specifies URL query parameter name to extract JWT token. 2281 Query string `json:"query,omitempty"` 2282 2283 // ValuePrefix: The value prefix. The value format is 2284 // "value_prefix{token}" 2285 // Only applies to "in" header type. Must be empty for "in" query 2286 // type. 2287 // If not empty, the header value has to match (case sensitive) this 2288 // prefix. 2289 // If not matched, JWT will not be extracted. If matched, JWT will 2290 // be 2291 // extracted after the prefix is removed. 2292 // 2293 // For example, for "Authorization: Bearer {JWT}", 2294 // value_prefix="Bearer " with a space at the end. 2295 ValuePrefix string `json:"valuePrefix,omitempty"` 2296 2297 // ForceSendFields is a list of field names (e.g. "Header") to 2298 // unconditionally include in API requests. By default, fields with 2299 // empty values are omitted from API requests. However, any non-pointer, 2300 // non-interface field appearing in ForceSendFields will be sent to the 2301 // server regardless of whether the field is empty or not. This may be 2302 // used to include empty fields in Patch requests. 2303 ForceSendFields []string `json:"-"` 2304 2305 // NullFields is a list of field names (e.g. "Header") to include in API 2306 // requests with the JSON null value. By default, fields with empty 2307 // values are omitted from API requests. However, any field with an 2308 // empty value appearing in NullFields will be sent to the server as 2309 // null. It is an error if a field in this list has a non-empty value. 2310 // This may be used to include null fields in Patch requests. 2311 NullFields []string `json:"-"` 2312} 2313 2314func (s *JwtLocation) MarshalJSON() ([]byte, error) { 2315 type NoMethod JwtLocation 2316 raw := NoMethod(*s) 2317 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 2318} 2319 2320// LabelDescriptor: A description of a label. 2321type LabelDescriptor struct { 2322 // Description: A human-readable description for the label. 2323 Description string `json:"description,omitempty"` 2324 2325 // Key: The label key. 2326 Key string `json:"key,omitempty"` 2327 2328 // ValueType: The type of data that can be assigned to the label. 2329 // 2330 // Possible values: 2331 // "STRING" - A variable-length string. This is the default. 2332 // "BOOL" - Boolean; true or false. 2333 // "INT64" - A 64-bit signed integer. 2334 ValueType string `json:"valueType,omitempty"` 2335 2336 // ForceSendFields is a list of field names (e.g. "Description") to 2337 // unconditionally include in API requests. By default, fields with 2338 // empty values are omitted from API requests. However, any non-pointer, 2339 // non-interface field appearing in ForceSendFields will be sent to the 2340 // server regardless of whether the field is empty or not. This may be 2341 // used to include empty fields in Patch requests. 2342 ForceSendFields []string `json:"-"` 2343 2344 // NullFields is a list of field names (e.g. "Description") to include 2345 // in API requests with the JSON null value. By default, fields with 2346 // empty values are omitted from API requests. However, any field with 2347 // an empty value appearing in NullFields will be sent to the server as 2348 // null. It is an error if a field in this list has a non-empty value. 2349 // This may be used to include null fields in Patch requests. 2350 NullFields []string `json:"-"` 2351} 2352 2353func (s *LabelDescriptor) MarshalJSON() ([]byte, error) { 2354 type NoMethod LabelDescriptor 2355 raw := NoMethod(*s) 2356 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 2357} 2358 2359// ListConnectionsResponse: ListConnectionsResponse is the response to 2360// list peering states for the 2361// given service and consumer project. 2362type ListConnectionsResponse struct { 2363 // Connections: The list of Connections. 2364 Connections []*Connection `json:"connections,omitempty"` 2365 2366 // ServerResponse contains the HTTP response code and headers from the 2367 // server. 2368 googleapi.ServerResponse `json:"-"` 2369 2370 // ForceSendFields is a list of field names (e.g. "Connections") to 2371 // unconditionally include in API requests. By default, fields with 2372 // empty values are omitted from API requests. However, any non-pointer, 2373 // non-interface field appearing in ForceSendFields will be sent to the 2374 // server regardless of whether the field is empty or not. This may be 2375 // used to include empty fields in Patch requests. 2376 ForceSendFields []string `json:"-"` 2377 2378 // NullFields is a list of field names (e.g. "Connections") to include 2379 // in API requests with the JSON null value. By default, fields with 2380 // empty values are omitted from API requests. However, any field with 2381 // an empty value appearing in NullFields will be sent to the server as 2382 // null. It is an error if a field in this list has a non-empty value. 2383 // This may be used to include null fields in Patch requests. 2384 NullFields []string `json:"-"` 2385} 2386 2387func (s *ListConnectionsResponse) MarshalJSON() ([]byte, error) { 2388 type NoMethod ListConnectionsResponse 2389 raw := NoMethod(*s) 2390 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 2391} 2392 2393// LogDescriptor: A description of a log type. Example in YAML format: 2394// 2395// - name: library.googleapis.com/activity_history 2396// description: The history of borrowing and returning library 2397// items. 2398// display_name: Activity 2399// labels: 2400// - key: /customer_id 2401// description: Identifier of a library customer 2402type LogDescriptor struct { 2403 // Description: A human-readable description of this log. This 2404 // information appears in 2405 // the documentation and can contain details. 2406 Description string `json:"description,omitempty"` 2407 2408 // DisplayName: The human-readable name for this log. This information 2409 // appears on 2410 // the user interface and should be concise. 2411 DisplayName string `json:"displayName,omitempty"` 2412 2413 // Labels: The set of labels that are available to describe a specific 2414 // log entry. 2415 // Runtime requests that contain labels not specified here 2416 // are 2417 // considered invalid. 2418 Labels []*LabelDescriptor `json:"labels,omitempty"` 2419 2420 // Name: The name of the log. It must be less than 512 characters long 2421 // and can 2422 // include the following characters: upper- and lower-case 2423 // alphanumeric 2424 // characters [A-Za-z0-9], and punctuation characters including 2425 // slash, underscore, hyphen, period [/_-.]. 2426 Name string `json:"name,omitempty"` 2427 2428 // ForceSendFields is a list of field names (e.g. "Description") to 2429 // unconditionally include in API requests. By default, fields with 2430 // empty values are omitted from API requests. However, any non-pointer, 2431 // non-interface field appearing in ForceSendFields will be sent to the 2432 // server regardless of whether the field is empty or not. This may be 2433 // used to include empty fields in Patch requests. 2434 ForceSendFields []string `json:"-"` 2435 2436 // NullFields is a list of field names (e.g. "Description") to include 2437 // in API requests with the JSON null value. By default, fields with 2438 // empty values are omitted from API requests. However, any field with 2439 // an empty value appearing in NullFields will be sent to the server as 2440 // null. It is an error if a field in this list has a non-empty value. 2441 // This may be used to include null fields in Patch requests. 2442 NullFields []string `json:"-"` 2443} 2444 2445func (s *LogDescriptor) MarshalJSON() ([]byte, error) { 2446 type NoMethod LogDescriptor 2447 raw := NoMethod(*s) 2448 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 2449} 2450 2451// Logging: Logging configuration of the service. 2452// 2453// The following example shows how to configure logs to be sent to 2454// the 2455// producer and consumer projects. In the example, the 2456// `activity_history` 2457// log is sent to both the producer and consumer projects, whereas 2458// the 2459// `purchase_history` log is only sent to the producer project. 2460// 2461// monitored_resources: 2462// - type: library.googleapis.com/branch 2463// labels: 2464// - key: /city 2465// description: The city where the library branch is located 2466// in. 2467// - key: /name 2468// description: The name of the branch. 2469// logs: 2470// - name: activity_history 2471// labels: 2472// - key: /customer_id 2473// - name: purchase_history 2474// logging: 2475// producer_destinations: 2476// - monitored_resource: library.googleapis.com/branch 2477// logs: 2478// - activity_history 2479// - purchase_history 2480// consumer_destinations: 2481// - monitored_resource: library.googleapis.com/branch 2482// logs: 2483// - activity_history 2484type Logging struct { 2485 // ConsumerDestinations: Logging configurations for sending logs to the 2486 // consumer project. 2487 // There can be multiple consumer destinations, each one must have 2488 // a 2489 // different monitored resource type. A log can be used in at most 2490 // one consumer destination. 2491 ConsumerDestinations []*LoggingDestination `json:"consumerDestinations,omitempty"` 2492 2493 // ProducerDestinations: Logging configurations for sending logs to the 2494 // producer project. 2495 // There can be multiple producer destinations, each one must have 2496 // a 2497 // different monitored resource type. A log can be used in at most 2498 // one producer destination. 2499 ProducerDestinations []*LoggingDestination `json:"producerDestinations,omitempty"` 2500 2501 // ForceSendFields is a list of field names (e.g. 2502 // "ConsumerDestinations") to unconditionally include in API requests. 2503 // By default, fields with empty values are omitted from API requests. 2504 // However, any non-pointer, non-interface field appearing in 2505 // ForceSendFields will be sent to the server regardless of whether the 2506 // field is empty or not. This may be used to include empty fields in 2507 // Patch requests. 2508 ForceSendFields []string `json:"-"` 2509 2510 // NullFields is a list of field names (e.g. "ConsumerDestinations") to 2511 // include in API requests with the JSON null value. By default, fields 2512 // with empty values are omitted from API requests. However, any field 2513 // with an empty value appearing in NullFields will be sent to the 2514 // server as null. It is an error if a field in this list has a 2515 // non-empty value. This may be used to include null fields in Patch 2516 // requests. 2517 NullFields []string `json:"-"` 2518} 2519 2520func (s *Logging) MarshalJSON() ([]byte, error) { 2521 type NoMethod Logging 2522 raw := NoMethod(*s) 2523 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 2524} 2525 2526// LoggingDestination: Configuration of a specific logging destination 2527// (the producer project 2528// or the consumer project). 2529type LoggingDestination struct { 2530 // Logs: Names of the logs to be sent to this destination. Each name 2531 // must 2532 // be defined in the Service.logs section. If the log name is 2533 // not a domain scoped name, it will be automatically prefixed with 2534 // the service name followed by "/". 2535 Logs []string `json:"logs,omitempty"` 2536 2537 // MonitoredResource: The monitored resource type. The type must be 2538 // defined in the 2539 // Service.monitored_resources section. 2540 MonitoredResource string `json:"monitoredResource,omitempty"` 2541 2542 // ForceSendFields is a list of field names (e.g. "Logs") to 2543 // unconditionally include in API requests. By default, fields with 2544 // empty values are omitted from API requests. However, any non-pointer, 2545 // non-interface field appearing in ForceSendFields will be sent to the 2546 // server regardless of whether the field is empty or not. This may be 2547 // used to include empty fields in Patch requests. 2548 ForceSendFields []string `json:"-"` 2549 2550 // NullFields is a list of field names (e.g. "Logs") to include in API 2551 // requests with the JSON null value. By default, fields with empty 2552 // values are omitted from API requests. However, any field with an 2553 // empty value appearing in NullFields will be sent to the server as 2554 // null. It is an error if a field in this list has a non-empty value. 2555 // This may be used to include null fields in Patch requests. 2556 NullFields []string `json:"-"` 2557} 2558 2559func (s *LoggingDestination) MarshalJSON() ([]byte, error) { 2560 type NoMethod LoggingDestination 2561 raw := NoMethod(*s) 2562 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 2563} 2564 2565// Method: Method represents a method of an API interface. 2566type Method struct { 2567 // Name: The simple name of this method. 2568 Name string `json:"name,omitempty"` 2569 2570 // Options: Any metadata attached to the method. 2571 Options []*Option `json:"options,omitempty"` 2572 2573 // RequestStreaming: If true, the request is streamed. 2574 RequestStreaming bool `json:"requestStreaming,omitempty"` 2575 2576 // RequestTypeUrl: A URL of the input message type. 2577 RequestTypeUrl string `json:"requestTypeUrl,omitempty"` 2578 2579 // ResponseStreaming: If true, the response is streamed. 2580 ResponseStreaming bool `json:"responseStreaming,omitempty"` 2581 2582 // ResponseTypeUrl: The URL of the output message type. 2583 ResponseTypeUrl string `json:"responseTypeUrl,omitempty"` 2584 2585 // Syntax: The source syntax of this method. 2586 // 2587 // Possible values: 2588 // "SYNTAX_PROTO2" - Syntax `proto2`. 2589 // "SYNTAX_PROTO3" - Syntax `proto3`. 2590 Syntax string `json:"syntax,omitempty"` 2591 2592 // ForceSendFields is a list of field names (e.g. "Name") to 2593 // unconditionally include in API requests. By default, fields with 2594 // empty values are omitted from API requests. However, any non-pointer, 2595 // non-interface field appearing in ForceSendFields will be sent to the 2596 // server regardless of whether the field is empty or not. This may be 2597 // used to include empty fields in Patch requests. 2598 ForceSendFields []string `json:"-"` 2599 2600 // NullFields is a list of field names (e.g. "Name") to include in API 2601 // requests with the JSON null value. By default, fields with empty 2602 // values are omitted from API requests. However, any field with an 2603 // empty value appearing in NullFields will be sent to the server as 2604 // null. It is an error if a field in this list has a non-empty value. 2605 // This may be used to include null fields in Patch requests. 2606 NullFields []string `json:"-"` 2607} 2608 2609func (s *Method) MarshalJSON() ([]byte, error) { 2610 type NoMethod Method 2611 raw := NoMethod(*s) 2612 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 2613} 2614 2615// MetricDescriptor: Defines a metric type and its schema. Once a metric 2616// descriptor is created, 2617// deleting or altering it stops data collection and makes the metric 2618// type's 2619// existing data unusable. 2620type MetricDescriptor struct { 2621 // Description: A detailed description of the metric, which can be used 2622 // in documentation. 2623 Description string `json:"description,omitempty"` 2624 2625 // DisplayName: A concise name for the metric, which can be displayed in 2626 // user interfaces. 2627 // Use sentence case without an ending period, for example "Request 2628 // count". 2629 // This field is optional but it is recommended to be set for any 2630 // metrics 2631 // associated with user-visible concepts, such as Quota. 2632 DisplayName string `json:"displayName,omitempty"` 2633 2634 // Labels: The set of labels that can be used to describe a 2635 // specific 2636 // instance of this metric type. For example, 2637 // the 2638 // `appengine.googleapis.com/http/server/response_latencies` metric 2639 // type has a label for the HTTP response code, `response_code`, so 2640 // you can look at latencies for successful responses or just 2641 // for responses that failed. 2642 Labels []*LabelDescriptor `json:"labels,omitempty"` 2643 2644 // LaunchStage: Optional. The launch stage of the metric definition. 2645 // 2646 // Possible values: 2647 // "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value. 2648 // "EARLY_ACCESS" - Early Access features are limited to a closed 2649 // group of testers. To use 2650 // these features, you must sign up in advance and sign a Trusted 2651 // Tester 2652 // agreement (which includes confidentiality provisions). These features 2653 // may 2654 // be unstable, changed in backward-incompatible ways, and are 2655 // not 2656 // guaranteed to be released. 2657 // "ALPHA" - Alpha is a limited availability test for releases before 2658 // they are cleared 2659 // for widespread use. By Alpha, all significant design issues are 2660 // resolved 2661 // and we are in the process of verifying functionality. Alpha 2662 // customers 2663 // need to apply for access, agree to applicable terms, and have 2664 // their 2665 // projects whitelisted. Alpha releases don’t have to be feature 2666 // complete, 2667 // no SLAs are provided, and there are no technical support obligations, 2668 // but 2669 // they will be far enough along that customers can actually use them 2670 // in 2671 // test environments or for limited-use tests -- just like they would 2672 // in 2673 // normal production cases. 2674 // "BETA" - Beta is the point at which we are ready to open a release 2675 // for any 2676 // customer to use. There are no SLA or technical support obligations in 2677 // a 2678 // Beta release. Products will be complete from a feature perspective, 2679 // but 2680 // may have some open outstanding issues. Beta releases are suitable 2681 // for 2682 // limited production use cases. 2683 // "GA" - GA features are open to all developers and are considered 2684 // stable and 2685 // fully qualified for production use. 2686 // "DEPRECATED" - Deprecated features are scheduled to be shut down 2687 // and removed. For more 2688 // information, see the “Deprecation Policy” section of our [Terms 2689 // of 2690 // Service](https://cloud.google.com/terms/) 2691 // and the [Google Cloud Platform Subject to the 2692 // Deprecation 2693 // Policy](https://cloud.google.com/terms/deprecation) documentation. 2694 LaunchStage string `json:"launchStage,omitempty"` 2695 2696 // Metadata: Optional. Metadata which can be used to guide usage of the 2697 // metric. 2698 Metadata *MetricDescriptorMetadata `json:"metadata,omitempty"` 2699 2700 // MetricKind: Whether the metric records instantaneous values, changes 2701 // to a value, etc. 2702 // Some combinations of `metric_kind` and `value_type` might not be 2703 // supported. 2704 // 2705 // Possible values: 2706 // "METRIC_KIND_UNSPECIFIED" - Do not use this default value. 2707 // "GAUGE" - An instantaneous measurement of a value. 2708 // "DELTA" - The change in a value during a time interval. 2709 // "CUMULATIVE" - A value accumulated over a time interval. 2710 // Cumulative 2711 // measurements in a time series should have the same start time 2712 // and increasing end times, until an event resets the cumulative 2713 // value to zero and sets a new start time for the following 2714 // points. 2715 MetricKind string `json:"metricKind,omitempty"` 2716 2717 // MonitoredResourceTypes: Read-only. If present, then a time 2718 // series, which is identified partially by 2719 // a metric type and a MonitoredResourceDescriptor, that is 2720 // associated 2721 // with this metric type can only be associated with one of the 2722 // monitored 2723 // resource types listed here. 2724 MonitoredResourceTypes []string `json:"monitoredResourceTypes,omitempty"` 2725 2726 // Name: The resource name of the metric descriptor. 2727 Name string `json:"name,omitempty"` 2728 2729 // Type: The metric type, including its DNS name prefix. The type is 2730 // not 2731 // URL-encoded. All user-defined metric types have the DNS 2732 // name 2733 // `custom.googleapis.com` or `external.googleapis.com`. Metric types 2734 // should 2735 // use a natural hierarchical grouping. For example: 2736 // 2737 // "custom.googleapis.com/invoice/paid/amount" 2738 // "external.googleapis.com/prometheus/up" 2739 // "appengine.googleapis.com/http/server/response_latencies" 2740 Type string `json:"type,omitempty"` 2741 2742 // Unit: The units in which the metric value is reported. It is only 2743 // applicable 2744 // if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The 2745 // `unit` 2746 // defines the representation of the stored metric values. 2747 // 2748 // Different systems may scale the values to be more easily displayed 2749 // (so a 2750 // value of `0.02KBy` _might_ be displayed as `20By`, and a value 2751 // of 2752 // `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit` 2753 // is 2754 // `KBy`, then the value of the metric is always in thousands of bytes, 2755 // no 2756 // matter how it may be displayed.. 2757 // 2758 // If you want a custom metric to record the exact number of CPU-seconds 2759 // used 2760 // by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` 2761 // is 2762 // `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 2763 // 12,005 2764 // CPU-seconds, then the value is written as `12005`. 2765 // 2766 // Alternatively, if you want a custom metric to record data in a 2767 // more 2768 // granular way, you can create a `DOUBLE CUMULATIVE` metric whose 2769 // `unit` is 2770 // `ks{CPU}`, and then write the value `12.005` (which is 2771 // `12005/1000`), 2772 // or use `Kis{CPU}` and write `11.723` (which is `12005/1024`). 2773 // 2774 // The supported units are a subset of [The Unified Code for Units 2775 // of 2776 // Measure](http://unitsofmeasure.org/ucum.html) standard: 2777 // 2778 // **Basic units (UNIT)** 2779 // 2780 // * `bit` bit 2781 // * `By` byte 2782 // * `s` second 2783 // * `min` minute 2784 // * `h` hour 2785 // * `d` day 2786 // 2787 // **Prefixes (PREFIX)** 2788 // 2789 // * `k` kilo (10^3) 2790 // * `M` mega (10^6) 2791 // * `G` giga (10^9) 2792 // * `T` tera (10^12) 2793 // * `P` peta (10^15) 2794 // * `E` exa (10^18) 2795 // * `Z` zetta (10^21) 2796 // * `Y` yotta (10^24) 2797 // 2798 // * `m` milli (10^-3) 2799 // * `u` micro (10^-6) 2800 // * `n` nano (10^-9) 2801 // * `p` pico (10^-12) 2802 // * `f` femto (10^-15) 2803 // * `a` atto (10^-18) 2804 // * `z` zepto (10^-21) 2805 // * `y` yocto (10^-24) 2806 // 2807 // * `Ki` kibi (2^10) 2808 // * `Mi` mebi (2^20) 2809 // * `Gi` gibi (2^30) 2810 // * `Ti` tebi (2^40) 2811 // * `Pi` pebi (2^50) 2812 // 2813 // **Grammar** 2814 // 2815 // The grammar also includes these connectors: 2816 // 2817 // * `/` division or ratio (as an infix operator). For examples, 2818 // `kBy/{email}` or `MiBy/10ms` (although you should almost 2819 // never 2820 // have `/s` in a metric `unit`; rates should always be 2821 // computed at 2822 // query time from the underlying cumulative or delta value). 2823 // * `.` multiplication or composition (as an infix operator). For 2824 // examples, `GBy.d` or `k{watt}.h`. 2825 // 2826 // The grammar for a unit is as follows: 2827 // 2828 // Expression = Component { "." Component } { "/" Component } ; 2829 // 2830 // Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ] 2831 // | Annotation 2832 // | "1" 2833 // ; 2834 // 2835 // Annotation = "{" NAME "}" ; 2836 // 2837 // Notes: 2838 // 2839 // * `Annotation` is just a comment if it follows a `UNIT`. If the 2840 // annotation 2841 // is used alone, then the unit is equivalent to `1`. For examples, 2842 // `{request}/s == 1/s`, `By{transmitted}/s == By/s`. 2843 // * `NAME` is a sequence of non-blank printable ASCII characters not 2844 // containing `{` or `}`. 2845 // * `1` represents a unitary [dimensionless 2846 // unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, 2847 // such 2848 // as in `1/s`. It is typically used when none of the basic units 2849 // are 2850 // appropriate. For example, "new users per day" can be represented 2851 // as 2852 // `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 2853 // new 2854 // users). Alternatively, "thousands of page views per day" would be 2855 // represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a 2856 // metric 2857 // value of `5.3` would mean "5300 page views per day"). 2858 // * `%` represents dimensionless value of 1/100, and annotates values 2859 // giving 2860 // a percentage (so the metric values are typically in the range of 2861 // 0..100, 2862 // and a metric value `3` means "3 percent"). 2863 // * `10^2.%` indicates a metric contains a ratio, typically in the 2864 // range 2865 // 0..1, that will be multiplied by 100 and displayed as a 2866 // percentage 2867 // (so a metric value `0.03` means "3 percent"). 2868 Unit string `json:"unit,omitempty"` 2869 2870 // ValueType: Whether the measurement is an integer, a floating-point 2871 // number, etc. 2872 // Some combinations of `metric_kind` and `value_type` might not be 2873 // supported. 2874 // 2875 // Possible values: 2876 // "VALUE_TYPE_UNSPECIFIED" - Do not use this default value. 2877 // "BOOL" - The value is a boolean. 2878 // This value type can be used only if the metric kind is `GAUGE`. 2879 // "INT64" - The value is a signed 64-bit integer. 2880 // "DOUBLE" - The value is a double precision floating point number. 2881 // "STRING" - The value is a text string. 2882 // This value type can be used only if the metric kind is `GAUGE`. 2883 // "DISTRIBUTION" - The value is a `Distribution`. 2884 // "MONEY" - The value is money. 2885 ValueType string `json:"valueType,omitempty"` 2886 2887 // ForceSendFields is a list of field names (e.g. "Description") to 2888 // unconditionally include in API requests. By default, fields with 2889 // empty values are omitted from API requests. However, any non-pointer, 2890 // non-interface field appearing in ForceSendFields will be sent to the 2891 // server regardless of whether the field is empty or not. This may be 2892 // used to include empty fields in Patch requests. 2893 ForceSendFields []string `json:"-"` 2894 2895 // NullFields is a list of field names (e.g. "Description") to include 2896 // in API requests with the JSON null value. By default, fields with 2897 // empty values are omitted from API requests. However, any field with 2898 // an empty value appearing in NullFields will be sent to the server as 2899 // null. It is an error if a field in this list has a non-empty value. 2900 // This may be used to include null fields in Patch requests. 2901 NullFields []string `json:"-"` 2902} 2903 2904func (s *MetricDescriptor) MarshalJSON() ([]byte, error) { 2905 type NoMethod MetricDescriptor 2906 raw := NoMethod(*s) 2907 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 2908} 2909 2910// MetricDescriptorMetadata: Additional annotations that can be used to 2911// guide the usage of a metric. 2912type MetricDescriptorMetadata struct { 2913 // IngestDelay: The delay of data points caused by ingestion. Data 2914 // points older than this 2915 // age are guaranteed to be ingested and available to be read, 2916 // excluding 2917 // data loss due to errors. 2918 IngestDelay string `json:"ingestDelay,omitempty"` 2919 2920 // LaunchStage: Deprecated. Must use the MetricDescriptor.launch_stage 2921 // instead. 2922 // 2923 // Possible values: 2924 // "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value. 2925 // "EARLY_ACCESS" - Early Access features are limited to a closed 2926 // group of testers. To use 2927 // these features, you must sign up in advance and sign a Trusted 2928 // Tester 2929 // agreement (which includes confidentiality provisions). These features 2930 // may 2931 // be unstable, changed in backward-incompatible ways, and are 2932 // not 2933 // guaranteed to be released. 2934 // "ALPHA" - Alpha is a limited availability test for releases before 2935 // they are cleared 2936 // for widespread use. By Alpha, all significant design issues are 2937 // resolved 2938 // and we are in the process of verifying functionality. Alpha 2939 // customers 2940 // need to apply for access, agree to applicable terms, and have 2941 // their 2942 // projects whitelisted. Alpha releases don’t have to be feature 2943 // complete, 2944 // no SLAs are provided, and there are no technical support obligations, 2945 // but 2946 // they will be far enough along that customers can actually use them 2947 // in 2948 // test environments or for limited-use tests -- just like they would 2949 // in 2950 // normal production cases. 2951 // "BETA" - Beta is the point at which we are ready to open a release 2952 // for any 2953 // customer to use. There are no SLA or technical support obligations in 2954 // a 2955 // Beta release. Products will be complete from a feature perspective, 2956 // but 2957 // may have some open outstanding issues. Beta releases are suitable 2958 // for 2959 // limited production use cases. 2960 // "GA" - GA features are open to all developers and are considered 2961 // stable and 2962 // fully qualified for production use. 2963 // "DEPRECATED" - Deprecated features are scheduled to be shut down 2964 // and removed. For more 2965 // information, see the “Deprecation Policy” section of our [Terms 2966 // of 2967 // Service](https://cloud.google.com/terms/) 2968 // and the [Google Cloud Platform Subject to the 2969 // Deprecation 2970 // Policy](https://cloud.google.com/terms/deprecation) documentation. 2971 LaunchStage string `json:"launchStage,omitempty"` 2972 2973 // SamplePeriod: The sampling period of metric data points. For metrics 2974 // which are written 2975 // periodically, consecutive data points are stored at this time 2976 // interval, 2977 // excluding data loss due to errors. Metrics with a higher granularity 2978 // have 2979 // a smaller sampling period. 2980 SamplePeriod string `json:"samplePeriod,omitempty"` 2981 2982 // ForceSendFields is a list of field names (e.g. "IngestDelay") to 2983 // unconditionally include in API requests. By default, fields with 2984 // empty values are omitted from API requests. However, any non-pointer, 2985 // non-interface field appearing in ForceSendFields will be sent to the 2986 // server regardless of whether the field is empty or not. This may be 2987 // used to include empty fields in Patch requests. 2988 ForceSendFields []string `json:"-"` 2989 2990 // NullFields is a list of field names (e.g. "IngestDelay") to include 2991 // in API requests with the JSON null value. By default, fields with 2992 // empty values are omitted from API requests. However, any field with 2993 // an empty value appearing in NullFields will be sent to the server as 2994 // null. It is an error if a field in this list has a non-empty value. 2995 // This may be used to include null fields in Patch requests. 2996 NullFields []string `json:"-"` 2997} 2998 2999func (s *MetricDescriptorMetadata) MarshalJSON() ([]byte, error) { 3000 type NoMethod MetricDescriptorMetadata 3001 raw := NoMethod(*s) 3002 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3003} 3004 3005// MetricRule: Bind API methods to metrics. Binding a method to a metric 3006// causes that 3007// metric's configured quota behaviors to apply to the method call. 3008type MetricRule struct { 3009 // MetricCosts: Metrics to update when the selected methods are called, 3010 // and the associated 3011 // cost applied to each metric. 3012 // 3013 // The key of the map is the metric name, and the values are the 3014 // amount 3015 // increased for the metric against which the quota limits are 3016 // defined. 3017 // The value must not be negative. 3018 MetricCosts map[string]string `json:"metricCosts,omitempty"` 3019 3020 // Selector: Selects the methods to which this rule applies. 3021 // 3022 // Refer to selector for syntax details. 3023 Selector string `json:"selector,omitempty"` 3024 3025 // ForceSendFields is a list of field names (e.g. "MetricCosts") to 3026 // unconditionally include in API requests. By default, fields with 3027 // empty values are omitted from API requests. However, any non-pointer, 3028 // non-interface field appearing in ForceSendFields will be sent to the 3029 // server regardless of whether the field is empty or not. This may be 3030 // used to include empty fields in Patch requests. 3031 ForceSendFields []string `json:"-"` 3032 3033 // NullFields is a list of field names (e.g. "MetricCosts") to include 3034 // in API requests with the JSON null value. By default, fields with 3035 // empty values are omitted from API requests. However, any field with 3036 // an empty value appearing in NullFields will be sent to the server as 3037 // null. It is an error if a field in this list has a non-empty value. 3038 // This may be used to include null fields in Patch requests. 3039 NullFields []string `json:"-"` 3040} 3041 3042func (s *MetricRule) MarshalJSON() ([]byte, error) { 3043 type NoMethod MetricRule 3044 raw := NoMethod(*s) 3045 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3046} 3047 3048// Mixin: Declares an API Interface to be included in this interface. 3049// The including 3050// interface must redeclare all the methods from the included interface, 3051// but 3052// documentation and options are inherited as follows: 3053// 3054// - If after comment and whitespace stripping, the documentation 3055// string of the redeclared method is empty, it will be inherited 3056// from the original method. 3057// 3058// - Each annotation belonging to the service config (http, 3059// visibility) which is not set in the redeclared method will be 3060// inherited. 3061// 3062// - If an http annotation is inherited, the path pattern will be 3063// modified as follows. Any version prefix will be replaced by the 3064// version of the including interface plus the root path if 3065// specified. 3066// 3067// Example of a simple mixin: 3068// 3069// package google.acl.v1; 3070// service AccessControl { 3071// // Get the underlying ACL object. 3072// rpc GetAcl(GetAclRequest) returns (Acl) { 3073// option (google.api.http).get = "/v1/{resource=**}:getAcl"; 3074// } 3075// } 3076// 3077// package google.storage.v2; 3078// service Storage { 3079// // rpc GetAcl(GetAclRequest) returns (Acl); 3080// 3081// // Get a data record. 3082// rpc GetData(GetDataRequest) returns (Data) { 3083// option (google.api.http).get = "/v2/{resource=**}"; 3084// } 3085// } 3086// 3087// Example of a mixin configuration: 3088// 3089// apis: 3090// - name: google.storage.v2.Storage 3091// mixins: 3092// - name: google.acl.v1.AccessControl 3093// 3094// The mixin construct implies that all methods in `AccessControl` 3095// are 3096// also declared with same name and request/response types in 3097// `Storage`. A documentation generator or annotation processor will 3098// see the effective `Storage.GetAcl` method after 3099// inherting 3100// documentation and annotations as follows: 3101// 3102// service Storage { 3103// // Get the underlying ACL object. 3104// rpc GetAcl(GetAclRequest) returns (Acl) { 3105// option (google.api.http).get = "/v2/{resource=**}:getAcl"; 3106// } 3107// ... 3108// } 3109// 3110// Note how the version in the path pattern changed from `v1` to 3111// `v2`. 3112// 3113// If the `root` field in the mixin is specified, it should be 3114// a 3115// relative path under which inherited HTTP paths are placed. Example: 3116// 3117// apis: 3118// - name: google.storage.v2.Storage 3119// mixins: 3120// - name: google.acl.v1.AccessControl 3121// root: acls 3122// 3123// This implies the following inherited HTTP annotation: 3124// 3125// service Storage { 3126// // Get the underlying ACL object. 3127// rpc GetAcl(GetAclRequest) returns (Acl) { 3128// option (google.api.http).get = 3129// "/v2/acls/{resource=**}:getAcl"; 3130// } 3131// ... 3132// } 3133type Mixin struct { 3134 // Name: The fully qualified name of the interface which is included. 3135 Name string `json:"name,omitempty"` 3136 3137 // Root: If non-empty specifies a path under which inherited HTTP 3138 // paths 3139 // are rooted. 3140 Root string `json:"root,omitempty"` 3141 3142 // ForceSendFields is a list of field names (e.g. "Name") to 3143 // unconditionally include in API requests. By default, fields with 3144 // empty values are omitted from API requests. However, any non-pointer, 3145 // non-interface field appearing in ForceSendFields will be sent to the 3146 // server regardless of whether the field is empty or not. This may be 3147 // used to include empty fields in Patch requests. 3148 ForceSendFields []string `json:"-"` 3149 3150 // NullFields is a list of field names (e.g. "Name") to include in API 3151 // requests with the JSON null value. By default, fields with empty 3152 // values are omitted from API requests. However, any field with an 3153 // empty value appearing in NullFields will be sent to the server as 3154 // null. It is an error if a field in this list has a non-empty value. 3155 // This may be used to include null fields in Patch requests. 3156 NullFields []string `json:"-"` 3157} 3158 3159func (s *Mixin) MarshalJSON() ([]byte, error) { 3160 type NoMethod Mixin 3161 raw := NoMethod(*s) 3162 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3163} 3164 3165// MonitoredResourceDescriptor: An object that describes the schema of a 3166// MonitoredResource object using a 3167// type name and a set of labels. For example, the monitored 3168// resource 3169// descriptor for Google Compute Engine VM instances has a type 3170// of 3171// "gce_instance" and specifies the use of the labels "instance_id" 3172// and 3173// "zone" to identify particular VM instances. 3174// 3175// Different APIs can support different monitored resource types. APIs 3176// generally 3177// provide a `list` method that returns the monitored resource 3178// descriptors used 3179// by the API. 3180type MonitoredResourceDescriptor struct { 3181 // Description: Optional. A detailed description of the monitored 3182 // resource type that might 3183 // be used in documentation. 3184 Description string `json:"description,omitempty"` 3185 3186 // DisplayName: Optional. A concise name for the monitored resource type 3187 // that might be 3188 // displayed in user interfaces. It should be a Title Cased Noun 3189 // Phrase, 3190 // without any article or other determiners. For example, 3191 // "Google Cloud SQL Database". 3192 DisplayName string `json:"displayName,omitempty"` 3193 3194 // Labels: Required. A set of labels used to describe instances of this 3195 // monitored 3196 // resource type. For example, an individual Google Cloud SQL database 3197 // is 3198 // identified by values for the labels "database_id" and "zone". 3199 Labels []*LabelDescriptor `json:"labels,omitempty"` 3200 3201 // LaunchStage: Optional. The launch stage of the monitored resource 3202 // definition. 3203 // 3204 // Possible values: 3205 // "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value. 3206 // "EARLY_ACCESS" - Early Access features are limited to a closed 3207 // group of testers. To use 3208 // these features, you must sign up in advance and sign a Trusted 3209 // Tester 3210 // agreement (which includes confidentiality provisions). These features 3211 // may 3212 // be unstable, changed in backward-incompatible ways, and are 3213 // not 3214 // guaranteed to be released. 3215 // "ALPHA" - Alpha is a limited availability test for releases before 3216 // they are cleared 3217 // for widespread use. By Alpha, all significant design issues are 3218 // resolved 3219 // and we are in the process of verifying functionality. Alpha 3220 // customers 3221 // need to apply for access, agree to applicable terms, and have 3222 // their 3223 // projects whitelisted. Alpha releases don’t have to be feature 3224 // complete, 3225 // no SLAs are provided, and there are no technical support obligations, 3226 // but 3227 // they will be far enough along that customers can actually use them 3228 // in 3229 // test environments or for limited-use tests -- just like they would 3230 // in 3231 // normal production cases. 3232 // "BETA" - Beta is the point at which we are ready to open a release 3233 // for any 3234 // customer to use. There are no SLA or technical support obligations in 3235 // a 3236 // Beta release. Products will be complete from a feature perspective, 3237 // but 3238 // may have some open outstanding issues. Beta releases are suitable 3239 // for 3240 // limited production use cases. 3241 // "GA" - GA features are open to all developers and are considered 3242 // stable and 3243 // fully qualified for production use. 3244 // "DEPRECATED" - Deprecated features are scheduled to be shut down 3245 // and removed. For more 3246 // information, see the “Deprecation Policy” section of our [Terms 3247 // of 3248 // Service](https://cloud.google.com/terms/) 3249 // and the [Google Cloud Platform Subject to the 3250 // Deprecation 3251 // Policy](https://cloud.google.com/terms/deprecation) documentation. 3252 LaunchStage string `json:"launchStage,omitempty"` 3253 3254 // Name: Optional. The resource name of the monitored resource 3255 // descriptor: 3256 // "projects/{project_id}/monitoredResourceDescriptors/{type 3257 // }" where 3258 // {type} is the value of the `type` field in this object 3259 // and 3260 // {project_id} is a project ID that provides API-specific context 3261 // for 3262 // accessing the type. APIs that do not use project information can use 3263 // the 3264 // resource name format "monitoredResourceDescriptors/{type}". 3265 Name string `json:"name,omitempty"` 3266 3267 // Type: Required. The monitored resource type. For example, the 3268 // type 3269 // "cloudsql_database" represents databases in Google Cloud SQL. 3270 // The maximum length of this value is 256 characters. 3271 Type string `json:"type,omitempty"` 3272 3273 // ForceSendFields is a list of field names (e.g. "Description") to 3274 // unconditionally include in API requests. By default, fields with 3275 // empty values are omitted from API requests. However, any non-pointer, 3276 // non-interface field appearing in ForceSendFields will be sent to the 3277 // server regardless of whether the field is empty or not. This may be 3278 // used to include empty fields in Patch requests. 3279 ForceSendFields []string `json:"-"` 3280 3281 // NullFields is a list of field names (e.g. "Description") to include 3282 // in API requests with the JSON null value. By default, fields with 3283 // empty values are omitted from API requests. However, any field with 3284 // an empty value appearing in NullFields will be sent to the server as 3285 // null. It is an error if a field in this list has a non-empty value. 3286 // This may be used to include null fields in Patch requests. 3287 NullFields []string `json:"-"` 3288} 3289 3290func (s *MonitoredResourceDescriptor) MarshalJSON() ([]byte, error) { 3291 type NoMethod MonitoredResourceDescriptor 3292 raw := NoMethod(*s) 3293 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3294} 3295 3296// Monitoring: Monitoring configuration of the service. 3297// 3298// The example below shows how to configure monitored resources and 3299// metrics 3300// for monitoring. In the example, a monitored resource and two metrics 3301// are 3302// defined. The `library.googleapis.com/book/returned_count` metric is 3303// sent 3304// to both producer and consumer projects, whereas 3305// the 3306// `library.googleapis.com/book/overdue_count` metric is only sent to 3307// the 3308// consumer project. 3309// 3310// monitored_resources: 3311// - type: library.googleapis.com/branch 3312// labels: 3313// - key: /city 3314// description: The city where the library branch is located 3315// in. 3316// - key: /name 3317// description: The name of the branch. 3318// metrics: 3319// - name: library.googleapis.com/book/returned_count 3320// metric_kind: DELTA 3321// value_type: INT64 3322// labels: 3323// - key: /customer_id 3324// - name: library.googleapis.com/book/overdue_count 3325// metric_kind: GAUGE 3326// value_type: INT64 3327// labels: 3328// - key: /customer_id 3329// monitoring: 3330// producer_destinations: 3331// - monitored_resource: library.googleapis.com/branch 3332// metrics: 3333// - library.googleapis.com/book/returned_count 3334// consumer_destinations: 3335// - monitored_resource: library.googleapis.com/branch 3336// metrics: 3337// - library.googleapis.com/book/returned_count 3338// - library.googleapis.com/book/overdue_count 3339type Monitoring struct { 3340 // ConsumerDestinations: Monitoring configurations for sending metrics 3341 // to the consumer project. 3342 // There can be multiple consumer destinations. A monitored resouce type 3343 // may 3344 // appear in multiple monitoring destinations if different aggregations 3345 // are 3346 // needed for different sets of metrics associated with that 3347 // monitored 3348 // resource type. A monitored resource and metric pair may only be used 3349 // once 3350 // in the Monitoring configuration. 3351 ConsumerDestinations []*MonitoringDestination `json:"consumerDestinations,omitempty"` 3352 3353 // ProducerDestinations: Monitoring configurations for sending metrics 3354 // to the producer project. 3355 // There can be multiple producer destinations. A monitored resouce type 3356 // may 3357 // appear in multiple monitoring destinations if different aggregations 3358 // are 3359 // needed for different sets of metrics associated with that 3360 // monitored 3361 // resource type. A monitored resource and metric pair may only be used 3362 // once 3363 // in the Monitoring configuration. 3364 ProducerDestinations []*MonitoringDestination `json:"producerDestinations,omitempty"` 3365 3366 // ForceSendFields is a list of field names (e.g. 3367 // "ConsumerDestinations") to unconditionally include in API requests. 3368 // By default, fields with empty values are omitted from API requests. 3369 // However, any non-pointer, non-interface field appearing in 3370 // ForceSendFields will be sent to the server regardless of whether the 3371 // field is empty or not. This may be used to include empty fields in 3372 // Patch requests. 3373 ForceSendFields []string `json:"-"` 3374 3375 // NullFields is a list of field names (e.g. "ConsumerDestinations") to 3376 // include in API requests with the JSON null value. By default, fields 3377 // with empty values are omitted from API requests. However, any field 3378 // with an empty value appearing in NullFields will be sent to the 3379 // server as null. It is an error if a field in this list has a 3380 // non-empty value. This may be used to include null fields in Patch 3381 // requests. 3382 NullFields []string `json:"-"` 3383} 3384 3385func (s *Monitoring) MarshalJSON() ([]byte, error) { 3386 type NoMethod Monitoring 3387 raw := NoMethod(*s) 3388 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3389} 3390 3391// MonitoringDestination: Configuration of a specific monitoring 3392// destination (the producer project 3393// or the consumer project). 3394type MonitoringDestination struct { 3395 // Metrics: Types of the metrics to report to this monitoring 3396 // destination. 3397 // Each type must be defined in Service.metrics section. 3398 Metrics []string `json:"metrics,omitempty"` 3399 3400 // MonitoredResource: The monitored resource type. The type must be 3401 // defined in 3402 // Service.monitored_resources section. 3403 MonitoredResource string `json:"monitoredResource,omitempty"` 3404 3405 // ForceSendFields is a list of field names (e.g. "Metrics") to 3406 // unconditionally include in API requests. By default, fields with 3407 // empty values are omitted from API requests. However, any non-pointer, 3408 // non-interface field appearing in ForceSendFields will be sent to the 3409 // server regardless of whether the field is empty or not. This may be 3410 // used to include empty fields in Patch requests. 3411 ForceSendFields []string `json:"-"` 3412 3413 // NullFields is a list of field names (e.g. "Metrics") to include in 3414 // API requests with the JSON null value. By default, fields with empty 3415 // values are omitted from API requests. However, any field with an 3416 // empty value appearing in NullFields will be sent to the server as 3417 // null. It is an error if a field in this list has a non-empty value. 3418 // This may be used to include null fields in Patch requests. 3419 NullFields []string `json:"-"` 3420} 3421 3422func (s *MonitoringDestination) MarshalJSON() ([]byte, error) { 3423 type NoMethod MonitoringDestination 3424 raw := NoMethod(*s) 3425 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3426} 3427 3428// OAuthRequirements: OAuth scopes are a way to define data and 3429// permissions on data. For example, 3430// there are scopes defined for "Read-only access to Google Calendar" 3431// and 3432// "Access to Cloud Platform". Users can consent to a scope for an 3433// application, 3434// giving it permission to access that data on their behalf. 3435// 3436// OAuth scope specifications should be fairly coarse grained; a user 3437// will need 3438// to see and understand the text description of what your scope 3439// means. 3440// 3441// In most cases: use one or at most two OAuth scopes for an entire 3442// family of 3443// products. If your product has multiple APIs, you should probably be 3444// sharing 3445// the OAuth scope across all of those APIs. 3446// 3447// When you need finer grained OAuth consent screens: talk with your 3448// product 3449// management about how developers will use them in practice. 3450// 3451// Please note that even though each of the canonical scopes is enough 3452// for a 3453// request to be accepted and passed to the backend, a request can still 3454// fail 3455// due to the backend requiring additional scopes or permissions. 3456type OAuthRequirements struct { 3457 // CanonicalScopes: The list of publicly documented OAuth scopes that 3458 // are allowed access. An 3459 // OAuth token containing any of these scopes will be 3460 // accepted. 3461 // 3462 // Example: 3463 // 3464 // canonical_scopes: https://www.googleapis.com/auth/calendar, 3465 // https://www.googleapis.com/auth/calendar.read 3466 CanonicalScopes string `json:"canonicalScopes,omitempty"` 3467 3468 // ForceSendFields is a list of field names (e.g. "CanonicalScopes") to 3469 // unconditionally include in API requests. By default, fields with 3470 // empty values are omitted from API requests. However, any non-pointer, 3471 // non-interface field appearing in ForceSendFields will be sent to the 3472 // server regardless of whether the field is empty or not. This may be 3473 // used to include empty fields in Patch requests. 3474 ForceSendFields []string `json:"-"` 3475 3476 // NullFields is a list of field names (e.g. "CanonicalScopes") to 3477 // include in API requests with the JSON null value. By default, fields 3478 // with empty values are omitted from API requests. However, any field 3479 // with an empty value appearing in NullFields will be sent to the 3480 // server as null. It is an error if a field in this list has a 3481 // non-empty value. This may be used to include null fields in Patch 3482 // requests. 3483 NullFields []string `json:"-"` 3484} 3485 3486func (s *OAuthRequirements) MarshalJSON() ([]byte, error) { 3487 type NoMethod OAuthRequirements 3488 raw := NoMethod(*s) 3489 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3490} 3491 3492// Operation: This resource represents a long-running operation that is 3493// the result of a 3494// network API call. 3495type Operation struct { 3496 // Done: If the value is `false`, it means the operation is still in 3497 // progress. 3498 // If `true`, the operation is completed, and either `error` or 3499 // `response` is 3500 // available. 3501 Done bool `json:"done,omitempty"` 3502 3503 // Error: The error result of the operation in case of failure or 3504 // cancellation. 3505 Error *Status `json:"error,omitempty"` 3506 3507 // Metadata: Service-specific metadata associated with the operation. 3508 // It typically 3509 // contains progress information and common metadata such as create 3510 // time. 3511 // Some services might not provide such metadata. Any method that 3512 // returns a 3513 // long-running operation should document the metadata type, if any. 3514 Metadata googleapi.RawMessage `json:"metadata,omitempty"` 3515 3516 // Name: The server-assigned name, which is only unique within the same 3517 // service that 3518 // originally returns it. If you use the default HTTP mapping, 3519 // the 3520 // `name` should be a resource name ending with 3521 // `operations/{unique_id}`. 3522 Name string `json:"name,omitempty"` 3523 3524 // Response: The normal response of the operation in case of success. 3525 // If the original 3526 // method returns no data on success, such as `Delete`, the response 3527 // is 3528 // `google.protobuf.Empty`. If the original method is 3529 // standard 3530 // `Get`/`Create`/`Update`, the response should be the resource. For 3531 // other 3532 // methods, the response should have the type `XxxResponse`, where 3533 // `Xxx` 3534 // is the original method name. For example, if the original method 3535 // name 3536 // is `TakeSnapshot()`, the inferred response type 3537 // is 3538 // `TakeSnapshotResponse`. 3539 Response googleapi.RawMessage `json:"response,omitempty"` 3540 3541 // ServerResponse contains the HTTP response code and headers from the 3542 // server. 3543 googleapi.ServerResponse `json:"-"` 3544 3545 // ForceSendFields is a list of field names (e.g. "Done") to 3546 // unconditionally include in API requests. By default, fields with 3547 // empty values are omitted from API requests. However, any non-pointer, 3548 // non-interface field appearing in ForceSendFields will be sent to the 3549 // server regardless of whether the field is empty or not. This may be 3550 // used to include empty fields in Patch requests. 3551 ForceSendFields []string `json:"-"` 3552 3553 // NullFields is a list of field names (e.g. "Done") to include in API 3554 // requests with the JSON null value. By default, fields with empty 3555 // values are omitted from API requests. However, any field with an 3556 // empty value appearing in NullFields will be sent to the server as 3557 // null. It is an error if a field in this list has a non-empty value. 3558 // This may be used to include null fields in Patch requests. 3559 NullFields []string `json:"-"` 3560} 3561 3562func (s *Operation) MarshalJSON() ([]byte, error) { 3563 type NoMethod Operation 3564 raw := NoMethod(*s) 3565 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3566} 3567 3568// Option: A protocol buffer option, which can be attached to a message, 3569// field, 3570// enumeration, etc. 3571type Option struct { 3572 // Name: The option's name. For protobuf built-in options (options 3573 // defined in 3574 // descriptor.proto), this is the short name. For example, 3575 // "map_entry". 3576 // For custom options, it should be the fully-qualified name. For 3577 // example, 3578 // "google.api.http". 3579 Name string `json:"name,omitempty"` 3580 3581 // Value: The option's value packed in an Any message. If the value is a 3582 // primitive, 3583 // the corresponding wrapper type defined in 3584 // google/protobuf/wrappers.proto 3585 // should be used. If the value is an enum, it should be stored as an 3586 // int32 3587 // value using the google.protobuf.Int32Value type. 3588 Value googleapi.RawMessage `json:"value,omitempty"` 3589 3590 // ForceSendFields is a list of field names (e.g. "Name") to 3591 // unconditionally include in API requests. By default, fields with 3592 // empty values are omitted from API requests. However, any non-pointer, 3593 // non-interface field appearing in ForceSendFields will be sent to the 3594 // server regardless of whether the field is empty or not. This may be 3595 // used to include empty fields in Patch requests. 3596 ForceSendFields []string `json:"-"` 3597 3598 // NullFields is a list of field names (e.g. "Name") to include in API 3599 // requests with the JSON null value. By default, fields with empty 3600 // values are omitted from API requests. However, any field with an 3601 // empty value appearing in NullFields will be sent to the server as 3602 // null. It is an error if a field in this list has a non-empty value. 3603 // This may be used to include null fields in Patch requests. 3604 NullFields []string `json:"-"` 3605} 3606 3607func (s *Option) MarshalJSON() ([]byte, error) { 3608 type NoMethod Option 3609 raw := NoMethod(*s) 3610 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3611} 3612 3613// Page: Represents a documentation page. A page can contain subpages to 3614// represent 3615// nested documentation set structure. 3616type Page struct { 3617 // Content: The Markdown content of the page. You can use <code>(== 3618 // include {path} 3619 // ==)</code> to include content from a Markdown file. 3620 Content string `json:"content,omitempty"` 3621 3622 // Name: The name of the page. It will be used as an identity of the 3623 // page to 3624 // generate URI of the page, text of the link to this page in 3625 // navigation, 3626 // etc. The full page name (start from the root page name to this 3627 // page 3628 // concatenated with `.`) can be used as reference to the page in 3629 // your 3630 // documentation. For example: 3631 // <pre><code>pages: 3632 // - name: Tutorial 3633 // content: (== include tutorial.md ==) 3634 // subpages: 3635 // - name: Java 3636 // content: (== include tutorial_java.md 3637 // ==) 3638 // </code></pre> 3639 // You can reference `Java` page using Markdown reference link 3640 // syntax: 3641 // `Java`. 3642 Name string `json:"name,omitempty"` 3643 3644 // Subpages: Subpages of this page. The order of subpages specified here 3645 // will be 3646 // honored in the generated docset. 3647 Subpages []*Page `json:"subpages,omitempty"` 3648 3649 // ForceSendFields is a list of field names (e.g. "Content") to 3650 // unconditionally include in API requests. By default, fields with 3651 // empty values are omitted from API requests. However, any non-pointer, 3652 // non-interface field appearing in ForceSendFields will be sent to the 3653 // server regardless of whether the field is empty or not. This may be 3654 // used to include empty fields in Patch requests. 3655 ForceSendFields []string `json:"-"` 3656 3657 // NullFields is a list of field names (e.g. "Content") to include in 3658 // API requests with the JSON null value. By default, fields with empty 3659 // values are omitted from API requests. However, any field with an 3660 // empty value appearing in NullFields will be sent to the server as 3661 // null. It is an error if a field in this list has a non-empty value. 3662 // This may be used to include null fields in Patch requests. 3663 NullFields []string `json:"-"` 3664} 3665 3666func (s *Page) MarshalJSON() ([]byte, error) { 3667 type NoMethod Page 3668 raw := NoMethod(*s) 3669 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3670} 3671 3672// Quota: Quota configuration helps to achieve fairness and budgeting in 3673// service 3674// usage. 3675// 3676// The metric based quota configuration works this way: 3677// - The service configuration defines a set of metrics. 3678// - For API calls, the quota.metric_rules maps methods to metrics with 3679// corresponding costs. 3680// - The quota.limits defines limits on the metrics, which will be used 3681// for 3682// quota checks at runtime. 3683// 3684// An example quota configuration in yaml format: 3685// 3686// quota: 3687// limits: 3688// 3689// - name: apiWriteQpsPerProject 3690// metric: library.googleapis.com/write_calls 3691// unit: "1/min/{project}" # rate limit for consumer projects 3692// values: 3693// STANDARD: 10000 3694// 3695// 3696// # The metric rules bind all methods to the read_calls metric, 3697// # except for the UpdateBook and DeleteBook methods. These two 3698// methods 3699// # are mapped to the write_calls metric, with the UpdateBook 3700// method 3701// # consuming at twice rate as the DeleteBook method. 3702// metric_rules: 3703// - selector: "*" 3704// metric_costs: 3705// library.googleapis.com/read_calls: 1 3706// - selector: google.example.library.v1.LibraryService.UpdateBook 3707// metric_costs: 3708// library.googleapis.com/write_calls: 2 3709// - selector: google.example.library.v1.LibraryService.DeleteBook 3710// metric_costs: 3711// library.googleapis.com/write_calls: 1 3712// 3713// Corresponding Metric definition: 3714// 3715// metrics: 3716// - name: library.googleapis.com/read_calls 3717// display_name: Read requests 3718// metric_kind: DELTA 3719// value_type: INT64 3720// 3721// - name: library.googleapis.com/write_calls 3722// display_name: Write requests 3723// metric_kind: DELTA 3724// value_type: INT64 3725// 3726// 3727type Quota struct { 3728 // Limits: List of `QuotaLimit` definitions for the service. 3729 Limits []*QuotaLimit `json:"limits,omitempty"` 3730 3731 // MetricRules: List of `MetricRule` definitions, each one mapping a 3732 // selected method to one 3733 // or more metrics. 3734 MetricRules []*MetricRule `json:"metricRules,omitempty"` 3735 3736 // ForceSendFields is a list of field names (e.g. "Limits") to 3737 // unconditionally include in API requests. By default, fields with 3738 // empty values are omitted from API requests. However, any non-pointer, 3739 // non-interface field appearing in ForceSendFields will be sent to the 3740 // server regardless of whether the field is empty or not. This may be 3741 // used to include empty fields in Patch requests. 3742 ForceSendFields []string `json:"-"` 3743 3744 // NullFields is a list of field names (e.g. "Limits") to include in API 3745 // requests with the JSON null value. By default, fields with empty 3746 // values are omitted from API requests. However, any field with an 3747 // empty value appearing in NullFields will be sent to the server as 3748 // null. It is an error if a field in this list has a non-empty value. 3749 // This may be used to include null fields in Patch requests. 3750 NullFields []string `json:"-"` 3751} 3752 3753func (s *Quota) MarshalJSON() ([]byte, error) { 3754 type NoMethod Quota 3755 raw := NoMethod(*s) 3756 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3757} 3758 3759// QuotaLimit: `QuotaLimit` defines a specific limit that applies over a 3760// specified duration 3761// for a limit type. There can be at most one limit for a duration and 3762// limit 3763// type combination defined within a `QuotaGroup`. 3764type QuotaLimit struct { 3765 // DefaultLimit: Default number of tokens that can be consumed during 3766 // the specified 3767 // duration. This is the number of tokens assigned when a 3768 // client 3769 // application developer activates the service for his/her 3770 // project. 3771 // 3772 // Specifying a value of 0 will block all requests. This can be used if 3773 // you 3774 // are provisioning quota to selected consumers and blocking 3775 // others. 3776 // Similarly, a value of -1 will indicate an unlimited quota. No 3777 // other 3778 // negative values are allowed. 3779 // 3780 // Used by group-based quotas only. 3781 DefaultLimit int64 `json:"defaultLimit,omitempty,string"` 3782 3783 // Description: Optional. User-visible, extended description for this 3784 // quota limit. 3785 // Should be used only when more context is needed to understand this 3786 // limit 3787 // than provided by the limit's display name (see: `display_name`). 3788 Description string `json:"description,omitempty"` 3789 3790 // DisplayName: User-visible display name for this limit. 3791 // Optional. If not set, the UI will provide a default display name 3792 // based on 3793 // the quota configuration. This field can be used to override the 3794 // default 3795 // display name generated from the configuration. 3796 DisplayName string `json:"displayName,omitempty"` 3797 3798 // Duration: Duration of this limit in textual notation. Must be "100s" 3799 // or "1d". 3800 // 3801 // Used by group-based quotas only. 3802 Duration string `json:"duration,omitempty"` 3803 3804 // FreeTier: Free tier value displayed in the Developers Console for 3805 // this limit. 3806 // The free tier is the number of tokens that will be subtracted from 3807 // the 3808 // billed amount when billing is enabled. 3809 // This field can only be set on a limit with duration "1d", in a 3810 // billable 3811 // group; it is invalid on any other limit. If this field is not set, 3812 // it 3813 // defaults to 0, indicating that there is no free tier for this 3814 // service. 3815 // 3816 // Used by group-based quotas only. 3817 FreeTier int64 `json:"freeTier,omitempty,string"` 3818 3819 // MaxLimit: Maximum number of tokens that can be consumed during the 3820 // specified 3821 // duration. Client application developers can override the default 3822 // limit up 3823 // to this maximum. If specified, this value cannot be set to a value 3824 // less 3825 // than the default limit. If not specified, it is set to the default 3826 // limit. 3827 // 3828 // To allow clients to apply overrides with no upper bound, set this to 3829 // -1, 3830 // indicating unlimited maximum quota. 3831 // 3832 // Used by group-based quotas only. 3833 MaxLimit int64 `json:"maxLimit,omitempty,string"` 3834 3835 // Metric: The name of the metric this quota limit applies to. The quota 3836 // limits with 3837 // the same metric will be checked together during runtime. The metric 3838 // must be 3839 // defined within the service config. 3840 Metric string `json:"metric,omitempty"` 3841 3842 // Name: Name of the quota limit. 3843 // 3844 // The name must be provided, and it must be unique within the service. 3845 // The 3846 // name can only include alphanumeric characters as well as '-'. 3847 // 3848 // The maximum length of the limit name is 64 characters. 3849 Name string `json:"name,omitempty"` 3850 3851 // Unit: Specify the unit of the quota limit. It uses the same syntax 3852 // as 3853 // Metric.unit. The supported unit kinds are determined by the 3854 // quota 3855 // backend system. 3856 // 3857 // Here are some examples: 3858 // * "1/min/{project}" for quota per minute per project. 3859 // 3860 // Note: the order of unit components is insignificant. 3861 // The "1" at the beginning is required to follow the metric unit 3862 // syntax. 3863 Unit string `json:"unit,omitempty"` 3864 3865 // Values: Tiered limit values. You must specify this as a key:value 3866 // pair, with an 3867 // integer value that is the maximum number of requests allowed for 3868 // the 3869 // specified unit. Currently only STANDARD is supported. 3870 Values map[string]string `json:"values,omitempty"` 3871 3872 // ForceSendFields is a list of field names (e.g. "DefaultLimit") to 3873 // unconditionally include in API requests. By default, fields with 3874 // empty values are omitted from API requests. However, any non-pointer, 3875 // non-interface field appearing in ForceSendFields will be sent to the 3876 // server regardless of whether the field is empty or not. This may be 3877 // used to include empty fields in Patch requests. 3878 ForceSendFields []string `json:"-"` 3879 3880 // NullFields is a list of field names (e.g. "DefaultLimit") to include 3881 // in API requests with the JSON null value. By default, fields with 3882 // empty values are omitted from API requests. However, any field with 3883 // an empty value appearing in NullFields will be sent to the server as 3884 // null. It is an error if a field in this list has a non-empty value. 3885 // This may be used to include null fields in Patch requests. 3886 NullFields []string `json:"-"` 3887} 3888 3889func (s *QuotaLimit) MarshalJSON() ([]byte, error) { 3890 type NoMethod QuotaLimit 3891 raw := NoMethod(*s) 3892 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3893} 3894 3895// Range: Represents a found unused range. 3896type Range struct { 3897 // IpCidrRange: CIDR range in "10.x.x.x/y" format that is within 3898 // the 3899 // allocated ranges and currently unused. 3900 IpCidrRange string `json:"ipCidrRange,omitempty"` 3901 3902 // Network: In the Shared VPC host project, the VPC network that's 3903 // peered with the 3904 // consumer network. For 3905 // example: 3906 // `projects/1234321/global/networks/host-network` 3907 Network string `json:"network,omitempty"` 3908 3909 // ForceSendFields is a list of field names (e.g. "IpCidrRange") to 3910 // unconditionally include in API requests. By default, fields with 3911 // empty values are omitted from API requests. However, any non-pointer, 3912 // non-interface field appearing in ForceSendFields will be sent to the 3913 // server regardless of whether the field is empty or not. This may be 3914 // used to include empty fields in Patch requests. 3915 ForceSendFields []string `json:"-"` 3916 3917 // NullFields is a list of field names (e.g. "IpCidrRange") to include 3918 // in API requests with the JSON null value. By default, fields with 3919 // empty values are omitted from API requests. However, any field with 3920 // an empty value appearing in NullFields will be sent to the server as 3921 // null. It is an error if a field in this list has a non-empty value. 3922 // This may be used to include null fields in Patch requests. 3923 NullFields []string `json:"-"` 3924} 3925 3926func (s *Range) MarshalJSON() ([]byte, error) { 3927 type NoMethod Range 3928 raw := NoMethod(*s) 3929 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3930} 3931 3932// SearchRangeRequest: Request to search for an unused range within 3933// allocated ranges. 3934type SearchRangeRequest struct { 3935 // IpPrefixLength: Required. The prefix length of the IP range. 3936 // Use usual CIDR range notation. 3937 // For example, '30' to find unused x.x.x.x/30 CIDR range. 3938 // Actual range will be determined using allocated range for the 3939 // consumer 3940 // peered network and returned in the result. 3941 IpPrefixLength int64 `json:"ipPrefixLength,omitempty"` 3942 3943 // Network: Network name in the consumer project. This network must 3944 // have been 3945 // already peered with a shared VPC network using 3946 // CreateConnection 3947 // method. 3948 // Must be in a form 3949 // 'projects/{project}/global/networks/{network}'. 3950 // {project} is a project number, as in '12345' 3951 // {network} is network name. 3952 Network string `json:"network,omitempty"` 3953 3954 // ForceSendFields is a list of field names (e.g. "IpPrefixLength") to 3955 // unconditionally include in API requests. By default, fields with 3956 // empty values are omitted from API requests. However, any non-pointer, 3957 // non-interface field appearing in ForceSendFields will be sent to the 3958 // server regardless of whether the field is empty or not. This may be 3959 // used to include empty fields in Patch requests. 3960 ForceSendFields []string `json:"-"` 3961 3962 // NullFields is a list of field names (e.g. "IpPrefixLength") to 3963 // include in API requests with the JSON null value. By default, fields 3964 // with empty values are omitted from API requests. However, any field 3965 // with an empty value appearing in NullFields will be sent to the 3966 // server as null. It is an error if a field in this list has a 3967 // non-empty value. This may be used to include null fields in Patch 3968 // requests. 3969 NullFields []string `json:"-"` 3970} 3971 3972func (s *SearchRangeRequest) MarshalJSON() ([]byte, error) { 3973 type NoMethod SearchRangeRequest 3974 raw := NoMethod(*s) 3975 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 3976} 3977 3978// Service: `Service` is the root object of Google service configuration 3979// schema. It 3980// describes basic information about a service, such as the name and 3981// the 3982// title, and delegates other aspects to sub-sections. Each sub-section 3983// is 3984// either a proto message or a repeated proto message that configures 3985// a 3986// specific aspect, such as auth. See each proto message definition for 3987// details. 3988// 3989// Example: 3990// 3991// type: google.api.Service 3992// config_version: 3 3993// name: calendar.googleapis.com 3994// title: Google Calendar API 3995// apis: 3996// - name: google.calendar.v3.Calendar 3997// authentication: 3998// providers: 3999// - id: google_calendar_auth 4000// jwks_uri: https://www.googleapis.com/oauth2/v1/certs 4001// issuer: https://securetoken.google.com 4002// rules: 4003// - selector: "*" 4004// requirements: 4005// provider_id: google_calendar_auth 4006type Service struct { 4007 // Apis: A list of API interfaces exported by this service. Only the 4008 // `name` field 4009 // of the google.protobuf.Api needs to be provided by the 4010 // configuration 4011 // author, as the remaining fields will be derived from the IDL during 4012 // the 4013 // normalization process. It is an error to specify an API interface 4014 // here 4015 // which cannot be resolved against the associated IDL files. 4016 Apis []*Api `json:"apis,omitempty"` 4017 4018 // Authentication: Auth configuration. 4019 Authentication *Authentication `json:"authentication,omitempty"` 4020 4021 // Backend: API backend configuration. 4022 Backend *Backend `json:"backend,omitempty"` 4023 4024 // Billing: Billing configuration. 4025 Billing *Billing `json:"billing,omitempty"` 4026 4027 // ConfigVersion: The semantic version of the service configuration. The 4028 // config version 4029 // affects the interpretation of the service configuration. For 4030 // example, 4031 // certain features are enabled by default for certain config 4032 // versions. 4033 // The latest config version is `3`. 4034 ConfigVersion int64 `json:"configVersion,omitempty"` 4035 4036 // Context: Context configuration. 4037 Context *Context `json:"context,omitempty"` 4038 4039 // Control: Configuration for the service control plane. 4040 Control *Control `json:"control,omitempty"` 4041 4042 // CustomError: Custom error configuration. 4043 CustomError *CustomError `json:"customError,omitempty"` 4044 4045 // Documentation: Additional API documentation. 4046 Documentation *Documentation `json:"documentation,omitempty"` 4047 4048 // Endpoints: Configuration for network endpoints. If this is empty, 4049 // then an endpoint 4050 // with the same name as the service is automatically generated to 4051 // service all 4052 // defined APIs. 4053 Endpoints []*Endpoint `json:"endpoints,omitempty"` 4054 4055 // Enums: A list of all enum types included in this API service. 4056 // Enums 4057 // referenced directly or indirectly by the `apis` are 4058 // automatically 4059 // included. Enums which are not referenced but shall be 4060 // included 4061 // should be listed here by name. Example: 4062 // 4063 // enums: 4064 // - name: google.someapi.v1.SomeEnum 4065 Enums []*Enum `json:"enums,omitempty"` 4066 4067 // Http: HTTP configuration. 4068 Http *Http `json:"http,omitempty"` 4069 4070 // Id: A unique ID for a specific instance of this message, typically 4071 // assigned 4072 // by the client for tracking purpose. Must be no longer than 63 4073 // characters 4074 // and only lower case letters, digits, '.', '_' and '-' are allowed. 4075 // If 4076 // empty, the server may choose to generate one instead. 4077 Id string `json:"id,omitempty"` 4078 4079 // Logging: Logging configuration. 4080 Logging *Logging `json:"logging,omitempty"` 4081 4082 // Logs: Defines the logs used by this service. 4083 Logs []*LogDescriptor `json:"logs,omitempty"` 4084 4085 // Metrics: Defines the metrics used by this service. 4086 Metrics []*MetricDescriptor `json:"metrics,omitempty"` 4087 4088 // MonitoredResources: Defines the monitored resources used by this 4089 // service. This is required 4090 // by the Service.monitoring and Service.logging configurations. 4091 MonitoredResources []*MonitoredResourceDescriptor `json:"monitoredResources,omitempty"` 4092 4093 // Monitoring: Monitoring configuration. 4094 Monitoring *Monitoring `json:"monitoring,omitempty"` 4095 4096 // Name: The service name, which is a DNS-like logical identifier for 4097 // the 4098 // service, such as `calendar.googleapis.com`. The service 4099 // name 4100 // typically goes through DNS verification to make sure the owner 4101 // of the service also owns the DNS name. 4102 Name string `json:"name,omitempty"` 4103 4104 // ProducerProjectId: The Google project that owns this service. 4105 ProducerProjectId string `json:"producerProjectId,omitempty"` 4106 4107 // Quota: Quota configuration. 4108 Quota *Quota `json:"quota,omitempty"` 4109 4110 // SourceInfo: Output only. The source information for this 4111 // configuration if available. 4112 SourceInfo *SourceInfo `json:"sourceInfo,omitempty"` 4113 4114 // SystemParameters: System parameter configuration. 4115 SystemParameters *SystemParameters `json:"systemParameters,omitempty"` 4116 4117 // SystemTypes: A list of all proto message types included in this API 4118 // service. 4119 // It serves similar purpose as [google.api.Service.types], except 4120 // that 4121 // these types are not needed by user-defined APIs. Therefore, they will 4122 // not 4123 // show up in the generated discovery doc. This field should only be 4124 // used 4125 // to define system APIs in ESF. 4126 SystemTypes []*Type `json:"systemTypes,omitempty"` 4127 4128 // Title: The product title for this service. 4129 Title string `json:"title,omitempty"` 4130 4131 // Types: A list of all proto message types included in this API 4132 // service. 4133 // Types referenced directly or indirectly by the `apis` 4134 // are 4135 // automatically included. Messages which are not referenced but 4136 // shall be included, such as types used by the `google.protobuf.Any` 4137 // type, 4138 // should be listed here by name. Example: 4139 // 4140 // types: 4141 // - name: google.protobuf.Int32 4142 Types []*Type `json:"types,omitempty"` 4143 4144 // Usage: Configuration controlling usage of this service. 4145 Usage *Usage `json:"usage,omitempty"` 4146 4147 // ForceSendFields is a list of field names (e.g. "Apis") to 4148 // unconditionally include in API requests. By default, fields with 4149 // empty values are omitted from API requests. However, any non-pointer, 4150 // non-interface field appearing in ForceSendFields will be sent to the 4151 // server regardless of whether the field is empty or not. This may be 4152 // used to include empty fields in Patch requests. 4153 ForceSendFields []string `json:"-"` 4154 4155 // NullFields is a list of field names (e.g. "Apis") to include in API 4156 // requests with the JSON null value. By default, fields with empty 4157 // values are omitted from API requests. However, any field with an 4158 // empty value appearing in NullFields will be sent to the server as 4159 // null. It is an error if a field in this list has a non-empty value. 4160 // This may be used to include null fields in Patch requests. 4161 NullFields []string `json:"-"` 4162} 4163 4164func (s *Service) MarshalJSON() ([]byte, error) { 4165 type NoMethod Service 4166 raw := NoMethod(*s) 4167 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 4168} 4169 4170// ServiceIdentity: The per-product per-project service identity for a 4171// service. 4172// 4173// 4174// Use this field to configure per-product per-project service 4175// identity. 4176// Example of a service identity configuration. 4177// 4178// usage: 4179// service_identity: 4180// - service_account_parent: "projects/123456789" 4181// display_name: "Cloud XXX Service Agent" 4182// description: "Used as the identity of Cloud XXX to access 4183// resources" 4184type ServiceIdentity struct { 4185 // Description: Optional. A user-specified opaque description of the 4186 // service account. 4187 // Must be less than or equal to 256 UTF-8 bytes. 4188 Description string `json:"description,omitempty"` 4189 4190 // DisplayName: Optional. A user-specified name for the service 4191 // account. 4192 // Must be less than or equal to 100 UTF-8 bytes. 4193 DisplayName string `json:"displayName,omitempty"` 4194 4195 // ServiceAccountParent: A service account project that hosts the 4196 // service accounts. 4197 // 4198 // An example name would be: 4199 // `projects/123456789` 4200 ServiceAccountParent string `json:"serviceAccountParent,omitempty"` 4201 4202 // ForceSendFields is a list of field names (e.g. "Description") to 4203 // unconditionally include in API requests. By default, fields with 4204 // empty values are omitted from API requests. However, any non-pointer, 4205 // non-interface field appearing in ForceSendFields will be sent to the 4206 // server regardless of whether the field is empty or not. This may be 4207 // used to include empty fields in Patch requests. 4208 ForceSendFields []string `json:"-"` 4209 4210 // NullFields is a list of field names (e.g. "Description") to include 4211 // in API requests with the JSON null value. By default, fields with 4212 // empty values are omitted from API requests. However, any field with 4213 // an empty value appearing in NullFields will be sent to the server as 4214 // null. It is an error if a field in this list has a non-empty value. 4215 // This may be used to include null fields in Patch requests. 4216 NullFields []string `json:"-"` 4217} 4218 4219func (s *ServiceIdentity) MarshalJSON() ([]byte, error) { 4220 type NoMethod ServiceIdentity 4221 raw := NoMethod(*s) 4222 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 4223} 4224 4225// SourceContext: `SourceContext` represents information about the 4226// source of a 4227// protobuf element, like the file in which it is defined. 4228type SourceContext struct { 4229 // FileName: The path-qualified name of the .proto file that contained 4230 // the associated 4231 // protobuf element. For example: 4232 // "google/protobuf/source_context.proto". 4233 FileName string `json:"fileName,omitempty"` 4234 4235 // ForceSendFields is a list of field names (e.g. "FileName") to 4236 // unconditionally include in API requests. By default, fields with 4237 // empty values are omitted from API requests. However, any non-pointer, 4238 // non-interface field appearing in ForceSendFields will be sent to the 4239 // server regardless of whether the field is empty or not. This may be 4240 // used to include empty fields in Patch requests. 4241 ForceSendFields []string `json:"-"` 4242 4243 // NullFields is a list of field names (e.g. "FileName") to include in 4244 // API requests with the JSON null value. By default, fields with empty 4245 // values are omitted from API requests. However, any field with an 4246 // empty value appearing in NullFields will be sent to the server as 4247 // null. It is an error if a field in this list has a non-empty value. 4248 // This may be used to include null fields in Patch requests. 4249 NullFields []string `json:"-"` 4250} 4251 4252func (s *SourceContext) MarshalJSON() ([]byte, error) { 4253 type NoMethod SourceContext 4254 raw := NoMethod(*s) 4255 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 4256} 4257 4258// SourceInfo: Source information used to create a Service Config 4259type SourceInfo struct { 4260 // SourceFiles: All files used during config generation. 4261 SourceFiles []googleapi.RawMessage `json:"sourceFiles,omitempty"` 4262 4263 // ForceSendFields is a list of field names (e.g. "SourceFiles") to 4264 // unconditionally include in API requests. By default, fields with 4265 // empty values are omitted from API requests. However, any non-pointer, 4266 // non-interface field appearing in ForceSendFields will be sent to the 4267 // server regardless of whether the field is empty or not. This may be 4268 // used to include empty fields in Patch requests. 4269 ForceSendFields []string `json:"-"` 4270 4271 // NullFields is a list of field names (e.g. "SourceFiles") to include 4272 // in API requests with the JSON null value. By default, fields with 4273 // empty values are omitted from API requests. However, any field with 4274 // an empty value appearing in NullFields will be sent to the server as 4275 // null. It is an error if a field in this list has a non-empty value. 4276 // This may be used to include null fields in Patch requests. 4277 NullFields []string `json:"-"` 4278} 4279 4280func (s *SourceInfo) MarshalJSON() ([]byte, error) { 4281 type NoMethod SourceInfo 4282 raw := NoMethod(*s) 4283 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 4284} 4285 4286// Status: The `Status` type defines a logical error model that is 4287// suitable for 4288// different programming environments, including REST APIs and RPC APIs. 4289// It is 4290// used by [gRPC](https://github.com/grpc). Each `Status` message 4291// contains 4292// three pieces of data: error code, error message, and error 4293// details. 4294// 4295// You can find out more about this error model and how to work with it 4296// in the 4297// [API Design Guide](https://cloud.google.com/apis/design/errors). 4298type Status struct { 4299 // Code: The status code, which should be an enum value of 4300 // google.rpc.Code. 4301 Code int64 `json:"code,omitempty"` 4302 4303 // Details: A list of messages that carry the error details. There is a 4304 // common set of 4305 // message types for APIs to use. 4306 Details []googleapi.RawMessage `json:"details,omitempty"` 4307 4308 // Message: A developer-facing error message, which should be in 4309 // English. Any 4310 // user-facing error message should be localized and sent in 4311 // the 4312 // google.rpc.Status.details field, or localized by the client. 4313 Message string `json:"message,omitempty"` 4314 4315 // ForceSendFields is a list of field names (e.g. "Code") to 4316 // unconditionally include in API requests. By default, fields with 4317 // empty values are omitted from API requests. However, any non-pointer, 4318 // non-interface field appearing in ForceSendFields will be sent to the 4319 // server regardless of whether the field is empty or not. This may be 4320 // used to include empty fields in Patch requests. 4321 ForceSendFields []string `json:"-"` 4322 4323 // NullFields is a list of field names (e.g. "Code") to include in API 4324 // requests with the JSON null value. By default, fields with empty 4325 // values are omitted from API requests. However, any field with an 4326 // empty value appearing in NullFields will be sent to the server as 4327 // null. It is an error if a field in this list has a non-empty value. 4328 // This may be used to include null fields in Patch requests. 4329 NullFields []string `json:"-"` 4330} 4331 4332func (s *Status) MarshalJSON() ([]byte, error) { 4333 type NoMethod Status 4334 raw := NoMethod(*s) 4335 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 4336} 4337 4338// Subnetwork: Represents a subnet that was created or discovered by a 4339// private access 4340// management service. 4341type Subnetwork struct { 4342 // IpCidrRange: Subnetwork CIDR range in `10.x.x.x/y` format. 4343 IpCidrRange string `json:"ipCidrRange,omitempty"` 4344 4345 // Name: Subnetwork name. 4346 // See https://cloud.google.com/compute/docs/vpc/ 4347 Name string `json:"name,omitempty"` 4348 4349 // Network: In the Shared VPC host project, the VPC network that's 4350 // peered with the 4351 // consumer network. For 4352 // example: 4353 // `projects/1234321/global/networks/host-network` 4354 Network string `json:"network,omitempty"` 4355 4356 // OutsideAllocation: This is a discovered subnet that is not within the 4357 // current consumer 4358 // allocated ranges. 4359 OutsideAllocation bool `json:"outsideAllocation,omitempty"` 4360 4361 // ForceSendFields is a list of field names (e.g. "IpCidrRange") to 4362 // unconditionally include in API requests. By default, fields with 4363 // empty values are omitted from API requests. However, any non-pointer, 4364 // non-interface field appearing in ForceSendFields will be sent to the 4365 // server regardless of whether the field is empty or not. This may be 4366 // used to include empty fields in Patch requests. 4367 ForceSendFields []string `json:"-"` 4368 4369 // NullFields is a list of field names (e.g. "IpCidrRange") to include 4370 // in API requests with the JSON null value. By default, fields with 4371 // empty values are omitted from API requests. However, any field with 4372 // an empty value appearing in NullFields will be sent to the server as 4373 // null. It is an error if a field in this list has a non-empty value. 4374 // This may be used to include null fields in Patch requests. 4375 NullFields []string `json:"-"` 4376} 4377 4378func (s *Subnetwork) MarshalJSON() ([]byte, error) { 4379 type NoMethod Subnetwork 4380 raw := NoMethod(*s) 4381 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 4382} 4383 4384// SystemParameter: Define a parameter's name and location. The 4385// parameter may be passed as either 4386// an HTTP header or a URL query parameter, and if both are passed the 4387// behavior 4388// is implementation-dependent. 4389type SystemParameter struct { 4390 // HttpHeader: Define the HTTP header name to use for the parameter. It 4391 // is case 4392 // insensitive. 4393 HttpHeader string `json:"httpHeader,omitempty"` 4394 4395 // Name: Define the name of the parameter, such as "api_key" . It is 4396 // case sensitive. 4397 Name string `json:"name,omitempty"` 4398 4399 // UrlQueryParameter: Define the URL query parameter name to use for the 4400 // parameter. It is case 4401 // sensitive. 4402 UrlQueryParameter string `json:"urlQueryParameter,omitempty"` 4403 4404 // ForceSendFields is a list of field names (e.g. "HttpHeader") to 4405 // unconditionally include in API requests. By default, fields with 4406 // empty values are omitted from API requests. However, any non-pointer, 4407 // non-interface field appearing in ForceSendFields will be sent to the 4408 // server regardless of whether the field is empty or not. This may be 4409 // used to include empty fields in Patch requests. 4410 ForceSendFields []string `json:"-"` 4411 4412 // NullFields is a list of field names (e.g. "HttpHeader") to include in 4413 // API requests with the JSON null value. By default, fields with empty 4414 // values are omitted from API requests. However, any field with an 4415 // empty value appearing in NullFields will be sent to the server as 4416 // null. It is an error if a field in this list has a non-empty value. 4417 // This may be used to include null fields in Patch requests. 4418 NullFields []string `json:"-"` 4419} 4420 4421func (s *SystemParameter) MarshalJSON() ([]byte, error) { 4422 type NoMethod SystemParameter 4423 raw := NoMethod(*s) 4424 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 4425} 4426 4427// SystemParameterRule: Define a system parameter rule mapping system 4428// parameter definitions to 4429// methods. 4430type SystemParameterRule struct { 4431 // Parameters: Define parameters. Multiple names may be defined for a 4432 // parameter. 4433 // For a given method call, only one of them should be used. If 4434 // multiple 4435 // names are used the behavior is implementation-dependent. 4436 // If none of the specified names are present the behavior 4437 // is 4438 // parameter-dependent. 4439 Parameters []*SystemParameter `json:"parameters,omitempty"` 4440 4441 // Selector: Selects the methods to which this rule applies. Use '*' to 4442 // indicate all 4443 // methods in all APIs. 4444 // 4445 // Refer to selector for syntax details. 4446 Selector string `json:"selector,omitempty"` 4447 4448 // ForceSendFields is a list of field names (e.g. "Parameters") to 4449 // unconditionally include in API requests. By default, fields with 4450 // empty values are omitted from API requests. However, any non-pointer, 4451 // non-interface field appearing in ForceSendFields will be sent to the 4452 // server regardless of whether the field is empty or not. This may be 4453 // used to include empty fields in Patch requests. 4454 ForceSendFields []string `json:"-"` 4455 4456 // NullFields is a list of field names (e.g. "Parameters") to include in 4457 // API requests with the JSON null value. By default, fields with empty 4458 // values are omitted from API requests. However, any field with an 4459 // empty value appearing in NullFields will be sent to the server as 4460 // null. It is an error if a field in this list has a non-empty value. 4461 // This may be used to include null fields in Patch requests. 4462 NullFields []string `json:"-"` 4463} 4464 4465func (s *SystemParameterRule) MarshalJSON() ([]byte, error) { 4466 type NoMethod SystemParameterRule 4467 raw := NoMethod(*s) 4468 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 4469} 4470 4471// SystemParameters: ### System parameter configuration 4472// 4473// A system parameter is a special kind of parameter defined by the 4474// API 4475// system, not by an individual API. It is typically mapped to an HTTP 4476// header 4477// and/or a URL query parameter. This configuration specifies which 4478// methods 4479// change the names of the system parameters. 4480type SystemParameters struct { 4481 // Rules: Define system parameters. 4482 // 4483 // The parameters defined here will override the default 4484 // parameters 4485 // implemented by the system. If this field is missing from the 4486 // service 4487 // config, default system parameters will be used. Default system 4488 // parameters 4489 // and names is implementation-dependent. 4490 // 4491 // Example: define api key for all methods 4492 // 4493 // system_parameters 4494 // rules: 4495 // - selector: "*" 4496 // parameters: 4497 // - name: api_key 4498 // url_query_parameter: api_key 4499 // 4500 // 4501 // Example: define 2 api key names for a specific method. 4502 // 4503 // system_parameters 4504 // rules: 4505 // - selector: "/ListShelves" 4506 // parameters: 4507 // - name: api_key 4508 // http_header: Api-Key1 4509 // - name: api_key 4510 // http_header: Api-Key2 4511 // 4512 // **NOTE:** All service configuration rules follow "last one wins" 4513 // order. 4514 Rules []*SystemParameterRule `json:"rules,omitempty"` 4515 4516 // ForceSendFields is a list of field names (e.g. "Rules") to 4517 // unconditionally include in API requests. By default, fields with 4518 // empty values are omitted from API requests. However, any non-pointer, 4519 // non-interface field appearing in ForceSendFields will be sent to the 4520 // server regardless of whether the field is empty or not. This may be 4521 // used to include empty fields in Patch requests. 4522 ForceSendFields []string `json:"-"` 4523 4524 // NullFields is a list of field names (e.g. "Rules") to include in API 4525 // requests with the JSON null value. By default, fields with empty 4526 // values are omitted from API requests. However, any field with an 4527 // empty value appearing in NullFields will be sent to the server as 4528 // null. It is an error if a field in this list has a non-empty value. 4529 // This may be used to include null fields in Patch requests. 4530 NullFields []string `json:"-"` 4531} 4532 4533func (s *SystemParameters) MarshalJSON() ([]byte, error) { 4534 type NoMethod SystemParameters 4535 raw := NoMethod(*s) 4536 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 4537} 4538 4539// Type: A protocol buffer message type. 4540type Type struct { 4541 // Fields: The list of fields. 4542 Fields []*Field `json:"fields,omitempty"` 4543 4544 // Name: The fully qualified message name. 4545 Name string `json:"name,omitempty"` 4546 4547 // Oneofs: The list of types appearing in `oneof` definitions in this 4548 // type. 4549 Oneofs []string `json:"oneofs,omitempty"` 4550 4551 // Options: The protocol buffer options. 4552 Options []*Option `json:"options,omitempty"` 4553 4554 // SourceContext: The source context. 4555 SourceContext *SourceContext `json:"sourceContext,omitempty"` 4556 4557 // Syntax: The source syntax. 4558 // 4559 // Possible values: 4560 // "SYNTAX_PROTO2" - Syntax `proto2`. 4561 // "SYNTAX_PROTO3" - Syntax `proto3`. 4562 Syntax string `json:"syntax,omitempty"` 4563 4564 // ForceSendFields is a list of field names (e.g. "Fields") to 4565 // unconditionally include in API requests. By default, fields with 4566 // empty values are omitted from API requests. However, any non-pointer, 4567 // non-interface field appearing in ForceSendFields will be sent to the 4568 // server regardless of whether the field is empty or not. This may be 4569 // used to include empty fields in Patch requests. 4570 ForceSendFields []string `json:"-"` 4571 4572 // NullFields is a list of field names (e.g. "Fields") to include in API 4573 // requests with the JSON null value. By default, fields with empty 4574 // values are omitted from API requests. However, any field with an 4575 // empty value appearing in NullFields will be sent to the server as 4576 // null. It is an error if a field in this list has a non-empty value. 4577 // This may be used to include null fields in Patch requests. 4578 NullFields []string `json:"-"` 4579} 4580 4581func (s *Type) MarshalJSON() ([]byte, error) { 4582 type NoMethod Type 4583 raw := NoMethod(*s) 4584 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 4585} 4586 4587// Usage: Configuration controlling usage of a service. 4588type Usage struct { 4589 // ProducerNotificationChannel: The full resource name of a channel used 4590 // for sending notifications to the 4591 // service producer. 4592 // 4593 // Google Service Management currently only supports 4594 // [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a 4595 // notification 4596 // channel. To use Google Cloud Pub/Sub as the channel, this must be the 4597 // name 4598 // of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name 4599 // format 4600 // documented in https://cloud.google.com/pubsub/docs/overview. 4601 ProducerNotificationChannel string `json:"producerNotificationChannel,omitempty"` 4602 4603 // Requirements: Requirements that must be satisfied before a consumer 4604 // project can use the 4605 // service. Each requirement is of the form 4606 // <service.name>/<requirement-id>; 4607 // for example 'serviceusage.googleapis.com/billing-enabled'. 4608 Requirements []string `json:"requirements,omitempty"` 4609 4610 // Rules: A list of usage rules that apply to individual API 4611 // methods. 4612 // 4613 // **NOTE:** All service configuration rules follow "last one wins" 4614 // order. 4615 Rules []*UsageRule `json:"rules,omitempty"` 4616 4617 // ServiceIdentity: The configuration of a per-product per-project 4618 // service identity. 4619 ServiceIdentity *ServiceIdentity `json:"serviceIdentity,omitempty"` 4620 4621 // ForceSendFields is a list of field names (e.g. 4622 // "ProducerNotificationChannel") to unconditionally include in API 4623 // requests. By default, fields with empty values are omitted from API 4624 // requests. However, any non-pointer, non-interface field appearing in 4625 // ForceSendFields will be sent to the server regardless of whether the 4626 // field is empty or not. This may be used to include empty fields in 4627 // Patch requests. 4628 ForceSendFields []string `json:"-"` 4629 4630 // NullFields is a list of field names (e.g. 4631 // "ProducerNotificationChannel") to include in API requests with the 4632 // JSON null value. By default, fields with empty values are omitted 4633 // from API requests. However, any field with an empty value appearing 4634 // in NullFields will be sent to the server as null. It is an error if a 4635 // field in this list has a non-empty value. This may be used to include 4636 // null fields in Patch requests. 4637 NullFields []string `json:"-"` 4638} 4639 4640func (s *Usage) MarshalJSON() ([]byte, error) { 4641 type NoMethod Usage 4642 raw := NoMethod(*s) 4643 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 4644} 4645 4646// UsageRule: Usage configuration rules for the service. 4647// 4648// NOTE: Under development. 4649// 4650// 4651// Use this rule to configure unregistered calls for the service. 4652// Unregistered 4653// calls are calls that do not contain consumer project 4654// identity. 4655// (Example: calls that do not contain an API key). 4656// By default, API methods do not allow unregistered calls, and each 4657// method call 4658// must be identified by a consumer project identity. Use this rule 4659// to 4660// allow/disallow unregistered calls. 4661// 4662// Example of an API that wants to allow unregistered calls for entire 4663// service. 4664// 4665// usage: 4666// rules: 4667// - selector: "*" 4668// allow_unregistered_calls: true 4669// 4670// Example of a method that wants to allow unregistered calls. 4671// 4672// usage: 4673// rules: 4674// - selector: 4675// "google.example.library.v1.LibraryService.CreateBook" 4676// allow_unregistered_calls: true 4677type UsageRule struct { 4678 // AllowUnregisteredCalls: If true, the selected method allows 4679 // unregistered calls, e.g. calls 4680 // that don't identify any user or application. 4681 AllowUnregisteredCalls bool `json:"allowUnregisteredCalls,omitempty"` 4682 4683 // Selector: Selects the methods to which this rule applies. Use '*' to 4684 // indicate all 4685 // methods in all APIs. 4686 // 4687 // Refer to selector for syntax details. 4688 Selector string `json:"selector,omitempty"` 4689 4690 // SkipServiceControl: If true, the selected method should skip service 4691 // control and the control 4692 // plane features, such as quota and billing, will not be 4693 // available. 4694 // This flag is used by Google Cloud Endpoints to bypass checks for 4695 // internal 4696 // methods, such as service health check methods. 4697 SkipServiceControl bool `json:"skipServiceControl,omitempty"` 4698 4699 // ForceSendFields is a list of field names (e.g. 4700 // "AllowUnregisteredCalls") to unconditionally include in API requests. 4701 // By default, fields with empty values are omitted from API requests. 4702 // However, any non-pointer, non-interface field appearing in 4703 // ForceSendFields will be sent to the server regardless of whether the 4704 // field is empty or not. This may be used to include empty fields in 4705 // Patch requests. 4706 ForceSendFields []string `json:"-"` 4707 4708 // NullFields is a list of field names (e.g. "AllowUnregisteredCalls") 4709 // to include in API requests with the JSON null value. By default, 4710 // fields with empty values are omitted from API requests. However, any 4711 // field with an empty value appearing in NullFields will be sent to the 4712 // server as null. It is an error if a field in this list has a 4713 // non-empty value. This may be used to include null fields in Patch 4714 // requests. 4715 NullFields []string `json:"-"` 4716} 4717 4718func (s *UsageRule) MarshalJSON() ([]byte, error) { 4719 type NoMethod UsageRule 4720 raw := NoMethod(*s) 4721 return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) 4722} 4723 4724// method id "servicenetworking.operations.get": 4725 4726type OperationsGetCall struct { 4727 s *APIService 4728 name string 4729 urlParams_ gensupport.URLParams 4730 ifNoneMatch_ string 4731 ctx_ context.Context 4732 header_ http.Header 4733} 4734 4735// Get: Gets the latest state of a long-running operation. Clients can 4736// use this 4737// method to poll the operation result at intervals as recommended by 4738// the API 4739// service. 4740func (r *OperationsService) Get(name string) *OperationsGetCall { 4741 c := &OperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} 4742 c.name = name 4743 return c 4744} 4745 4746// Fields allows partial responses to be retrieved. See 4747// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse 4748// for more information. 4749func (c *OperationsGetCall) Fields(s ...googleapi.Field) *OperationsGetCall { 4750 c.urlParams_.Set("fields", googleapi.CombineFields(s)) 4751 return c 4752} 4753 4754// IfNoneMatch sets the optional parameter which makes the operation 4755// fail if the object's ETag matches the given value. This is useful for 4756// getting updates only after the object has changed since the last 4757// request. Use googleapi.IsNotModified to check whether the response 4758// error from Do is the result of In-None-Match. 4759func (c *OperationsGetCall) IfNoneMatch(entityTag string) *OperationsGetCall { 4760 c.ifNoneMatch_ = entityTag 4761 return c 4762} 4763 4764// Context sets the context to be used in this call's Do method. Any 4765// pending HTTP request will be aborted if the provided context is 4766// canceled. 4767func (c *OperationsGetCall) Context(ctx context.Context) *OperationsGetCall { 4768 c.ctx_ = ctx 4769 return c 4770} 4771 4772// Header returns an http.Header that can be modified by the caller to 4773// add HTTP headers to the request. 4774func (c *OperationsGetCall) Header() http.Header { 4775 if c.header_ == nil { 4776 c.header_ = make(http.Header) 4777 } 4778 return c.header_ 4779} 4780 4781func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) { 4782 reqHeaders := make(http.Header) 4783 reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302") 4784 for k, v := range c.header_ { 4785 reqHeaders[k] = v 4786 } 4787 reqHeaders.Set("User-Agent", c.s.userAgent()) 4788 if c.ifNoneMatch_ != "" { 4789 reqHeaders.Set("If-None-Match", c.ifNoneMatch_) 4790 } 4791 var body io.Reader = nil 4792 c.urlParams_.Set("alt", alt) 4793 c.urlParams_.Set("prettyPrint", "false") 4794 urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+name}") 4795 urls += "?" + c.urlParams_.Encode() 4796 req, err := http.NewRequest("GET", urls, body) 4797 if err != nil { 4798 return nil, err 4799 } 4800 req.Header = reqHeaders 4801 googleapi.Expand(req.URL, map[string]string{ 4802 "name": c.name, 4803 }) 4804 return gensupport.SendRequest(c.ctx_, c.s.client, req) 4805} 4806 4807// Do executes the "servicenetworking.operations.get" call. 4808// Exactly one of *Operation or error will be non-nil. Any non-2xx 4809// status code is an error. Response headers are in either 4810// *Operation.ServerResponse.Header or (if a response was returned at 4811// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified 4812// to check whether the returned error was because 4813// http.StatusNotModified was returned. 4814func (c *OperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) { 4815 gensupport.SetOptions(c.urlParams_, opts...) 4816 res, err := c.doRequest("json") 4817 if res != nil && res.StatusCode == http.StatusNotModified { 4818 if res.Body != nil { 4819 res.Body.Close() 4820 } 4821 return nil, &googleapi.Error{ 4822 Code: res.StatusCode, 4823 Header: res.Header, 4824 } 4825 } 4826 if err != nil { 4827 return nil, err 4828 } 4829 defer googleapi.CloseBody(res) 4830 if err := googleapi.CheckResponse(res); err != nil { 4831 return nil, err 4832 } 4833 ret := &Operation{ 4834 ServerResponse: googleapi.ServerResponse{ 4835 Header: res.Header, 4836 HTTPStatusCode: res.StatusCode, 4837 }, 4838 } 4839 target := &ret 4840 if err := gensupport.DecodeResponse(target, res); err != nil { 4841 return nil, err 4842 } 4843 return ret, nil 4844 // { 4845 // "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", 4846 // "flatPath": "v1beta/operations/{operationsId}", 4847 // "httpMethod": "GET", 4848 // "id": "servicenetworking.operations.get", 4849 // "parameterOrder": [ 4850 // "name" 4851 // ], 4852 // "parameters": { 4853 // "name": { 4854 // "description": "The name of the operation resource.", 4855 // "location": "path", 4856 // "pattern": "^operations/[^/]+$", 4857 // "required": true, 4858 // "type": "string" 4859 // } 4860 // }, 4861 // "path": "v1beta/{+name}", 4862 // "response": { 4863 // "$ref": "Operation" 4864 // }, 4865 // "scopes": [ 4866 // "https://www.googleapis.com/auth/cloud-platform", 4867 // "https://www.googleapis.com/auth/service.management" 4868 // ] 4869 // } 4870 4871} 4872 4873// method id "servicenetworking.services.addSubnetwork": 4874 4875type ServicesAddSubnetworkCall struct { 4876 s *APIService 4877 parent string 4878 addsubnetworkrequest *AddSubnetworkRequest 4879 urlParams_ gensupport.URLParams 4880 ctx_ context.Context 4881 header_ http.Header 4882} 4883 4884// AddSubnetwork: For service producers, provisions a new subnet in 4885// a 4886// peered service's shared VPC network in the requested region and with 4887// the 4888// requested size that's expressed as a CIDR range (number of leading 4889// bits of 4890// ipV4 network mask). The method checks against the assigned allocated 4891// ranges 4892// to find a non-conflicting IP address range. The method will reuse a 4893// subnet 4894// if subsequent calls contain the same subnet name, region, and 4895// prefix 4896// length. This method will make producer's tenant project to be a 4897// shared VPC 4898// service project as needed. The response from the `get` operation will 4899// be of 4900// type `Subnetwork` if the operation successfully completes. 4901func (r *ServicesService) AddSubnetwork(parent string, addsubnetworkrequest *AddSubnetworkRequest) *ServicesAddSubnetworkCall { 4902 c := &ServicesAddSubnetworkCall{s: r.s, urlParams_: make(gensupport.URLParams)} 4903 c.parent = parent 4904 c.addsubnetworkrequest = addsubnetworkrequest 4905 return c 4906} 4907 4908// Fields allows partial responses to be retrieved. See 4909// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse 4910// for more information. 4911func (c *ServicesAddSubnetworkCall) Fields(s ...googleapi.Field) *ServicesAddSubnetworkCall { 4912 c.urlParams_.Set("fields", googleapi.CombineFields(s)) 4913 return c 4914} 4915 4916// Context sets the context to be used in this call's Do method. Any 4917// pending HTTP request will be aborted if the provided context is 4918// canceled. 4919func (c *ServicesAddSubnetworkCall) Context(ctx context.Context) *ServicesAddSubnetworkCall { 4920 c.ctx_ = ctx 4921 return c 4922} 4923 4924// Header returns an http.Header that can be modified by the caller to 4925// add HTTP headers to the request. 4926func (c *ServicesAddSubnetworkCall) Header() http.Header { 4927 if c.header_ == nil { 4928 c.header_ = make(http.Header) 4929 } 4930 return c.header_ 4931} 4932 4933func (c *ServicesAddSubnetworkCall) doRequest(alt string) (*http.Response, error) { 4934 reqHeaders := make(http.Header) 4935 reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302") 4936 for k, v := range c.header_ { 4937 reqHeaders[k] = v 4938 } 4939 reqHeaders.Set("User-Agent", c.s.userAgent()) 4940 var body io.Reader = nil 4941 body, err := googleapi.WithoutDataWrapper.JSONReader(c.addsubnetworkrequest) 4942 if err != nil { 4943 return nil, err 4944 } 4945 reqHeaders.Set("Content-Type", "application/json") 4946 c.urlParams_.Set("alt", alt) 4947 c.urlParams_.Set("prettyPrint", "false") 4948 urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}:addSubnetwork") 4949 urls += "?" + c.urlParams_.Encode() 4950 req, err := http.NewRequest("POST", urls, body) 4951 if err != nil { 4952 return nil, err 4953 } 4954 req.Header = reqHeaders 4955 googleapi.Expand(req.URL, map[string]string{ 4956 "parent": c.parent, 4957 }) 4958 return gensupport.SendRequest(c.ctx_, c.s.client, req) 4959} 4960 4961// Do executes the "servicenetworking.services.addSubnetwork" call. 4962// Exactly one of *Operation or error will be non-nil. Any non-2xx 4963// status code is an error. Response headers are in either 4964// *Operation.ServerResponse.Header or (if a response was returned at 4965// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified 4966// to check whether the returned error was because 4967// http.StatusNotModified was returned. 4968func (c *ServicesAddSubnetworkCall) Do(opts ...googleapi.CallOption) (*Operation, error) { 4969 gensupport.SetOptions(c.urlParams_, opts...) 4970 res, err := c.doRequest("json") 4971 if res != nil && res.StatusCode == http.StatusNotModified { 4972 if res.Body != nil { 4973 res.Body.Close() 4974 } 4975 return nil, &googleapi.Error{ 4976 Code: res.StatusCode, 4977 Header: res.Header, 4978 } 4979 } 4980 if err != nil { 4981 return nil, err 4982 } 4983 defer googleapi.CloseBody(res) 4984 if err := googleapi.CheckResponse(res); err != nil { 4985 return nil, err 4986 } 4987 ret := &Operation{ 4988 ServerResponse: googleapi.ServerResponse{ 4989 Header: res.Header, 4990 HTTPStatusCode: res.StatusCode, 4991 }, 4992 } 4993 target := &ret 4994 if err := gensupport.DecodeResponse(target, res); err != nil { 4995 return nil, err 4996 } 4997 return ret, nil 4998 // { 4999 // "description": "For service producers, provisions a new subnet in a\npeered service's shared VPC network in the requested region and with the\nrequested size that's expressed as a CIDR range (number of leading bits of\nipV4 network mask). The method checks against the assigned allocated ranges\nto find a non-conflicting IP address range. The method will reuse a subnet\nif subsequent calls contain the same subnet name, region, and prefix\nlength. This method will make producer's tenant project to be a shared VPC\nservice project as needed. The response from the `get` operation will be of\ntype `Subnetwork` if the operation successfully completes.", 5000 // "flatPath": "v1beta/services/{servicesId}/{servicesId1}/{servicesId2}:addSubnetwork", 5001 // "httpMethod": "POST", 5002 // "id": "servicenetworking.services.addSubnetwork", 5003 // "parameterOrder": [ 5004 // "parent" 5005 // ], 5006 // "parameters": { 5007 // "parent": { 5008 // "description": "Required. A tenant project in the service producer organization, in the\nfollowing format: services/{service}/{collection-id}/{resource-id}.\n{collection-id} is the cloud resource collection type that represents the\ntenant project. Only `projects` are supported.\n{resource-id} is the tenant project numeric id, such as\n`123456`. {service} the name of the peering service, such as\n`service-peering.example.com`. This service must already be\nenabled in the service consumer's project.", 5009 // "location": "path", 5010 // "pattern": "^services/[^/]+/[^/]+/[^/]+$", 5011 // "required": true, 5012 // "type": "string" 5013 // } 5014 // }, 5015 // "path": "v1beta/{+parent}:addSubnetwork", 5016 // "request": { 5017 // "$ref": "AddSubnetworkRequest" 5018 // }, 5019 // "response": { 5020 // "$ref": "Operation" 5021 // }, 5022 // "scopes": [ 5023 // "https://www.googleapis.com/auth/cloud-platform", 5024 // "https://www.googleapis.com/auth/service.management" 5025 // ] 5026 // } 5027 5028} 5029 5030// method id "servicenetworking.services.searchRange": 5031 5032type ServicesSearchRangeCall struct { 5033 s *APIService 5034 parent string 5035 searchrangerequest *SearchRangeRequest 5036 urlParams_ gensupport.URLParams 5037 ctx_ context.Context 5038 header_ http.Header 5039} 5040 5041// SearchRange: Service producers can use this method to find a 5042// currently unused range 5043// within consumer allocated ranges. This returned range is not 5044// reserved, 5045// and not guaranteed to remain unused. 5046// It will validate previously provided allocated ranges, 5047// find 5048// non-conflicting sub-range of requested size (expressed in 5049// number of leading bits of ipv4 network mask, as in CIDR 5050// range 5051// notation). 5052// Operation<response: Range> 5053func (r *ServicesService) SearchRange(parent string, searchrangerequest *SearchRangeRequest) *ServicesSearchRangeCall { 5054 c := &ServicesSearchRangeCall{s: r.s, urlParams_: make(gensupport.URLParams)} 5055 c.parent = parent 5056 c.searchrangerequest = searchrangerequest 5057 return c 5058} 5059 5060// Fields allows partial responses to be retrieved. See 5061// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse 5062// for more information. 5063func (c *ServicesSearchRangeCall) Fields(s ...googleapi.Field) *ServicesSearchRangeCall { 5064 c.urlParams_.Set("fields", googleapi.CombineFields(s)) 5065 return c 5066} 5067 5068// Context sets the context to be used in this call's Do method. Any 5069// pending HTTP request will be aborted if the provided context is 5070// canceled. 5071func (c *ServicesSearchRangeCall) Context(ctx context.Context) *ServicesSearchRangeCall { 5072 c.ctx_ = ctx 5073 return c 5074} 5075 5076// Header returns an http.Header that can be modified by the caller to 5077// add HTTP headers to the request. 5078func (c *ServicesSearchRangeCall) Header() http.Header { 5079 if c.header_ == nil { 5080 c.header_ = make(http.Header) 5081 } 5082 return c.header_ 5083} 5084 5085func (c *ServicesSearchRangeCall) doRequest(alt string) (*http.Response, error) { 5086 reqHeaders := make(http.Header) 5087 reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302") 5088 for k, v := range c.header_ { 5089 reqHeaders[k] = v 5090 } 5091 reqHeaders.Set("User-Agent", c.s.userAgent()) 5092 var body io.Reader = nil 5093 body, err := googleapi.WithoutDataWrapper.JSONReader(c.searchrangerequest) 5094 if err != nil { 5095 return nil, err 5096 } 5097 reqHeaders.Set("Content-Type", "application/json") 5098 c.urlParams_.Set("alt", alt) 5099 c.urlParams_.Set("prettyPrint", "false") 5100 urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}:searchRange") 5101 urls += "?" + c.urlParams_.Encode() 5102 req, err := http.NewRequest("POST", urls, body) 5103 if err != nil { 5104 return nil, err 5105 } 5106 req.Header = reqHeaders 5107 googleapi.Expand(req.URL, map[string]string{ 5108 "parent": c.parent, 5109 }) 5110 return gensupport.SendRequest(c.ctx_, c.s.client, req) 5111} 5112 5113// Do executes the "servicenetworking.services.searchRange" call. 5114// Exactly one of *Operation or error will be non-nil. Any non-2xx 5115// status code is an error. Response headers are in either 5116// *Operation.ServerResponse.Header or (if a response was returned at 5117// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified 5118// to check whether the returned error was because 5119// http.StatusNotModified was returned. 5120func (c *ServicesSearchRangeCall) Do(opts ...googleapi.CallOption) (*Operation, error) { 5121 gensupport.SetOptions(c.urlParams_, opts...) 5122 res, err := c.doRequest("json") 5123 if res != nil && res.StatusCode == http.StatusNotModified { 5124 if res.Body != nil { 5125 res.Body.Close() 5126 } 5127 return nil, &googleapi.Error{ 5128 Code: res.StatusCode, 5129 Header: res.Header, 5130 } 5131 } 5132 if err != nil { 5133 return nil, err 5134 } 5135 defer googleapi.CloseBody(res) 5136 if err := googleapi.CheckResponse(res); err != nil { 5137 return nil, err 5138 } 5139 ret := &Operation{ 5140 ServerResponse: googleapi.ServerResponse{ 5141 Header: res.Header, 5142 HTTPStatusCode: res.StatusCode, 5143 }, 5144 } 5145 target := &ret 5146 if err := gensupport.DecodeResponse(target, res); err != nil { 5147 return nil, err 5148 } 5149 return ret, nil 5150 // { 5151 // "description": "Service producers can use this method to find a currently unused range\nwithin consumer allocated ranges. This returned range is not reserved,\nand not guaranteed to remain unused.\nIt will validate previously provided allocated ranges, find\nnon-conflicting sub-range of requested size (expressed in\nnumber of leading bits of ipv4 network mask, as in CIDR range\nnotation).\nOperation\u003cresponse: Range\u003e", 5152 // "flatPath": "v1beta/services/{servicesId}:searchRange", 5153 // "httpMethod": "POST", 5154 // "id": "servicenetworking.services.searchRange", 5155 // "parameterOrder": [ 5156 // "parent" 5157 // ], 5158 // "parameters": { 5159 // "parent": { 5160 // "description": "Required. This is in a form services/{service}.\n{service} the name of the private access management service, for example\n'service-peering.example.com'.", 5161 // "location": "path", 5162 // "pattern": "^services/[^/]+$", 5163 // "required": true, 5164 // "type": "string" 5165 // } 5166 // }, 5167 // "path": "v1beta/{+parent}:searchRange", 5168 // "request": { 5169 // "$ref": "SearchRangeRequest" 5170 // }, 5171 // "response": { 5172 // "$ref": "Operation" 5173 // }, 5174 // "scopes": [ 5175 // "https://www.googleapis.com/auth/cloud-platform", 5176 // "https://www.googleapis.com/auth/service.management" 5177 // ] 5178 // } 5179 5180} 5181 5182// method id "servicenetworking.services.updateConnections": 5183 5184type ServicesUpdateConnectionsCall struct { 5185 s *APIService 5186 name string 5187 connection *Connection 5188 urlParams_ gensupport.URLParams 5189 ctx_ context.Context 5190 header_ http.Header 5191} 5192 5193// UpdateConnections: Updates the allocated ranges that are assigned to 5194// a connection. 5195// The response from the `get` operation will be of type `Connection` if 5196// the 5197// operation successfully completes. 5198func (r *ServicesService) UpdateConnections(name string, connection *Connection) *ServicesUpdateConnectionsCall { 5199 c := &ServicesUpdateConnectionsCall{s: r.s, urlParams_: make(gensupport.URLParams)} 5200 c.name = name 5201 c.connection = connection 5202 return c 5203} 5204 5205// Force sets the optional parameter "force": If a previously defined 5206// allocated range is removed, force flag must be 5207// set to true. 5208func (c *ServicesUpdateConnectionsCall) Force(force bool) *ServicesUpdateConnectionsCall { 5209 c.urlParams_.Set("force", fmt.Sprint(force)) 5210 return c 5211} 5212 5213// UpdateMask sets the optional parameter "updateMask": The update mask. 5214// If this is omitted, it defaults to "*". You can only 5215// update the listed peering ranges. 5216func (c *ServicesUpdateConnectionsCall) UpdateMask(updateMask string) *ServicesUpdateConnectionsCall { 5217 c.urlParams_.Set("updateMask", updateMask) 5218 return c 5219} 5220 5221// Fields allows partial responses to be retrieved. See 5222// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse 5223// for more information. 5224func (c *ServicesUpdateConnectionsCall) Fields(s ...googleapi.Field) *ServicesUpdateConnectionsCall { 5225 c.urlParams_.Set("fields", googleapi.CombineFields(s)) 5226 return c 5227} 5228 5229// Context sets the context to be used in this call's Do method. Any 5230// pending HTTP request will be aborted if the provided context is 5231// canceled. 5232func (c *ServicesUpdateConnectionsCall) Context(ctx context.Context) *ServicesUpdateConnectionsCall { 5233 c.ctx_ = ctx 5234 return c 5235} 5236 5237// Header returns an http.Header that can be modified by the caller to 5238// add HTTP headers to the request. 5239func (c *ServicesUpdateConnectionsCall) Header() http.Header { 5240 if c.header_ == nil { 5241 c.header_ = make(http.Header) 5242 } 5243 return c.header_ 5244} 5245 5246func (c *ServicesUpdateConnectionsCall) doRequest(alt string) (*http.Response, error) { 5247 reqHeaders := make(http.Header) 5248 reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302") 5249 for k, v := range c.header_ { 5250 reqHeaders[k] = v 5251 } 5252 reqHeaders.Set("User-Agent", c.s.userAgent()) 5253 var body io.Reader = nil 5254 body, err := googleapi.WithoutDataWrapper.JSONReader(c.connection) 5255 if err != nil { 5256 return nil, err 5257 } 5258 reqHeaders.Set("Content-Type", "application/json") 5259 c.urlParams_.Set("alt", alt) 5260 c.urlParams_.Set("prettyPrint", "false") 5261 urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+name}/connections") 5262 urls += "?" + c.urlParams_.Encode() 5263 req, err := http.NewRequest("PATCH", urls, body) 5264 if err != nil { 5265 return nil, err 5266 } 5267 req.Header = reqHeaders 5268 googleapi.Expand(req.URL, map[string]string{ 5269 "name": c.name, 5270 }) 5271 return gensupport.SendRequest(c.ctx_, c.s.client, req) 5272} 5273 5274// Do executes the "servicenetworking.services.updateConnections" call. 5275// Exactly one of *Operation or error will be non-nil. Any non-2xx 5276// status code is an error. Response headers are in either 5277// *Operation.ServerResponse.Header or (if a response was returned at 5278// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified 5279// to check whether the returned error was because 5280// http.StatusNotModified was returned. 5281func (c *ServicesUpdateConnectionsCall) Do(opts ...googleapi.CallOption) (*Operation, error) { 5282 gensupport.SetOptions(c.urlParams_, opts...) 5283 res, err := c.doRequest("json") 5284 if res != nil && res.StatusCode == http.StatusNotModified { 5285 if res.Body != nil { 5286 res.Body.Close() 5287 } 5288 return nil, &googleapi.Error{ 5289 Code: res.StatusCode, 5290 Header: res.Header, 5291 } 5292 } 5293 if err != nil { 5294 return nil, err 5295 } 5296 defer googleapi.CloseBody(res) 5297 if err := googleapi.CheckResponse(res); err != nil { 5298 return nil, err 5299 } 5300 ret := &Operation{ 5301 ServerResponse: googleapi.ServerResponse{ 5302 Header: res.Header, 5303 HTTPStatusCode: res.StatusCode, 5304 }, 5305 } 5306 target := &ret 5307 if err := gensupport.DecodeResponse(target, res); err != nil { 5308 return nil, err 5309 } 5310 return ret, nil 5311 // { 5312 // "description": "Updates the allocated ranges that are assigned to a connection.\nThe response from the `get` operation will be of type `Connection` if the\noperation successfully completes.", 5313 // "flatPath": "v1beta/services/{servicesId}/connections", 5314 // "httpMethod": "PATCH", 5315 // "id": "servicenetworking.services.updateConnections", 5316 // "parameterOrder": [ 5317 // "name" 5318 // ], 5319 // "parameters": { 5320 // "force": { 5321 // "description": "If a previously defined allocated range is removed, force flag must be\nset to true.", 5322 // "location": "query", 5323 // "type": "boolean" 5324 // }, 5325 // "name": { 5326 // "description": "The service producer peering service that is managing peering connectivity\nfor a service producer organization.\nFor Google services that support this functionality, this is\n`services/servicenetworking.googleapis.com`.", 5327 // "location": "path", 5328 // "pattern": "^services/[^/]+$", 5329 // "required": true, 5330 // "type": "string" 5331 // }, 5332 // "updateMask": { 5333 // "description": "The update mask. If this is omitted, it defaults to \"*\". You can only\nupdate the listed peering ranges.", 5334 // "format": "google-fieldmask", 5335 // "location": "query", 5336 // "type": "string" 5337 // } 5338 // }, 5339 // "path": "v1beta/{+name}/connections", 5340 // "request": { 5341 // "$ref": "Connection" 5342 // }, 5343 // "response": { 5344 // "$ref": "Operation" 5345 // }, 5346 // "scopes": [ 5347 // "https://www.googleapis.com/auth/cloud-platform", 5348 // "https://www.googleapis.com/auth/service.management" 5349 // ] 5350 // } 5351 5352} 5353 5354// method id "servicenetworking.services.connections.create": 5355 5356type ServicesConnectionsCreateCall struct { 5357 s *APIService 5358 parent string 5359 connection *Connection 5360 urlParams_ gensupport.URLParams 5361 ctx_ context.Context 5362 header_ http.Header 5363} 5364 5365// Create: Creates a private connection that establishes a VPC Network 5366// Peering 5367// connection to a VPC network in the service producer's 5368// organization. 5369// The administrator of the service consumer's VPC network invokes 5370// this 5371// method. The administrator must assign one or more allocated IP ranges 5372// for 5373// provisioning subnetworks in the service producer's VPC network. 5374// This 5375// connection is used for all supported services in the service 5376// producer's 5377// organization, so it only needs to be invoked once. The response from 5378// the 5379// `get` operation will be of type `Connection` if the operation 5380// successfully 5381// completes. 5382func (r *ServicesConnectionsService) Create(parent string, connection *Connection) *ServicesConnectionsCreateCall { 5383 c := &ServicesConnectionsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} 5384 c.parent = parent 5385 c.connection = connection 5386 return c 5387} 5388 5389// Fields allows partial responses to be retrieved. See 5390// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse 5391// for more information. 5392func (c *ServicesConnectionsCreateCall) Fields(s ...googleapi.Field) *ServicesConnectionsCreateCall { 5393 c.urlParams_.Set("fields", googleapi.CombineFields(s)) 5394 return c 5395} 5396 5397// Context sets the context to be used in this call's Do method. Any 5398// pending HTTP request will be aborted if the provided context is 5399// canceled. 5400func (c *ServicesConnectionsCreateCall) Context(ctx context.Context) *ServicesConnectionsCreateCall { 5401 c.ctx_ = ctx 5402 return c 5403} 5404 5405// Header returns an http.Header that can be modified by the caller to 5406// add HTTP headers to the request. 5407func (c *ServicesConnectionsCreateCall) Header() http.Header { 5408 if c.header_ == nil { 5409 c.header_ = make(http.Header) 5410 } 5411 return c.header_ 5412} 5413 5414func (c *ServicesConnectionsCreateCall) doRequest(alt string) (*http.Response, error) { 5415 reqHeaders := make(http.Header) 5416 reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302") 5417 for k, v := range c.header_ { 5418 reqHeaders[k] = v 5419 } 5420 reqHeaders.Set("User-Agent", c.s.userAgent()) 5421 var body io.Reader = nil 5422 body, err := googleapi.WithoutDataWrapper.JSONReader(c.connection) 5423 if err != nil { 5424 return nil, err 5425 } 5426 reqHeaders.Set("Content-Type", "application/json") 5427 c.urlParams_.Set("alt", alt) 5428 c.urlParams_.Set("prettyPrint", "false") 5429 urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}/connections") 5430 urls += "?" + c.urlParams_.Encode() 5431 req, err := http.NewRequest("POST", urls, body) 5432 if err != nil { 5433 return nil, err 5434 } 5435 req.Header = reqHeaders 5436 googleapi.Expand(req.URL, map[string]string{ 5437 "parent": c.parent, 5438 }) 5439 return gensupport.SendRequest(c.ctx_, c.s.client, req) 5440} 5441 5442// Do executes the "servicenetworking.services.connections.create" call. 5443// Exactly one of *Operation or error will be non-nil. Any non-2xx 5444// status code is an error. Response headers are in either 5445// *Operation.ServerResponse.Header or (if a response was returned at 5446// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified 5447// to check whether the returned error was because 5448// http.StatusNotModified was returned. 5449func (c *ServicesConnectionsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) { 5450 gensupport.SetOptions(c.urlParams_, opts...) 5451 res, err := c.doRequest("json") 5452 if res != nil && res.StatusCode == http.StatusNotModified { 5453 if res.Body != nil { 5454 res.Body.Close() 5455 } 5456 return nil, &googleapi.Error{ 5457 Code: res.StatusCode, 5458 Header: res.Header, 5459 } 5460 } 5461 if err != nil { 5462 return nil, err 5463 } 5464 defer googleapi.CloseBody(res) 5465 if err := googleapi.CheckResponse(res); err != nil { 5466 return nil, err 5467 } 5468 ret := &Operation{ 5469 ServerResponse: googleapi.ServerResponse{ 5470 Header: res.Header, 5471 HTTPStatusCode: res.StatusCode, 5472 }, 5473 } 5474 target := &ret 5475 if err := gensupport.DecodeResponse(target, res); err != nil { 5476 return nil, err 5477 } 5478 return ret, nil 5479 // { 5480 // "description": "Creates a private connection that establishes a VPC Network Peering\nconnection to a VPC network in the service producer's organization.\nThe administrator of the service consumer's VPC network invokes this\nmethod. The administrator must assign one or more allocated IP ranges for\nprovisioning subnetworks in the service producer's VPC network. This\nconnection is used for all supported services in the service producer's\norganization, so it only needs to be invoked once. The response from the\n`get` operation will be of type `Connection` if the operation successfully\ncompletes.", 5481 // "flatPath": "v1beta/services/{servicesId}/connections", 5482 // "httpMethod": "POST", 5483 // "id": "servicenetworking.services.connections.create", 5484 // "parameterOrder": [ 5485 // "parent" 5486 // ], 5487 // "parameters": { 5488 // "parent": { 5489 // "description": "The service that is managing peering connectivity for a service producer's\norganization. For Google services that support this functionality, this\nvalue is `services/servicenetworking.googleapis.com`.", 5490 // "location": "path", 5491 // "pattern": "^services/[^/]+$", 5492 // "required": true, 5493 // "type": "string" 5494 // } 5495 // }, 5496 // "path": "v1beta/{+parent}/connections", 5497 // "request": { 5498 // "$ref": "Connection" 5499 // }, 5500 // "response": { 5501 // "$ref": "Operation" 5502 // }, 5503 // "scopes": [ 5504 // "https://www.googleapis.com/auth/cloud-platform", 5505 // "https://www.googleapis.com/auth/service.management" 5506 // ] 5507 // } 5508 5509} 5510 5511// method id "servicenetworking.services.connections.list": 5512 5513type ServicesConnectionsListCall struct { 5514 s *APIService 5515 parent string 5516 urlParams_ gensupport.URLParams 5517 ifNoneMatch_ string 5518 ctx_ context.Context 5519 header_ http.Header 5520} 5521 5522// List: List the private connections that are configured in a service 5523// consumer's 5524// VPC network. 5525func (r *ServicesConnectionsService) List(parent string) *ServicesConnectionsListCall { 5526 c := &ServicesConnectionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} 5527 c.parent = parent 5528 return c 5529} 5530 5531// Network sets the optional parameter "network": The name of service 5532// consumer's VPC network that's connected with service 5533// producer network through a private connection. The network name must 5534// be in 5535// the following format: 5536// `projects/{project}/global/networks/{network}`. {project} is 5537// a 5538// project number, such as in `12345` that includes the VPC 5539// service 5540// consumer's VPC network. {network} is the name of the service 5541// consumer's VPC 5542// network. 5543func (c *ServicesConnectionsListCall) Network(network string) *ServicesConnectionsListCall { 5544 c.urlParams_.Set("network", network) 5545 return c 5546} 5547 5548// Fields allows partial responses to be retrieved. See 5549// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse 5550// for more information. 5551func (c *ServicesConnectionsListCall) Fields(s ...googleapi.Field) *ServicesConnectionsListCall { 5552 c.urlParams_.Set("fields", googleapi.CombineFields(s)) 5553 return c 5554} 5555 5556// IfNoneMatch sets the optional parameter which makes the operation 5557// fail if the object's ETag matches the given value. This is useful for 5558// getting updates only after the object has changed since the last 5559// request. Use googleapi.IsNotModified to check whether the response 5560// error from Do is the result of In-None-Match. 5561func (c *ServicesConnectionsListCall) IfNoneMatch(entityTag string) *ServicesConnectionsListCall { 5562 c.ifNoneMatch_ = entityTag 5563 return c 5564} 5565 5566// Context sets the context to be used in this call's Do method. Any 5567// pending HTTP request will be aborted if the provided context is 5568// canceled. 5569func (c *ServicesConnectionsListCall) Context(ctx context.Context) *ServicesConnectionsListCall { 5570 c.ctx_ = ctx 5571 return c 5572} 5573 5574// Header returns an http.Header that can be modified by the caller to 5575// add HTTP headers to the request. 5576func (c *ServicesConnectionsListCall) Header() http.Header { 5577 if c.header_ == nil { 5578 c.header_ = make(http.Header) 5579 } 5580 return c.header_ 5581} 5582 5583func (c *ServicesConnectionsListCall) doRequest(alt string) (*http.Response, error) { 5584 reqHeaders := make(http.Header) 5585 reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302") 5586 for k, v := range c.header_ { 5587 reqHeaders[k] = v 5588 } 5589 reqHeaders.Set("User-Agent", c.s.userAgent()) 5590 if c.ifNoneMatch_ != "" { 5591 reqHeaders.Set("If-None-Match", c.ifNoneMatch_) 5592 } 5593 var body io.Reader = nil 5594 c.urlParams_.Set("alt", alt) 5595 c.urlParams_.Set("prettyPrint", "false") 5596 urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}/connections") 5597 urls += "?" + c.urlParams_.Encode() 5598 req, err := http.NewRequest("GET", urls, body) 5599 if err != nil { 5600 return nil, err 5601 } 5602 req.Header = reqHeaders 5603 googleapi.Expand(req.URL, map[string]string{ 5604 "parent": c.parent, 5605 }) 5606 return gensupport.SendRequest(c.ctx_, c.s.client, req) 5607} 5608 5609// Do executes the "servicenetworking.services.connections.list" call. 5610// Exactly one of *ListConnectionsResponse or error will be non-nil. Any 5611// non-2xx status code is an error. Response headers are in either 5612// *ListConnectionsResponse.ServerResponse.Header or (if a response was 5613// returned at all) in error.(*googleapi.Error).Header. Use 5614// googleapi.IsNotModified to check whether the returned error was 5615// because http.StatusNotModified was returned. 5616func (c *ServicesConnectionsListCall) Do(opts ...googleapi.CallOption) (*ListConnectionsResponse, error) { 5617 gensupport.SetOptions(c.urlParams_, opts...) 5618 res, err := c.doRequest("json") 5619 if res != nil && res.StatusCode == http.StatusNotModified { 5620 if res.Body != nil { 5621 res.Body.Close() 5622 } 5623 return nil, &googleapi.Error{ 5624 Code: res.StatusCode, 5625 Header: res.Header, 5626 } 5627 } 5628 if err != nil { 5629 return nil, err 5630 } 5631 defer googleapi.CloseBody(res) 5632 if err := googleapi.CheckResponse(res); err != nil { 5633 return nil, err 5634 } 5635 ret := &ListConnectionsResponse{ 5636 ServerResponse: googleapi.ServerResponse{ 5637 Header: res.Header, 5638 HTTPStatusCode: res.StatusCode, 5639 }, 5640 } 5641 target := &ret 5642 if err := gensupport.DecodeResponse(target, res); err != nil { 5643 return nil, err 5644 } 5645 return ret, nil 5646 // { 5647 // "description": "List the private connections that are configured in a service consumer's\nVPC network.", 5648 // "flatPath": "v1beta/services/{servicesId}/connections", 5649 // "httpMethod": "GET", 5650 // "id": "servicenetworking.services.connections.list", 5651 // "parameterOrder": [ 5652 // "parent" 5653 // ], 5654 // "parameters": { 5655 // "network": { 5656 // "description": "The name of service consumer's VPC network that's connected with service\nproducer network through a private connection. The network name must be in\nthe following format:\n`projects/{project}/global/networks/{network}`. {project} is a\nproject number, such as in `12345` that includes the VPC service\nconsumer's VPC network. {network} is the name of the service consumer's VPC\nnetwork.", 5657 // "location": "query", 5658 // "type": "string" 5659 // }, 5660 // "parent": { 5661 // "description": "The service that is managing peering connectivity for a service producer's\norganization. For Google services that support this functionality, this\nvalue is `services/servicenetworking.googleapis.com`.\nIf you specify `-` as the parameter value, all configured public peering\nservices are listed.", 5662 // "location": "path", 5663 // "pattern": "^services/[^/]+$", 5664 // "required": true, 5665 // "type": "string" 5666 // } 5667 // }, 5668 // "path": "v1beta/{+parent}/connections", 5669 // "response": { 5670 // "$ref": "ListConnectionsResponse" 5671 // }, 5672 // "scopes": [ 5673 // "https://www.googleapis.com/auth/cloud-platform", 5674 // "https://www.googleapis.com/auth/service.management" 5675 // ] 5676 // } 5677 5678} 5679