google-apis-servicenetworking_v1 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: eb38136d21a6a62385e6544436531275e861f9a98b3906237cd1ee4847e4aaff
4
+ data.tar.gz: b39e91b20c59f3fbc97e06ac406f4b31925b6695d3557ee72a1cff4d2a5a6541
5
+ SHA512:
6
+ metadata.gz: a27b7217a83efe95bd270e52d96a74cf156fccd661269323dec05cf9641646747d6084e3f4abf5018f98de0be41d4b8c96b264affa45877db3586dc2daaaffb9
7
+ data.tar.gz: bc0f5c12648e309ebcc64e5904f2d9e5721f176560726042936345d76c75ea6a5e3d7ff45567a043a48faf8c0c18486d4f521aa91ec5bb04bdb166cd5829e152
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-servicenetworking_v1
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/servicenetworking_v1/*.rb
9
+ lib/google/apis/servicenetworking_v1.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-servicenetworking_v1
2
+
3
+ ### v0.1.0 (2021-01-07)
4
+
5
+ * Regenerated from discovery document revision 20210105
6
+ * Regenerated using generator version 0.1.1
7
+
@@ -0,0 +1,202 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright [yyyy] [name of copyright owner]
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
@@ -0,0 +1,96 @@
1
+ # Simple REST client for version V1 of the Service Networking API
2
+
3
+ This is a simple client library for version V1 of the Service Networking API. It provides:
4
+
5
+ * A client object that connects to the HTTP/JSON REST endpoint for the service.
6
+ * Ruby objects for data structures related to the service.
7
+ * Integration with the googleauth gem for authentication using OAuth, API keys, and service accounts.
8
+ * Control of retry, pagination, and timeouts.
9
+
10
+ Note that although this client library is supported and will continue to be updated to track changes to the service, it is otherwise considered complete and not under active development. Many Google services, especially Google Cloud Platform services, may provide a more modern client that is under more active development and improvement. See the section below titled *Which client should I use?* for more information.
11
+
12
+ ## Getting started
13
+
14
+ ### Before you begin
15
+
16
+ There are a few setup steps you need to complete before you can use this library:
17
+
18
+ 1. If you don't already have a Google account, [sign up](https://www.google.com/accounts).
19
+ 2. If you have never created a Google APIs Console project, read about [Managing Projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) and create a project in the [Google API Console](https://console.cloud.google.com/).
20
+ 3. Most APIs need to be enabled for your project. [Enable it](https://console.cloud.google.com/apis/library/servicenetworking.googleapis.com) in the console.
21
+
22
+ ### Installation
23
+
24
+ Add this line to your application's Gemfile:
25
+
26
+ ```ruby
27
+ gem 'google-apis-servicenetworking_v1', '~> 0.1'
28
+ ```
29
+
30
+ And then execute:
31
+
32
+ ```
33
+ $ bundle
34
+ ```
35
+
36
+ Or install it yourself as:
37
+
38
+ ```
39
+ $ gem install google-apis-servicenetworking_v1
40
+ ```
41
+
42
+ ### Creating a client object
43
+
44
+ Once the gem is installed, you can load the client code and instantiate a client.
45
+
46
+ ```ruby
47
+ # Load the client
48
+ require "google/apis/servicenetworking_v1"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::ServicenetworkingV1::ServiceNetworkingService.new
52
+
53
+ # Authenticate calls
54
+ client.authentication = # ... use the googleauth gem to create credentials
55
+ ```
56
+
57
+ See the class reference docs for information on the methods you can call from a client.
58
+
59
+ ## Documentation
60
+
61
+ More detailed descriptions of the Google simple REST clients are available in two documents.
62
+
63
+ * The [Usage Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/usage-guide.md) discusses how to make API calls, how to use the provided data structures, and how to work the various features of the client library, including media upload and download, error handling, retries, pagination, and logging.
64
+ * The [Auth Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/auth-guide.md) discusses authentication in the client libraries, including API keys, OAuth 2.0, service accounts, and environment variables.
65
+
66
+ (Note: the above documents are written for the simple REST clients in general, and their examples may not reflect the Servicenetworking service in particular.)
67
+
68
+ For reference information on specific calls in the Service Networking API, see the {Google::Apis::ServicenetworkingV1::ServiceNetworkingService class reference docs}.
69
+
70
+ ## Which client should I use?
71
+
72
+ Google provides two types of Ruby API client libraries: **simple REST clients** and **modern clients**.
73
+
74
+ This library, `google-apis-servicenetworking_v1`, is a simple REST client. You can identify these clients by their gem names, which are always in the form `google-apis-<servicename>_<serviceversion>`. The simple REST clients connect to HTTP/JSON REST endpoints and are automatically generated from service discovery documents. They support most API functionality, but their class interfaces are sometimes awkward.
75
+
76
+ Modern clients are produced by a modern code generator, sometimes combined with hand-crafted functionality. Most modern clients connect to high-performance gRPC endpoints, although a few are backed by REST services. Modern clients are available for many Google services, especially Google Cloud Platform services, but do not yet support all the services covered by the simple clients.
77
+
78
+ Gem names for modern clients are often of the form `google-cloud-<service_name>`. (For example, [google-cloud-pubsub](https://rubygems.org/gems/google-cloud-pubsub).) Note that most modern clients also have corresponding "versioned" gems with names like `google-cloud-<service_name>-<version>`. (For example, [google-cloud-pubsub-v1](https://rubygems.org/gems/google-cloud-pubsub-v1).) The "versioned" gems can be used directly, but often provide lower-level interfaces. In most cases, the main gem is recommended.
79
+
80
+ **For most users, we recommend the modern client, if one is available.** Compared with simple clients, modern clients are generally much easier to use and more Ruby-like, support more advanced features such as streaming and long-running operations, and often provide much better performance. You may consider using a simple client instead, if a modern client is not yet available for the service you want to use, or if you are not able to use gRPC on your infrastructure.
81
+
82
+ The [product documentation](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started) may provide guidance regarding the preferred client library to use.
83
+
84
+ ## Supported Ruby versions
85
+
86
+ This library is supported on Ruby 2.5+.
87
+
88
+ Google provides official support for Ruby versions that are actively supported by Ruby Core -- that is, Ruby versions that are either in normal maintenance or in security maintenance, and not end of life. Currently, this means Ruby 2.5 and later. Older versions of Ruby _may_ still work, but are unsupported and not recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details about the Ruby support schedule.
89
+
90
+ ## License
91
+
92
+ This library is licensed under Apache 2.0. Full license text is available in the {file:LICENSE.md LICENSE}.
93
+
94
+ ## Support
95
+
96
+ Please [report bugs at the project on Github](https://github.com/google/google-api-ruby-client/issues). Don't hesitate to [ask questions](http://stackoverflow.com/questions/tagged/google-api-ruby-client) about the client or APIs on [StackOverflow](http://stackoverflow.com).
@@ -0,0 +1,15 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require "google/apis/servicenetworking_v1"
@@ -0,0 +1,40 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/servicenetworking_v1/service.rb'
16
+ require 'google/apis/servicenetworking_v1/classes.rb'
17
+ require 'google/apis/servicenetworking_v1/representations.rb'
18
+ require 'google/apis/servicenetworking_v1/gem_version.rb'
19
+
20
+ module Google
21
+ module Apis
22
+ # Service Networking API
23
+ #
24
+ # Provides automatic management of network configurations necessary for certain
25
+ # services.
26
+ #
27
+ # @see https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started
28
+ module ServicenetworkingV1
29
+ # Version of the Service Networking API this client connects to.
30
+ # This is NOT the gem version.
31
+ VERSION = 'V1'
32
+
33
+ # View and manage your data across Google Cloud Platform services
34
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
35
+
36
+ # Manage your Google API service configuration
37
+ AUTH_SERVICE_MANAGEMENT = 'https://www.googleapis.com/auth/service.management'
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,4170 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module ServicenetworkingV1
24
+
25
+ # Metadata provided through GetOperation request for the LRO generated by
26
+ # AddDnsRecordSet API
27
+ class AddDnsRecordSetMetadata
28
+ include Google::Apis::Core::Hashable
29
+
30
+ def initialize(**args)
31
+ update!(**args)
32
+ end
33
+
34
+ # Update properties of this object
35
+ def update!(**args)
36
+ end
37
+ end
38
+
39
+ # Request to add a record set to a private managed DNS zone in the shared
40
+ # producer host project.
41
+ class AddDnsRecordSetRequest
42
+ include Google::Apis::Core::Hashable
43
+
44
+ # Required. The network that the consumer is using to connect with services.
45
+ # Must be in the form of projects/`project`/global/networks/`network` `project`
46
+ # is the project number, as in '12345' `network` is the network name.
47
+ # Corresponds to the JSON property `consumerNetwork`
48
+ # @return [String]
49
+ attr_accessor :consumer_network
50
+
51
+ # Represents a DNS record set resource.
52
+ # Corresponds to the JSON property `dnsRecordSet`
53
+ # @return [Google::Apis::ServicenetworkingV1::DnsRecordSet]
54
+ attr_accessor :dns_record_set
55
+
56
+ # Required. The name of the private DNS zone in the shared producer host project
57
+ # to which the record set will be added.
58
+ # Corresponds to the JSON property `zone`
59
+ # @return [String]
60
+ attr_accessor :zone
61
+
62
+ def initialize(**args)
63
+ update!(**args)
64
+ end
65
+
66
+ # Update properties of this object
67
+ def update!(**args)
68
+ @consumer_network = args[:consumer_network] if args.key?(:consumer_network)
69
+ @dns_record_set = args[:dns_record_set] if args.key?(:dns_record_set)
70
+ @zone = args[:zone] if args.key?(:zone)
71
+ end
72
+ end
73
+
74
+ # Metadata provided through GetOperation request for the LRO generated by
75
+ # AddDnsZone API
76
+ class AddDnsZoneMetadata
77
+ include Google::Apis::Core::Hashable
78
+
79
+ def initialize(**args)
80
+ update!(**args)
81
+ end
82
+
83
+ # Update properties of this object
84
+ def update!(**args)
85
+ end
86
+ end
87
+
88
+ # Request to add a private managed DNS zone in the shared producer host project
89
+ # and a matching DNS peering zone in the consumer project.
90
+ class AddDnsZoneRequest
91
+ include Google::Apis::Core::Hashable
92
+
93
+ # Required. The network that the consumer is using to connect with services.
94
+ # Must be in the form of projects/`project`/global/networks/`network` `project`
95
+ # is the project number, as in '12345' `network` is the network name.
96
+ # Corresponds to the JSON property `consumerNetwork`
97
+ # @return [String]
98
+ attr_accessor :consumer_network
99
+
100
+ # Required. The DNS name suffix for the zones e.g. `example.com`.
101
+ # Corresponds to the JSON property `dnsSuffix`
102
+ # @return [String]
103
+ attr_accessor :dns_suffix
104
+
105
+ # Required. The name for both the private zone in the shared producer host
106
+ # project and the peering zone in the consumer project. Must be unique within
107
+ # both projects. The name must be 1-63 characters long, must begin with a letter,
108
+ # end with a letter or digit, and only contain lowercase letters, digits or
109
+ # dashes.
110
+ # Corresponds to the JSON property `name`
111
+ # @return [String]
112
+ attr_accessor :name
113
+
114
+ def initialize(**args)
115
+ update!(**args)
116
+ end
117
+
118
+ # Update properties of this object
119
+ def update!(**args)
120
+ @consumer_network = args[:consumer_network] if args.key?(:consumer_network)
121
+ @dns_suffix = args[:dns_suffix] if args.key?(:dns_suffix)
122
+ @name = args[:name] if args.key?(:name)
123
+ end
124
+ end
125
+
126
+ # Represents managed DNS zones created in the shared producer host and consumer
127
+ # projects.
128
+ class AddDnsZoneResponse
129
+ include Google::Apis::Core::Hashable
130
+
131
+ # Represents a DNS zone resource.
132
+ # Corresponds to the JSON property `consumerPeeringZone`
133
+ # @return [Google::Apis::ServicenetworkingV1::DnsZone]
134
+ attr_accessor :consumer_peering_zone
135
+
136
+ # Represents a DNS zone resource.
137
+ # Corresponds to the JSON property `producerPrivateZone`
138
+ # @return [Google::Apis::ServicenetworkingV1::DnsZone]
139
+ attr_accessor :producer_private_zone
140
+
141
+ def initialize(**args)
142
+ update!(**args)
143
+ end
144
+
145
+ # Update properties of this object
146
+ def update!(**args)
147
+ @consumer_peering_zone = args[:consumer_peering_zone] if args.key?(:consumer_peering_zone)
148
+ @producer_private_zone = args[:producer_private_zone] if args.key?(:producer_private_zone)
149
+ end
150
+ end
151
+
152
+ # Metadata provided through GetOperation request for the LRO generated by
153
+ # AddRoles API
154
+ class AddRolesMetadata
155
+ include Google::Apis::Core::Hashable
156
+
157
+ def initialize(**args)
158
+ update!(**args)
159
+ end
160
+
161
+ # Update properties of this object
162
+ def update!(**args)
163
+ end
164
+ end
165
+
166
+ # Request for AddRoles to allow Service Producers to add roles in the shared VPC
167
+ # host project for them to use.
168
+ class AddRolesRequest
169
+ include Google::Apis::Core::Hashable
170
+
171
+ # Required. The network that the consumer is using to connect with services.
172
+ # Must be in the form of projects/`project`/global/networks/`network` `project`
173
+ # is a project number, as in '12345' `network` is a network name.
174
+ # Corresponds to the JSON property `consumerNetwork`
175
+ # @return [String]
176
+ attr_accessor :consumer_network
177
+
178
+ # Required. List of policy bindings to add to shared VPC host project.
179
+ # Corresponds to the JSON property `policyBinding`
180
+ # @return [Array<Google::Apis::ServicenetworkingV1::PolicyBinding>]
181
+ attr_accessor :policy_binding
182
+
183
+ def initialize(**args)
184
+ update!(**args)
185
+ end
186
+
187
+ # Update properties of this object
188
+ def update!(**args)
189
+ @consumer_network = args[:consumer_network] if args.key?(:consumer_network)
190
+ @policy_binding = args[:policy_binding] if args.key?(:policy_binding)
191
+ end
192
+ end
193
+
194
+ # Represents IAM roles added to the shared VPC host project.
195
+ class AddRolesResponse
196
+ include Google::Apis::Core::Hashable
197
+
198
+ # Required. List of policy bindings that were added to the shared VPC host
199
+ # project.
200
+ # Corresponds to the JSON property `policyBinding`
201
+ # @return [Array<Google::Apis::ServicenetworkingV1::PolicyBinding>]
202
+ attr_accessor :policy_binding
203
+
204
+ def initialize(**args)
205
+ update!(**args)
206
+ end
207
+
208
+ # Update properties of this object
209
+ def update!(**args)
210
+ @policy_binding = args[:policy_binding] if args.key?(:policy_binding)
211
+ end
212
+ end
213
+
214
+ # Request to create a subnetwork in a previously peered service network.
215
+ class AddSubnetworkRequest
216
+ include Google::Apis::Core::Hashable
217
+
218
+ # Required. A resource that represents the service consumer, such as `projects/
219
+ # 123456`. The project number can be different from the value in the consumer
220
+ # network parameter. For example, the network might be part of a Shared VPC
221
+ # network. In those cases, Service Networking validates that this resource
222
+ # belongs to that Shared VPC.
223
+ # Corresponds to the JSON property `consumer`
224
+ # @return [String]
225
+ attr_accessor :consumer
226
+
227
+ # Required. The name of the service consumer's VPC network. The network must
228
+ # have an existing private connection that was provisioned through the
229
+ # connections.create method. The name must be in the following format: `projects/
230
+ # `project`/global/networks/`network``, where `project` is a project number,
231
+ # such as `12345`. `network` is the name of a VPC network in the project.
232
+ # Corresponds to the JSON property `consumerNetwork`
233
+ # @return [String]
234
+ attr_accessor :consumer_network
235
+
236
+ # Optional. Description of the subnet.
237
+ # Corresponds to the JSON property `description`
238
+ # @return [String]
239
+ attr_accessor :description
240
+
241
+ # Required. The prefix length of the subnet's IP address range. Use CIDR range
242
+ # notation, such as `30` to provision a subnet with an `x.x.x.x/30` CIDR range.
243
+ # The IP address range is drawn from a pool of available ranges in the service
244
+ # consumer's allocated range.
245
+ # Corresponds to the JSON property `ipPrefixLength`
246
+ # @return [Fixnum]
247
+ attr_accessor :ip_prefix_length
248
+
249
+ # Required. The name of a [region](/compute/docs/regions-zones) for the subnet,
250
+ # such `europe-west1`.
251
+ # Corresponds to the JSON property `region`
252
+ # @return [String]
253
+ attr_accessor :region
254
+
255
+ # Optional. The starting address of a range. The address must be a valid IPv4
256
+ # address in the x.x.x.x format. This value combined with the IP prefix range is
257
+ # the CIDR range for the subnet. The range must be within the allocated range
258
+ # that is assigned to the private connection. If the CIDR range isn't available,
259
+ # the call fails.
260
+ # Corresponds to the JSON property `requestedAddress`
261
+ # @return [String]
262
+ attr_accessor :requested_address
263
+
264
+ # Optional. The name of one or more allocated IP address ranges associated with
265
+ # this private service access connection. If no range names are provided all
266
+ # ranges associated with this connection will be considered. If a CIDR range
267
+ # with the specified IP prefix length is not available within these ranges, the
268
+ # call fails.
269
+ # Corresponds to the JSON property `requestedRanges`
270
+ # @return [Array<String>]
271
+ attr_accessor :requested_ranges
272
+
273
+ # Optional. A list of secondary IP ranges to be created within the new
274
+ # subnetwork.
275
+ # Corresponds to the JSON property `secondaryIpRangeSpecs`
276
+ # @return [Array<Google::Apis::ServicenetworkingV1::SecondaryIpRangeSpec>]
277
+ attr_accessor :secondary_ip_range_specs
278
+
279
+ # Required. A name for the new subnet. For information about the naming
280
+ # requirements, see [subnetwork](/compute/docs/reference/rest/v1/subnetworks) in
281
+ # the Compute API documentation.
282
+ # Corresponds to the JSON property `subnetwork`
283
+ # @return [String]
284
+ attr_accessor :subnetwork
285
+
286
+ # A list of members that are granted the `compute.networkUser` role on the
287
+ # subnet.
288
+ # Corresponds to the JSON property `subnetworkUsers`
289
+ # @return [Array<String>]
290
+ attr_accessor :subnetwork_users
291
+
292
+ def initialize(**args)
293
+ update!(**args)
294
+ end
295
+
296
+ # Update properties of this object
297
+ def update!(**args)
298
+ @consumer = args[:consumer] if args.key?(:consumer)
299
+ @consumer_network = args[:consumer_network] if args.key?(:consumer_network)
300
+ @description = args[:description] if args.key?(:description)
301
+ @ip_prefix_length = args[:ip_prefix_length] if args.key?(:ip_prefix_length)
302
+ @region = args[:region] if args.key?(:region)
303
+ @requested_address = args[:requested_address] if args.key?(:requested_address)
304
+ @requested_ranges = args[:requested_ranges] if args.key?(:requested_ranges)
305
+ @secondary_ip_range_specs = args[:secondary_ip_range_specs] if args.key?(:secondary_ip_range_specs)
306
+ @subnetwork = args[:subnetwork] if args.key?(:subnetwork)
307
+ @subnetwork_users = args[:subnetwork_users] if args.key?(:subnetwork_users)
308
+ end
309
+ end
310
+
311
+ # Api is a light-weight descriptor for an API Interface. Interfaces are also
312
+ # described as "protocol buffer services" in some contexts, such as by the "
313
+ # service" keyword in a .proto file, but they are different from API Services,
314
+ # which represent a concrete implementation of an interface as opposed to simply
315
+ # a description of methods and bindings. They are also sometimes simply referred
316
+ # to as "APIs" in other contexts, such as the name of this message itself. See
317
+ # https://cloud.google.com/apis/design/glossary for detailed terminology.
318
+ class Api
319
+ include Google::Apis::Core::Hashable
320
+
321
+ # The methods of this interface, in unspecified order.
322
+ # Corresponds to the JSON property `methods`
323
+ # @return [Array<Google::Apis::ServicenetworkingV1::MethodProp>]
324
+ attr_accessor :methods_prop
325
+
326
+ # Included interfaces. See Mixin.
327
+ # Corresponds to the JSON property `mixins`
328
+ # @return [Array<Google::Apis::ServicenetworkingV1::Mixin>]
329
+ attr_accessor :mixins
330
+
331
+ # The fully qualified name of this interface, including package name followed by
332
+ # the interface's simple name.
333
+ # Corresponds to the JSON property `name`
334
+ # @return [String]
335
+ attr_accessor :name
336
+
337
+ # Any metadata attached to the interface.
338
+ # Corresponds to the JSON property `options`
339
+ # @return [Array<Google::Apis::ServicenetworkingV1::Option>]
340
+ attr_accessor :options
341
+
342
+ # `SourceContext` represents information about the source of a protobuf element,
343
+ # like the file in which it is defined.
344
+ # Corresponds to the JSON property `sourceContext`
345
+ # @return [Google::Apis::ServicenetworkingV1::SourceContext]
346
+ attr_accessor :source_context
347
+
348
+ # The source syntax of the service.
349
+ # Corresponds to the JSON property `syntax`
350
+ # @return [String]
351
+ attr_accessor :syntax
352
+
353
+ # A version string for this interface. If specified, must have the form `major-
354
+ # version.minor-version`, as in `1.10`. If the minor version is omitted, it
355
+ # defaults to zero. If the entire version field is empty, the major version is
356
+ # derived from the package name, as outlined below. If the field is not empty,
357
+ # the version in the package name will be verified to be consistent with what is
358
+ # provided here. The versioning schema uses [semantic versioning](http://semver.
359
+ # org) where the major version number indicates a breaking change and the minor
360
+ # version an additive, non-breaking change. Both version numbers are signals to
361
+ # users what to expect from different versions, and should be carefully chosen
362
+ # based on the product plan. The major version is also reflected in the package
363
+ # name of the interface, which must end in `v`, as in `google.feature.v1`. For
364
+ # major versions 0 and 1, the suffix can be omitted. Zero major versions must
365
+ # only be used for experimental, non-GA interfaces.
366
+ # Corresponds to the JSON property `version`
367
+ # @return [String]
368
+ attr_accessor :version
369
+
370
+ def initialize(**args)
371
+ update!(**args)
372
+ end
373
+
374
+ # Update properties of this object
375
+ def update!(**args)
376
+ @methods_prop = args[:methods_prop] if args.key?(:methods_prop)
377
+ @mixins = args[:mixins] if args.key?(:mixins)
378
+ @name = args[:name] if args.key?(:name)
379
+ @options = args[:options] if args.key?(:options)
380
+ @source_context = args[:source_context] if args.key?(:source_context)
381
+ @syntax = args[:syntax] if args.key?(:syntax)
382
+ @version = args[:version] if args.key?(:version)
383
+ end
384
+ end
385
+
386
+ # Configuration for an authentication provider, including support for [JSON Web
387
+ # Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
388
+ class AuthProvider
389
+ include Google::Apis::Core::Hashable
390
+
391
+ # The list of JWT [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-
392
+ # web-token-32#section-4.1.3). that are allowed to access. A JWT containing any
393
+ # of these audiences will be accepted. When this setting is absent, JWTs with
394
+ # audiences: - "https://[service.name]/[google.protobuf.Api.name]" - "https://[
395
+ # service.name]/" will be accepted. For example, if no audiences are in the
396
+ # setting, LibraryService API will accept JWTs with the following audiences: -
397
+ # https://library-example.googleapis.com/google.example.library.v1.
398
+ # LibraryService - https://library-example.googleapis.com/ Example: audiences:
399
+ # bookstore_android.apps.googleusercontent.com, bookstore_web.apps.
400
+ # googleusercontent.com
401
+ # Corresponds to the JSON property `audiences`
402
+ # @return [String]
403
+ attr_accessor :audiences
404
+
405
+ # Redirect URL if JWT token is required but not present or is expired. Implement
406
+ # authorizationUrl of securityDefinitions in OpenAPI spec.
407
+ # Corresponds to the JSON property `authorizationUrl`
408
+ # @return [String]
409
+ attr_accessor :authorization_url
410
+
411
+ # The unique identifier of the auth provider. It will be referred to by `
412
+ # AuthRequirement.provider_id`. Example: "bookstore_auth".
413
+ # Corresponds to the JSON property `id`
414
+ # @return [String]
415
+ attr_accessor :id
416
+
417
+ # Identifies the principal that issued the JWT. See https://tools.ietf.org/html/
418
+ # draft-ietf-oauth-json-web-token-32#section-4.1.1 Usually a URL or an email
419
+ # address. Example: https://securetoken.google.com Example: 1234567-compute@
420
+ # developer.gserviceaccount.com
421
+ # Corresponds to the JSON property `issuer`
422
+ # @return [String]
423
+ attr_accessor :issuer
424
+
425
+ # URL of the provider's public key set to validate signature of the JWT. See [
426
+ # OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#
427
+ # ProviderMetadata). Optional if the key set document: - can be retrieved from [
428
+ # OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html)
429
+ # of the issuer. - can be inferred from the email domain of the issuer (e.g. a
430
+ # Google service account). Example: https://www.googleapis.com/oauth2/v1/certs
431
+ # Corresponds to the JSON property `jwksUri`
432
+ # @return [String]
433
+ attr_accessor :jwks_uri
434
+
435
+ # Defines the locations to extract the JWT. JWT locations can be either from
436
+ # HTTP headers or URL query parameters. The rule is that the first match wins.
437
+ # The checking order is: checking all headers first, then URL query parameters.
438
+ # If not specified, default to use following 3 locations: 1) Authorization:
439
+ # Bearer 2) x-goog-iap-jwt-assertion 3) access_token query parameter Default
440
+ # locations can be specified as followings: jwt_locations: - header:
441
+ # Authorization value_prefix: "Bearer " - header: x-goog-iap-jwt-assertion -
442
+ # query: access_token
443
+ # Corresponds to the JSON property `jwtLocations`
444
+ # @return [Array<Google::Apis::ServicenetworkingV1::JwtLocation>]
445
+ attr_accessor :jwt_locations
446
+
447
+ def initialize(**args)
448
+ update!(**args)
449
+ end
450
+
451
+ # Update properties of this object
452
+ def update!(**args)
453
+ @audiences = args[:audiences] if args.key?(:audiences)
454
+ @authorization_url = args[:authorization_url] if args.key?(:authorization_url)
455
+ @id = args[:id] if args.key?(:id)
456
+ @issuer = args[:issuer] if args.key?(:issuer)
457
+ @jwks_uri = args[:jwks_uri] if args.key?(:jwks_uri)
458
+ @jwt_locations = args[:jwt_locations] if args.key?(:jwt_locations)
459
+ end
460
+ end
461
+
462
+ # User-defined authentication requirements, including support for [JSON Web
463
+ # Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
464
+ class AuthRequirement
465
+ include Google::Apis::Core::Hashable
466
+
467
+ # NOTE: This will be deprecated soon, once AuthProvider.audiences is implemented
468
+ # and accepted in all the runtime components. The list of JWT [audiences](https:/
469
+ # /tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). that
470
+ # are allowed to access. A JWT containing any of these audiences will be
471
+ # accepted. When this setting is absent, only JWTs with audience "https://
472
+ # Service_name/API_name" will be accepted. For example, if no audiences are in
473
+ # the setting, LibraryService API will only accept JWTs with the following
474
+ # audience "https://library-example.googleapis.com/google.example.library.v1.
475
+ # LibraryService". Example: audiences: bookstore_android.apps.googleusercontent.
476
+ # com, bookstore_web.apps.googleusercontent.com
477
+ # Corresponds to the JSON property `audiences`
478
+ # @return [String]
479
+ attr_accessor :audiences
480
+
481
+ # id from authentication provider. Example: provider_id: bookstore_auth
482
+ # Corresponds to the JSON property `providerId`
483
+ # @return [String]
484
+ attr_accessor :provider_id
485
+
486
+ def initialize(**args)
487
+ update!(**args)
488
+ end
489
+
490
+ # Update properties of this object
491
+ def update!(**args)
492
+ @audiences = args[:audiences] if args.key?(:audiences)
493
+ @provider_id = args[:provider_id] if args.key?(:provider_id)
494
+ end
495
+ end
496
+
497
+ # `Authentication` defines the authentication configuration for an API. Example
498
+ # for an API targeted for external use: name: calendar.googleapis.com
499
+ # authentication: providers: - id: google_calendar_auth jwks_uri: https://www.
500
+ # googleapis.com/oauth2/v1/certs issuer: https://securetoken.google.com rules: -
501
+ # selector: "*" requirements: provider_id: google_calendar_auth
502
+ class Authentication
503
+ include Google::Apis::Core::Hashable
504
+
505
+ # Defines a set of authentication providers that a service supports.
506
+ # Corresponds to the JSON property `providers`
507
+ # @return [Array<Google::Apis::ServicenetworkingV1::AuthProvider>]
508
+ attr_accessor :providers
509
+
510
+ # A list of authentication rules that apply to individual API methods. **NOTE:**
511
+ # All service configuration rules follow "last one wins" order.
512
+ # Corresponds to the JSON property `rules`
513
+ # @return [Array<Google::Apis::ServicenetworkingV1::AuthenticationRule>]
514
+ attr_accessor :rules
515
+
516
+ def initialize(**args)
517
+ update!(**args)
518
+ end
519
+
520
+ # Update properties of this object
521
+ def update!(**args)
522
+ @providers = args[:providers] if args.key?(:providers)
523
+ @rules = args[:rules] if args.key?(:rules)
524
+ end
525
+ end
526
+
527
+ # Authentication rules for the service. By default, if a method has any
528
+ # authentication requirements, every request must include a valid credential
529
+ # matching one of the requirements. It's an error to include more than one kind
530
+ # of credential in a single request. If a method doesn't have any auth
531
+ # requirements, request credentials will be ignored.
532
+ class AuthenticationRule
533
+ include Google::Apis::Core::Hashable
534
+
535
+ # If true, the service accepts API keys without any other credential. This flag
536
+ # only applies to HTTP and gRPC requests.
537
+ # Corresponds to the JSON property `allowWithoutCredential`
538
+ # @return [Boolean]
539
+ attr_accessor :allow_without_credential
540
+ alias_method :allow_without_credential?, :allow_without_credential
541
+
542
+ # OAuth scopes are a way to define data and permissions on data. For example,
543
+ # there are scopes defined for "Read-only access to Google Calendar" and "Access
544
+ # to Cloud Platform". Users can consent to a scope for an application, giving it
545
+ # permission to access that data on their behalf. OAuth scope specifications
546
+ # should be fairly coarse grained; a user will need to see and understand the
547
+ # text description of what your scope means. In most cases: use one or at most
548
+ # two OAuth scopes for an entire family of products. If your product has
549
+ # multiple APIs, you should probably be sharing the OAuth scope across all of
550
+ # those APIs. When you need finer grained OAuth consent screens: talk with your
551
+ # product management about how developers will use them in practice. Please note
552
+ # that even though each of the canonical scopes is enough for a request to be
553
+ # accepted and passed to the backend, a request can still fail due to the
554
+ # backend requiring additional scopes or permissions.
555
+ # Corresponds to the JSON property `oauth`
556
+ # @return [Google::Apis::ServicenetworkingV1::OAuthRequirements]
557
+ attr_accessor :oauth
558
+
559
+ # Requirements for additional authentication providers.
560
+ # Corresponds to the JSON property `requirements`
561
+ # @return [Array<Google::Apis::ServicenetworkingV1::AuthRequirement>]
562
+ attr_accessor :requirements
563
+
564
+ # Selects the methods to which this rule applies. Refer to selector for syntax
565
+ # details.
566
+ # Corresponds to the JSON property `selector`
567
+ # @return [String]
568
+ attr_accessor :selector
569
+
570
+ def initialize(**args)
571
+ update!(**args)
572
+ end
573
+
574
+ # Update properties of this object
575
+ def update!(**args)
576
+ @allow_without_credential = args[:allow_without_credential] if args.key?(:allow_without_credential)
577
+ @oauth = args[:oauth] if args.key?(:oauth)
578
+ @requirements = args[:requirements] if args.key?(:requirements)
579
+ @selector = args[:selector] if args.key?(:selector)
580
+ end
581
+ end
582
+
583
+ # `Backend` defines the backend configuration for a service.
584
+ class Backend
585
+ include Google::Apis::Core::Hashable
586
+
587
+ # A list of API backend rules that apply to individual API methods. **NOTE:**
588
+ # All service configuration rules follow "last one wins" order.
589
+ # Corresponds to the JSON property `rules`
590
+ # @return [Array<Google::Apis::ServicenetworkingV1::BackendRule>]
591
+ attr_accessor :rules
592
+
593
+ def initialize(**args)
594
+ update!(**args)
595
+ end
596
+
597
+ # Update properties of this object
598
+ def update!(**args)
599
+ @rules = args[:rules] if args.key?(:rules)
600
+ end
601
+ end
602
+
603
+ # A backend rule provides configuration for an individual API element.
604
+ class BackendRule
605
+ include Google::Apis::Core::Hashable
606
+
607
+ # The address of the API backend. The scheme is used to determine the backend
608
+ # protocol and security. The following schemes are accepted: SCHEME PROTOCOL
609
+ # SECURITY http:// HTTP None https:// HTTP TLS grpc:// gRPC None grpcs:// gRPC
610
+ # TLS It is recommended to explicitly include a scheme. Leaving out the scheme
611
+ # may cause constrasting behaviors across platforms. If the port is unspecified,
612
+ # the default is: - 80 for schemes without TLS - 443 for schemes with TLS For
613
+ # HTTP backends, use protocol to specify the protocol version.
614
+ # Corresponds to the JSON property `address`
615
+ # @return [String]
616
+ attr_accessor :address
617
+
618
+ # The number of seconds to wait for a response from a request. The default
619
+ # varies based on the request protocol and deployment environment.
620
+ # Corresponds to the JSON property `deadline`
621
+ # @return [Float]
622
+ attr_accessor :deadline
623
+
624
+ # When disable_auth is true, a JWT ID token won't be generated and the original "
625
+ # Authorization" HTTP header will be preserved. If the header is used to carry
626
+ # the original token and is expected by the backend, this field must be set to
627
+ # true to preserve the header.
628
+ # Corresponds to the JSON property `disableAuth`
629
+ # @return [Boolean]
630
+ attr_accessor :disable_auth
631
+ alias_method :disable_auth?, :disable_auth
632
+
633
+ # The JWT audience is used when generating a JWT ID token for the backend. This
634
+ # ID token will be added in the HTTP "authorization" header, and sent to the
635
+ # backend.
636
+ # Corresponds to the JSON property `jwtAudience`
637
+ # @return [String]
638
+ attr_accessor :jwt_audience
639
+
640
+ # Minimum deadline in seconds needed for this method. Calls having deadline
641
+ # value lower than this will be rejected.
642
+ # Corresponds to the JSON property `minDeadline`
643
+ # @return [Float]
644
+ attr_accessor :min_deadline
645
+
646
+ # The number of seconds to wait for the completion of a long running operation.
647
+ # The default is no deadline.
648
+ # Corresponds to the JSON property `operationDeadline`
649
+ # @return [Float]
650
+ attr_accessor :operation_deadline
651
+
652
+ #
653
+ # Corresponds to the JSON property `pathTranslation`
654
+ # @return [String]
655
+ attr_accessor :path_translation
656
+
657
+ # The protocol used for sending a request to the backend. The supported values
658
+ # are "http/1.1" and "h2". The default value is inferred from the scheme in the
659
+ # address field: SCHEME PROTOCOL http:// http/1.1 https:// http/1.1 grpc:// h2
660
+ # grpcs:// h2 For secure HTTP backends (https://) that support HTTP/2, set this
661
+ # field to "h2" for improved performance. Configuring this field to non-default
662
+ # values is only supported for secure HTTP backends. This field will be ignored
663
+ # for all other backends. See https://www.iana.org/assignments/tls-extensiontype-
664
+ # values/tls-extensiontype-values.xhtml#alpn-protocol-ids for more details on
665
+ # the supported values.
666
+ # Corresponds to the JSON property `protocol`
667
+ # @return [String]
668
+ attr_accessor :protocol
669
+
670
+ # Selects the methods to which this rule applies. Refer to selector for syntax
671
+ # details.
672
+ # Corresponds to the JSON property `selector`
673
+ # @return [String]
674
+ attr_accessor :selector
675
+
676
+ def initialize(**args)
677
+ update!(**args)
678
+ end
679
+
680
+ # Update properties of this object
681
+ def update!(**args)
682
+ @address = args[:address] if args.key?(:address)
683
+ @deadline = args[:deadline] if args.key?(:deadline)
684
+ @disable_auth = args[:disable_auth] if args.key?(:disable_auth)
685
+ @jwt_audience = args[:jwt_audience] if args.key?(:jwt_audience)
686
+ @min_deadline = args[:min_deadline] if args.key?(:min_deadline)
687
+ @operation_deadline = args[:operation_deadline] if args.key?(:operation_deadline)
688
+ @path_translation = args[:path_translation] if args.key?(:path_translation)
689
+ @protocol = args[:protocol] if args.key?(:protocol)
690
+ @selector = args[:selector] if args.key?(:selector)
691
+ end
692
+ end
693
+
694
+ # Billing related configuration of the service. The following example shows how
695
+ # to configure monitored resources and metrics for billing, `
696
+ # consumer_destinations` is the only supported destination and the monitored
697
+ # resources need at least one label key `cloud.googleapis.com/location` to
698
+ # indicate the location of the billing usage, using different monitored
699
+ # resources between monitoring and billing is recommended so they can be evolved
700
+ # independently: monitored_resources: - type: library.googleapis.com/
701
+ # billing_branch labels: - key: cloud.googleapis.com/location description: |
702
+ # Predefined label to support billing location restriction. - key: city
703
+ # description: | Custom label to define the city where the library branch is
704
+ # located in. - key: name description: Custom label to define the name of the
705
+ # library branch. metrics: - name: library.googleapis.com/book/borrowed_count
706
+ # metric_kind: DELTA value_type: INT64 unit: "1" billing: consumer_destinations:
707
+ # - monitored_resource: library.googleapis.com/billing_branch metrics: - library.
708
+ # googleapis.com/book/borrowed_count
709
+ class Billing
710
+ include Google::Apis::Core::Hashable
711
+
712
+ # Billing configurations for sending metrics to the consumer project. There can
713
+ # be multiple consumer destinations per service, each one must have a different
714
+ # monitored resource type. A metric can be used in at most one consumer
715
+ # destination.
716
+ # Corresponds to the JSON property `consumerDestinations`
717
+ # @return [Array<Google::Apis::ServicenetworkingV1::BillingDestination>]
718
+ attr_accessor :consumer_destinations
719
+
720
+ def initialize(**args)
721
+ update!(**args)
722
+ end
723
+
724
+ # Update properties of this object
725
+ def update!(**args)
726
+ @consumer_destinations = args[:consumer_destinations] if args.key?(:consumer_destinations)
727
+ end
728
+ end
729
+
730
+ # Configuration of a specific billing destination (Currently only support bill
731
+ # against consumer project).
732
+ class BillingDestination
733
+ include Google::Apis::Core::Hashable
734
+
735
+ # Names of the metrics to report to this billing destination. Each name must be
736
+ # defined in Service.metrics section.
737
+ # Corresponds to the JSON property `metrics`
738
+ # @return [Array<String>]
739
+ attr_accessor :metrics
740
+
741
+ # The monitored resource type. The type must be defined in Service.
742
+ # monitored_resources section.
743
+ # Corresponds to the JSON property `monitoredResource`
744
+ # @return [String]
745
+ attr_accessor :monitored_resource
746
+
747
+ def initialize(**args)
748
+ update!(**args)
749
+ end
750
+
751
+ # Update properties of this object
752
+ def update!(**args)
753
+ @metrics = args[:metrics] if args.key?(:metrics)
754
+ @monitored_resource = args[:monitored_resource] if args.key?(:monitored_resource)
755
+ end
756
+ end
757
+
758
+ # The request message for Operations.CancelOperation.
759
+ class CancelOperationRequest
760
+ include Google::Apis::Core::Hashable
761
+
762
+ def initialize(**args)
763
+ update!(**args)
764
+ end
765
+
766
+ # Update properties of this object
767
+ def update!(**args)
768
+ end
769
+ end
770
+
771
+ # Represents a private connection resource. A private connection is implemented
772
+ # as a VPC Network Peering connection between a service producer's VPC network
773
+ # and a service consumer's VPC network.
774
+ class Connection
775
+ include Google::Apis::Core::Hashable
776
+
777
+ # The name of service consumer's VPC network that's connected with service
778
+ # producer network, in the following format: `projects/`project`/global/networks/
779
+ # `network``. ``project`` is a project number, such as in `12345` that includes
780
+ # the VPC service consumer's VPC network. ``network`` is the name of the service
781
+ # consumer's VPC network.
782
+ # Corresponds to the JSON property `network`
783
+ # @return [String]
784
+ attr_accessor :network
785
+
786
+ # Output only. The name of the VPC Network Peering connection that was created
787
+ # by the service producer.
788
+ # Corresponds to the JSON property `peering`
789
+ # @return [String]
790
+ attr_accessor :peering
791
+
792
+ # The name of one or more allocated IP address ranges for this service producer
793
+ # of type `PEERING`. Note that invoking CreateConnection method with a different
794
+ # range when connection is already established will not modify already
795
+ # provisioned service producer subnetworks. If CreateConnection method is
796
+ # invoked repeatedly to reconnect when peering connection had been disconnected
797
+ # on the consumer side, leaving this field empty will restore previously
798
+ # allocated IP ranges.
799
+ # Corresponds to the JSON property `reservedPeeringRanges`
800
+ # @return [Array<String>]
801
+ attr_accessor :reserved_peering_ranges
802
+
803
+ # Output only. The name of the peering service that's associated with this
804
+ # connection, in the following format: `services/`service name``.
805
+ # Corresponds to the JSON property `service`
806
+ # @return [String]
807
+ attr_accessor :service
808
+
809
+ def initialize(**args)
810
+ update!(**args)
811
+ end
812
+
813
+ # Update properties of this object
814
+ def update!(**args)
815
+ @network = args[:network] if args.key?(:network)
816
+ @peering = args[:peering] if args.key?(:peering)
817
+ @reserved_peering_ranges = args[:reserved_peering_ranges] if args.key?(:reserved_peering_ranges)
818
+ @service = args[:service] if args.key?(:service)
819
+ end
820
+ end
821
+
822
+ # Configuration information for a private service access connection.
823
+ class ConsumerConfig
824
+ include Google::Apis::Core::Hashable
825
+
826
+ # Export custom routes flag value for peering from consumer to producer.
827
+ # Corresponds to the JSON property `consumerExportCustomRoutes`
828
+ # @return [Boolean]
829
+ attr_accessor :consumer_export_custom_routes
830
+ alias_method :consumer_export_custom_routes?, :consumer_export_custom_routes
831
+
832
+ # Export subnet routes with public ip flag value for peering from consumer to
833
+ # producer.
834
+ # Corresponds to the JSON property `consumerExportSubnetRoutesWithPublicIp`
835
+ # @return [Boolean]
836
+ attr_accessor :consumer_export_subnet_routes_with_public_ip
837
+ alias_method :consumer_export_subnet_routes_with_public_ip?, :consumer_export_subnet_routes_with_public_ip
838
+
839
+ # Import custom routes flag value for peering from consumer to producer.
840
+ # Corresponds to the JSON property `consumerImportCustomRoutes`
841
+ # @return [Boolean]
842
+ attr_accessor :consumer_import_custom_routes
843
+ alias_method :consumer_import_custom_routes?, :consumer_import_custom_routes
844
+
845
+ # Import subnet routes with public ip flag value for peering from consumer to
846
+ # producer.
847
+ # Corresponds to the JSON property `consumerImportSubnetRoutesWithPublicIp`
848
+ # @return [Boolean]
849
+ attr_accessor :consumer_import_subnet_routes_with_public_ip
850
+ alias_method :consumer_import_subnet_routes_with_public_ip?, :consumer_import_subnet_routes_with_public_ip
851
+
852
+ # Export custom routes flag value for peering from producer to consumer.
853
+ # Corresponds to the JSON property `producerExportCustomRoutes`
854
+ # @return [Boolean]
855
+ attr_accessor :producer_export_custom_routes
856
+ alias_method :producer_export_custom_routes?, :producer_export_custom_routes
857
+
858
+ # Export subnet routes with public ip flag value for peering from producer to
859
+ # consumer.
860
+ # Corresponds to the JSON property `producerExportSubnetRoutesWithPublicIp`
861
+ # @return [Boolean]
862
+ attr_accessor :producer_export_subnet_routes_with_public_ip
863
+ alias_method :producer_export_subnet_routes_with_public_ip?, :producer_export_subnet_routes_with_public_ip
864
+
865
+ # Import custom routes flag value for peering from producer to consumer.
866
+ # Corresponds to the JSON property `producerImportCustomRoutes`
867
+ # @return [Boolean]
868
+ attr_accessor :producer_import_custom_routes
869
+ alias_method :producer_import_custom_routes?, :producer_import_custom_routes
870
+
871
+ # Import subnet routes with public ip flag value for peering from producer to
872
+ # consumer.
873
+ # Corresponds to the JSON property `producerImportSubnetRoutesWithPublicIp`
874
+ # @return [Boolean]
875
+ attr_accessor :producer_import_subnet_routes_with_public_ip
876
+ alias_method :producer_import_subnet_routes_with_public_ip?, :producer_import_subnet_routes_with_public_ip
877
+
878
+ # Output only. The VPC host network that is used to host managed service
879
+ # instances. In the format, projects/`project`/global/networks/`network` where `
880
+ # project` is the project number e.g. '12345' and `network` is the network name.
881
+ # Corresponds to the JSON property `producerNetwork`
882
+ # @return [String]
883
+ attr_accessor :producer_network
884
+
885
+ # Output only. The reserved ranges associated with this private service access
886
+ # connection.
887
+ # Corresponds to the JSON property `reservedRanges`
888
+ # @return [Array<Google::Apis::ServicenetworkingV1::GoogleCloudServicenetworkingV1ConsumerConfigReservedRange>]
889
+ attr_accessor :reserved_ranges
890
+
891
+ # Output only. Indicates whether the VPC Service Controls reference architecture
892
+ # is configured for the producer VPC host network.
893
+ # Corresponds to the JSON property `vpcScReferenceArchitectureEnabled`
894
+ # @return [Boolean]
895
+ attr_accessor :vpc_sc_reference_architecture_enabled
896
+ alias_method :vpc_sc_reference_architecture_enabled?, :vpc_sc_reference_architecture_enabled
897
+
898
+ def initialize(**args)
899
+ update!(**args)
900
+ end
901
+
902
+ # Update properties of this object
903
+ def update!(**args)
904
+ @consumer_export_custom_routes = args[:consumer_export_custom_routes] if args.key?(:consumer_export_custom_routes)
905
+ @consumer_export_subnet_routes_with_public_ip = args[:consumer_export_subnet_routes_with_public_ip] if args.key?(:consumer_export_subnet_routes_with_public_ip)
906
+ @consumer_import_custom_routes = args[:consumer_import_custom_routes] if args.key?(:consumer_import_custom_routes)
907
+ @consumer_import_subnet_routes_with_public_ip = args[:consumer_import_subnet_routes_with_public_ip] if args.key?(:consumer_import_subnet_routes_with_public_ip)
908
+ @producer_export_custom_routes = args[:producer_export_custom_routes] if args.key?(:producer_export_custom_routes)
909
+ @producer_export_subnet_routes_with_public_ip = args[:producer_export_subnet_routes_with_public_ip] if args.key?(:producer_export_subnet_routes_with_public_ip)
910
+ @producer_import_custom_routes = args[:producer_import_custom_routes] if args.key?(:producer_import_custom_routes)
911
+ @producer_import_subnet_routes_with_public_ip = args[:producer_import_subnet_routes_with_public_ip] if args.key?(:producer_import_subnet_routes_with_public_ip)
912
+ @producer_network = args[:producer_network] if args.key?(:producer_network)
913
+ @reserved_ranges = args[:reserved_ranges] if args.key?(:reserved_ranges)
914
+ @vpc_sc_reference_architecture_enabled = args[:vpc_sc_reference_architecture_enabled] if args.key?(:vpc_sc_reference_architecture_enabled)
915
+ end
916
+ end
917
+
918
+ # Metadata provided through GetOperation request for the LRO generated by
919
+ # UpdateConsumerConfig API.
920
+ class ConsumerConfigMetadata
921
+ include Google::Apis::Core::Hashable
922
+
923
+ def initialize(**args)
924
+ update!(**args)
925
+ end
926
+
927
+ # Update properties of this object
928
+ def update!(**args)
929
+ end
930
+ end
931
+
932
+ # Represents a consumer project.
933
+ class ConsumerProject
934
+ include Google::Apis::Core::Hashable
935
+
936
+ # Required. Project number of the consumer that is launching the service
937
+ # instance. It can own the network that is peered with Google or, be a service
938
+ # project in an XPN where the host project has the network.
939
+ # Corresponds to the JSON property `projectNum`
940
+ # @return [Fixnum]
941
+ attr_accessor :project_num
942
+
943
+ def initialize(**args)
944
+ update!(**args)
945
+ end
946
+
947
+ # Update properties of this object
948
+ def update!(**args)
949
+ @project_num = args[:project_num] if args.key?(:project_num)
950
+ end
951
+ end
952
+
953
+ # `Context` defines which contexts an API requests. Example: context: rules: -
954
+ # selector: "*" requested: - google.rpc.context.ProjectContext - google.rpc.
955
+ # context.OriginContext The above specifies that all methods in the API request `
956
+ # google.rpc.context.ProjectContext` and `google.rpc.context.OriginContext`.
957
+ # Available context types are defined in package `google.rpc.context`. This also
958
+ # provides mechanism to allowlist any protobuf message extension that can be
959
+ # sent in grpc metadata using “x-goog-ext--bin” and “x-goog-ext--jspb” format.
960
+ # For example, list any service specific protobuf types that can appear in grpc
961
+ # metadata as follows in your yaml file: Example: context: rules: - selector: "
962
+ # google.example.library.v1.LibraryService.CreateBook"
963
+ # allowed_request_extensions: - google.foo.v1.NewExtension
964
+ # allowed_response_extensions: - google.foo.v1.NewExtension You can also specify
965
+ # extension ID instead of fully qualified extension name here.
966
+ class Context
967
+ include Google::Apis::Core::Hashable
968
+
969
+ # A list of RPC context rules that apply to individual API methods. **NOTE:**
970
+ # All service configuration rules follow "last one wins" order.
971
+ # Corresponds to the JSON property `rules`
972
+ # @return [Array<Google::Apis::ServicenetworkingV1::ContextRule>]
973
+ attr_accessor :rules
974
+
975
+ def initialize(**args)
976
+ update!(**args)
977
+ end
978
+
979
+ # Update properties of this object
980
+ def update!(**args)
981
+ @rules = args[:rules] if args.key?(:rules)
982
+ end
983
+ end
984
+
985
+ # A context rule provides information about the context for an individual API
986
+ # element.
987
+ class ContextRule
988
+ include Google::Apis::Core::Hashable
989
+
990
+ # A list of full type names or extension IDs of extensions allowed in grpc side
991
+ # channel from client to backend.
992
+ # Corresponds to the JSON property `allowedRequestExtensions`
993
+ # @return [Array<String>]
994
+ attr_accessor :allowed_request_extensions
995
+
996
+ # A list of full type names or extension IDs of extensions allowed in grpc side
997
+ # channel from backend to client.
998
+ # Corresponds to the JSON property `allowedResponseExtensions`
999
+ # @return [Array<String>]
1000
+ attr_accessor :allowed_response_extensions
1001
+
1002
+ # A list of full type names of provided contexts.
1003
+ # Corresponds to the JSON property `provided`
1004
+ # @return [Array<String>]
1005
+ attr_accessor :provided
1006
+
1007
+ # A list of full type names of requested contexts.
1008
+ # Corresponds to the JSON property `requested`
1009
+ # @return [Array<String>]
1010
+ attr_accessor :requested
1011
+
1012
+ # Selects the methods to which this rule applies. Refer to selector for syntax
1013
+ # details.
1014
+ # Corresponds to the JSON property `selector`
1015
+ # @return [String]
1016
+ attr_accessor :selector
1017
+
1018
+ def initialize(**args)
1019
+ update!(**args)
1020
+ end
1021
+
1022
+ # Update properties of this object
1023
+ def update!(**args)
1024
+ @allowed_request_extensions = args[:allowed_request_extensions] if args.key?(:allowed_request_extensions)
1025
+ @allowed_response_extensions = args[:allowed_response_extensions] if args.key?(:allowed_response_extensions)
1026
+ @provided = args[:provided] if args.key?(:provided)
1027
+ @requested = args[:requested] if args.key?(:requested)
1028
+ @selector = args[:selector] if args.key?(:selector)
1029
+ end
1030
+ end
1031
+
1032
+ # Selects and configures the service controller used by the service. The service
1033
+ # controller handles features like abuse, quota, billing, logging, monitoring,
1034
+ # etc.
1035
+ class Control
1036
+ include Google::Apis::Core::Hashable
1037
+
1038
+ # The service control environment to use. If empty, no control plane feature (
1039
+ # like quota and billing) will be enabled.
1040
+ # Corresponds to the JSON property `environment`
1041
+ # @return [String]
1042
+ attr_accessor :environment
1043
+
1044
+ def initialize(**args)
1045
+ update!(**args)
1046
+ end
1047
+
1048
+ # Update properties of this object
1049
+ def update!(**args)
1050
+ @environment = args[:environment] if args.key?(:environment)
1051
+ end
1052
+ end
1053
+
1054
+ # Customize service error responses. For example, list any service specific
1055
+ # protobuf types that can appear in error detail lists of error responses.
1056
+ # Example: custom_error: types: - google.foo.v1.CustomError - google.foo.v1.
1057
+ # AnotherError
1058
+ class CustomError
1059
+ include Google::Apis::Core::Hashable
1060
+
1061
+ # The list of custom error rules that apply to individual API messages. **NOTE:**
1062
+ # All service configuration rules follow "last one wins" order.
1063
+ # Corresponds to the JSON property `rules`
1064
+ # @return [Array<Google::Apis::ServicenetworkingV1::CustomErrorRule>]
1065
+ attr_accessor :rules
1066
+
1067
+ # The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.
1068
+ # Corresponds to the JSON property `types`
1069
+ # @return [Array<String>]
1070
+ attr_accessor :types
1071
+
1072
+ def initialize(**args)
1073
+ update!(**args)
1074
+ end
1075
+
1076
+ # Update properties of this object
1077
+ def update!(**args)
1078
+ @rules = args[:rules] if args.key?(:rules)
1079
+ @types = args[:types] if args.key?(:types)
1080
+ end
1081
+ end
1082
+
1083
+ # A custom error rule.
1084
+ class CustomErrorRule
1085
+ include Google::Apis::Core::Hashable
1086
+
1087
+ # Mark this message as possible payload in error response. Otherwise, objects of
1088
+ # this type will be filtered when they appear in error payload.
1089
+ # Corresponds to the JSON property `isErrorType`
1090
+ # @return [Boolean]
1091
+ attr_accessor :is_error_type
1092
+ alias_method :is_error_type?, :is_error_type
1093
+
1094
+ # Selects messages to which this rule applies. Refer to selector for syntax
1095
+ # details.
1096
+ # Corresponds to the JSON property `selector`
1097
+ # @return [String]
1098
+ attr_accessor :selector
1099
+
1100
+ def initialize(**args)
1101
+ update!(**args)
1102
+ end
1103
+
1104
+ # Update properties of this object
1105
+ def update!(**args)
1106
+ @is_error_type = args[:is_error_type] if args.key?(:is_error_type)
1107
+ @selector = args[:selector] if args.key?(:selector)
1108
+ end
1109
+ end
1110
+
1111
+ # A custom pattern is used for defining custom HTTP verb.
1112
+ class CustomHttpPattern
1113
+ include Google::Apis::Core::Hashable
1114
+
1115
+ # The name of this custom HTTP verb.
1116
+ # Corresponds to the JSON property `kind`
1117
+ # @return [String]
1118
+ attr_accessor :kind
1119
+
1120
+ # The path matched by this custom verb.
1121
+ # Corresponds to the JSON property `path`
1122
+ # @return [String]
1123
+ attr_accessor :path
1124
+
1125
+ def initialize(**args)
1126
+ update!(**args)
1127
+ end
1128
+
1129
+ # Update properties of this object
1130
+ def update!(**args)
1131
+ @kind = args[:kind] if args.key?(:kind)
1132
+ @path = args[:path] if args.key?(:path)
1133
+ end
1134
+ end
1135
+
1136
+ # Metadata provided through GetOperation request for the LRO generated by
1137
+ # DeletePeeredDnsDomain API.
1138
+ class DeletePeeredDnsDomainMetadata
1139
+ include Google::Apis::Core::Hashable
1140
+
1141
+ def initialize(**args)
1142
+ update!(**args)
1143
+ end
1144
+
1145
+ # Update properties of this object
1146
+ def update!(**args)
1147
+ end
1148
+ end
1149
+
1150
+ # Request to disable VPC service controls.
1151
+ class DisableVpcServiceControlsRequest
1152
+ include Google::Apis::Core::Hashable
1153
+
1154
+ # Required. The network that the consumer is using to connect with services.
1155
+ # Must be in the form of projects/`project`/global/networks/`network` `project`
1156
+ # is a project number, as in '12345' `network` is network name.
1157
+ # Corresponds to the JSON property `consumerNetwork`
1158
+ # @return [String]
1159
+ attr_accessor :consumer_network
1160
+
1161
+ def initialize(**args)
1162
+ update!(**args)
1163
+ end
1164
+
1165
+ # Update properties of this object
1166
+ def update!(**args)
1167
+ @consumer_network = args[:consumer_network] if args.key?(:consumer_network)
1168
+ end
1169
+ end
1170
+
1171
+ # Represents a DNS record set resource.
1172
+ class DnsRecordSet
1173
+ include Google::Apis::Core::Hashable
1174
+
1175
+ # Required. As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) for
1176
+ # examples see https://cloud.google.com/dns/records/json-record.
1177
+ # Corresponds to the JSON property `data`
1178
+ # @return [Array<String>]
1179
+ attr_accessor :data
1180
+
1181
+ # Required. The DNS or domain name of the record set, e.g. `test.example.com`.
1182
+ # Corresponds to the JSON property `domain`
1183
+ # @return [String]
1184
+ attr_accessor :domain
1185
+
1186
+ # Required. The period of time for which this RecordSet can be cached by
1187
+ # resolvers.
1188
+ # Corresponds to the JSON property `ttl`
1189
+ # @return [String]
1190
+ attr_accessor :ttl
1191
+
1192
+ # Required. The identifier of a supported record type.
1193
+ # Corresponds to the JSON property `type`
1194
+ # @return [String]
1195
+ attr_accessor :type
1196
+
1197
+ def initialize(**args)
1198
+ update!(**args)
1199
+ end
1200
+
1201
+ # Update properties of this object
1202
+ def update!(**args)
1203
+ @data = args[:data] if args.key?(:data)
1204
+ @domain = args[:domain] if args.key?(:domain)
1205
+ @ttl = args[:ttl] if args.key?(:ttl)
1206
+ @type = args[:type] if args.key?(:type)
1207
+ end
1208
+ end
1209
+
1210
+ # Represents a DNS zone resource.
1211
+ class DnsZone
1212
+ include Google::Apis::Core::Hashable
1213
+
1214
+ # The DNS name suffix of this zone e.g. `example.com.`.
1215
+ # Corresponds to the JSON property `dnsSuffix`
1216
+ # @return [String]
1217
+ attr_accessor :dns_suffix
1218
+
1219
+ # User assigned name for this resource. Must be unique within the project. The
1220
+ # name must be 1-63 characters long, must begin with a letter, end with a letter
1221
+ # or digit, and only contain lowercase letters, digits or dashes.
1222
+ # Corresponds to the JSON property `name`
1223
+ # @return [String]
1224
+ attr_accessor :name
1225
+
1226
+ def initialize(**args)
1227
+ update!(**args)
1228
+ end
1229
+
1230
+ # Update properties of this object
1231
+ def update!(**args)
1232
+ @dns_suffix = args[:dns_suffix] if args.key?(:dns_suffix)
1233
+ @name = args[:name] if args.key?(:name)
1234
+ end
1235
+ end
1236
+
1237
+ # `Documentation` provides the information for describing a service. Example:
1238
+ # documentation: summary: > The Google Calendar API gives access to most
1239
+ # calendar features. pages: - name: Overview content: (== include google/foo/
1240
+ # overview.md ==) - name: Tutorial content: (== include google/foo/tutorial.md ==
1241
+ # ) subpages; - name: Java content: (== include google/foo/tutorial_java.md ==)
1242
+ # rules: - selector: google.calendar.Calendar.Get description: > ... - selector:
1243
+ # google.calendar.Calendar.Put description: > ... Documentation is provided in
1244
+ # markdown syntax. In addition to standard markdown features, definition lists,
1245
+ # tables and fenced code blocks are supported. Section headers can be provided
1246
+ # and are interpreted relative to the section nesting of the context where a
1247
+ # documentation fragment is embedded. Documentation from the IDL is merged with
1248
+ # documentation defined via the config at normalization time, where
1249
+ # documentation provided by config rules overrides IDL provided. A number of
1250
+ # constructs specific to the API platform are supported in documentation text.
1251
+ # In order to reference a proto element, the following notation can be used: [
1252
+ # fully.qualified.proto.name][] To override the display text used for the link,
1253
+ # this can be used: [display text][fully.qualified.proto.name] Text can be
1254
+ # excluded from doc using the following notation: (-- internal comment --) A few
1255
+ # directives are available in documentation. Note that directives must appear on
1256
+ # a single line to be properly identified. The `include` directive includes a
1257
+ # markdown file from an external source: (== include path/to/file ==) The `
1258
+ # resource_for` directive marks a message to be the resource of a collection in
1259
+ # REST view. If it is not specified, tools attempt to infer the resource from
1260
+ # the operations in a collection: (== resource_for v1.shelves.books ==) The
1261
+ # directive `suppress_warning` does not directly affect documentation and is
1262
+ # documented together with service config validation.
1263
+ class Documentation
1264
+ include Google::Apis::Core::Hashable
1265
+
1266
+ # The URL to the root of documentation.
1267
+ # Corresponds to the JSON property `documentationRootUrl`
1268
+ # @return [String]
1269
+ attr_accessor :documentation_root_url
1270
+
1271
+ # Declares a single overview page. For example: documentation: summary: ...
1272
+ # overview: (== include overview.md ==) This is a shortcut for the following
1273
+ # declaration (using pages style): documentation: summary: ... pages: - name:
1274
+ # Overview content: (== include overview.md ==) Note: you cannot specify both `
1275
+ # overview` field and `pages` field.
1276
+ # Corresponds to the JSON property `overview`
1277
+ # @return [String]
1278
+ attr_accessor :overview
1279
+
1280
+ # The top level pages for the documentation set.
1281
+ # Corresponds to the JSON property `pages`
1282
+ # @return [Array<Google::Apis::ServicenetworkingV1::Page>]
1283
+ attr_accessor :pages
1284
+
1285
+ # A list of documentation rules that apply to individual API elements. **NOTE:**
1286
+ # All service configuration rules follow "last one wins" order.
1287
+ # Corresponds to the JSON property `rules`
1288
+ # @return [Array<Google::Apis::ServicenetworkingV1::DocumentationRule>]
1289
+ attr_accessor :rules
1290
+
1291
+ # Specifies the service root url if the default one (the service name from the
1292
+ # yaml file) is not suitable. This can be seen in any fully specified service
1293
+ # urls as well as sections that show a base that other urls are relative to.
1294
+ # Corresponds to the JSON property `serviceRootUrl`
1295
+ # @return [String]
1296
+ attr_accessor :service_root_url
1297
+
1298
+ # A short summary of what the service does. Can only be provided by plain text.
1299
+ # Corresponds to the JSON property `summary`
1300
+ # @return [String]
1301
+ attr_accessor :summary
1302
+
1303
+ def initialize(**args)
1304
+ update!(**args)
1305
+ end
1306
+
1307
+ # Update properties of this object
1308
+ def update!(**args)
1309
+ @documentation_root_url = args[:documentation_root_url] if args.key?(:documentation_root_url)
1310
+ @overview = args[:overview] if args.key?(:overview)
1311
+ @pages = args[:pages] if args.key?(:pages)
1312
+ @rules = args[:rules] if args.key?(:rules)
1313
+ @service_root_url = args[:service_root_url] if args.key?(:service_root_url)
1314
+ @summary = args[:summary] if args.key?(:summary)
1315
+ end
1316
+ end
1317
+
1318
+ # A documentation rule provides information about individual API elements.
1319
+ class DocumentationRule
1320
+ include Google::Apis::Core::Hashable
1321
+
1322
+ # Deprecation description of the selected element(s). It can be provided if an
1323
+ # element is marked as `deprecated`.
1324
+ # Corresponds to the JSON property `deprecationDescription`
1325
+ # @return [String]
1326
+ attr_accessor :deprecation_description
1327
+
1328
+ # Description of the selected API(s).
1329
+ # Corresponds to the JSON property `description`
1330
+ # @return [String]
1331
+ attr_accessor :description
1332
+
1333
+ # The selector is a comma-separated list of patterns. Each pattern is a
1334
+ # qualified name of the element which may end in "*", indicating a wildcard.
1335
+ # Wildcards are only allowed at the end and for a whole component of the
1336
+ # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A
1337
+ # wildcard will match one or more components. To specify a default for all
1338
+ # applicable elements, the whole pattern "*" is used.
1339
+ # Corresponds to the JSON property `selector`
1340
+ # @return [String]
1341
+ attr_accessor :selector
1342
+
1343
+ def initialize(**args)
1344
+ update!(**args)
1345
+ end
1346
+
1347
+ # Update properties of this object
1348
+ def update!(**args)
1349
+ @deprecation_description = args[:deprecation_description] if args.key?(:deprecation_description)
1350
+ @description = args[:description] if args.key?(:description)
1351
+ @selector = args[:selector] if args.key?(:selector)
1352
+ end
1353
+ end
1354
+
1355
+ # A generic empty message that you can re-use to avoid defining duplicated empty
1356
+ # messages in your APIs. A typical example is to use it as the request or the
1357
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
1358
+ # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
1359
+ # `Empty` is empty JSON object ````.
1360
+ class Empty
1361
+ include Google::Apis::Core::Hashable
1362
+
1363
+ def initialize(**args)
1364
+ update!(**args)
1365
+ end
1366
+
1367
+ # Update properties of this object
1368
+ def update!(**args)
1369
+ end
1370
+ end
1371
+
1372
+ # Request to enable VPC service controls.
1373
+ class EnableVpcServiceControlsRequest
1374
+ include Google::Apis::Core::Hashable
1375
+
1376
+ # Required. The network that the consumer is using to connect with services.
1377
+ # Must be in the form of projects/`project`/global/networks/`network` `project`
1378
+ # is a project number, as in '12345' `network` is network name.
1379
+ # Corresponds to the JSON property `consumerNetwork`
1380
+ # @return [String]
1381
+ attr_accessor :consumer_network
1382
+
1383
+ def initialize(**args)
1384
+ update!(**args)
1385
+ end
1386
+
1387
+ # Update properties of this object
1388
+ def update!(**args)
1389
+ @consumer_network = args[:consumer_network] if args.key?(:consumer_network)
1390
+ end
1391
+ end
1392
+
1393
+ # `Endpoint` describes a network endpoint of a service that serves a set of APIs.
1394
+ # It is commonly known as a service endpoint. A service may expose any number
1395
+ # of service endpoints, and all service endpoints share the same service
1396
+ # definition, such as quota limits and monitoring metrics. Example service
1397
+ # configuration: name: library-example.googleapis.com endpoints: # Below entry
1398
+ # makes 'google.example.library.v1.Library' # API be served from endpoint
1399
+ # address library-example.googleapis.com. # It also allows HTTP OPTIONS calls to
1400
+ # be passed to the backend, for # it to decide whether the subsequent cross-
1401
+ # origin request is # allowed to proceed. - name: library-example.googleapis.com
1402
+ # allow_cors: true
1403
+ class Endpoint
1404
+ include Google::Apis::Core::Hashable
1405
+
1406
+ # DEPRECATED: This field is no longer supported. Instead of using aliases,
1407
+ # please specify multiple google.api.Endpoint for each of the intended aliases.
1408
+ # Additional names that this endpoint will be hosted on.
1409
+ # Corresponds to the JSON property `aliases`
1410
+ # @return [Array<String>]
1411
+ attr_accessor :aliases
1412
+
1413
+ # Allowing [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing),
1414
+ # aka cross-domain traffic, would allow the backends served from this endpoint
1415
+ # to receive and respond to HTTP OPTIONS requests. The response will be used by
1416
+ # the browser to determine whether the subsequent cross-origin request is
1417
+ # allowed to proceed.
1418
+ # Corresponds to the JSON property `allowCors`
1419
+ # @return [Boolean]
1420
+ attr_accessor :allow_cors
1421
+ alias_method :allow_cors?, :allow_cors
1422
+
1423
+ # The canonical name of this endpoint.
1424
+ # Corresponds to the JSON property `name`
1425
+ # @return [String]
1426
+ attr_accessor :name
1427
+
1428
+ # The specification of an Internet routable address of API frontend that will
1429
+ # handle requests to this [API Endpoint](https://cloud.google.com/apis/design/
1430
+ # glossary). It should be either a valid IPv4 address or a fully-qualified
1431
+ # domain name. For example, "8.8.8.8" or "myservice.appspot.com".
1432
+ # Corresponds to the JSON property `target`
1433
+ # @return [String]
1434
+ attr_accessor :target
1435
+
1436
+ def initialize(**args)
1437
+ update!(**args)
1438
+ end
1439
+
1440
+ # Update properties of this object
1441
+ def update!(**args)
1442
+ @aliases = args[:aliases] if args.key?(:aliases)
1443
+ @allow_cors = args[:allow_cors] if args.key?(:allow_cors)
1444
+ @name = args[:name] if args.key?(:name)
1445
+ @target = args[:target] if args.key?(:target)
1446
+ end
1447
+ end
1448
+
1449
+ # Enum type definition.
1450
+ class Enum
1451
+ include Google::Apis::Core::Hashable
1452
+
1453
+ # Enum value definitions.
1454
+ # Corresponds to the JSON property `enumvalue`
1455
+ # @return [Array<Google::Apis::ServicenetworkingV1::EnumValue>]
1456
+ attr_accessor :enumvalue
1457
+
1458
+ # Enum type name.
1459
+ # Corresponds to the JSON property `name`
1460
+ # @return [String]
1461
+ attr_accessor :name
1462
+
1463
+ # Protocol buffer options.
1464
+ # Corresponds to the JSON property `options`
1465
+ # @return [Array<Google::Apis::ServicenetworkingV1::Option>]
1466
+ attr_accessor :options
1467
+
1468
+ # `SourceContext` represents information about the source of a protobuf element,
1469
+ # like the file in which it is defined.
1470
+ # Corresponds to the JSON property `sourceContext`
1471
+ # @return [Google::Apis::ServicenetworkingV1::SourceContext]
1472
+ attr_accessor :source_context
1473
+
1474
+ # The source syntax.
1475
+ # Corresponds to the JSON property `syntax`
1476
+ # @return [String]
1477
+ attr_accessor :syntax
1478
+
1479
+ def initialize(**args)
1480
+ update!(**args)
1481
+ end
1482
+
1483
+ # Update properties of this object
1484
+ def update!(**args)
1485
+ @enumvalue = args[:enumvalue] if args.key?(:enumvalue)
1486
+ @name = args[:name] if args.key?(:name)
1487
+ @options = args[:options] if args.key?(:options)
1488
+ @source_context = args[:source_context] if args.key?(:source_context)
1489
+ @syntax = args[:syntax] if args.key?(:syntax)
1490
+ end
1491
+ end
1492
+
1493
+ # Enum value definition.
1494
+ class EnumValue
1495
+ include Google::Apis::Core::Hashable
1496
+
1497
+ # Enum value name.
1498
+ # Corresponds to the JSON property `name`
1499
+ # @return [String]
1500
+ attr_accessor :name
1501
+
1502
+ # Enum value number.
1503
+ # Corresponds to the JSON property `number`
1504
+ # @return [Fixnum]
1505
+ attr_accessor :number
1506
+
1507
+ # Protocol buffer options.
1508
+ # Corresponds to the JSON property `options`
1509
+ # @return [Array<Google::Apis::ServicenetworkingV1::Option>]
1510
+ attr_accessor :options
1511
+
1512
+ def initialize(**args)
1513
+ update!(**args)
1514
+ end
1515
+
1516
+ # Update properties of this object
1517
+ def update!(**args)
1518
+ @name = args[:name] if args.key?(:name)
1519
+ @number = args[:number] if args.key?(:number)
1520
+ @options = args[:options] if args.key?(:options)
1521
+ end
1522
+ end
1523
+
1524
+ # A single field of a message type.
1525
+ class Field
1526
+ include Google::Apis::Core::Hashable
1527
+
1528
+ # The field cardinality.
1529
+ # Corresponds to the JSON property `cardinality`
1530
+ # @return [String]
1531
+ attr_accessor :cardinality
1532
+
1533
+ # The string value of the default value of this field. Proto2 syntax only.
1534
+ # Corresponds to the JSON property `defaultValue`
1535
+ # @return [String]
1536
+ attr_accessor :default_value
1537
+
1538
+ # The field JSON name.
1539
+ # Corresponds to the JSON property `jsonName`
1540
+ # @return [String]
1541
+ attr_accessor :json_name
1542
+
1543
+ # The field type.
1544
+ # Corresponds to the JSON property `kind`
1545
+ # @return [String]
1546
+ attr_accessor :kind
1547
+
1548
+ # The field name.
1549
+ # Corresponds to the JSON property `name`
1550
+ # @return [String]
1551
+ attr_accessor :name
1552
+
1553
+ # The field number.
1554
+ # Corresponds to the JSON property `number`
1555
+ # @return [Fixnum]
1556
+ attr_accessor :number
1557
+
1558
+ # The index of the field type in `Type.oneofs`, for message or enumeration types.
1559
+ # The first type has index 1; zero means the type is not in the list.
1560
+ # Corresponds to the JSON property `oneofIndex`
1561
+ # @return [Fixnum]
1562
+ attr_accessor :oneof_index
1563
+
1564
+ # The protocol buffer options.
1565
+ # Corresponds to the JSON property `options`
1566
+ # @return [Array<Google::Apis::ServicenetworkingV1::Option>]
1567
+ attr_accessor :options
1568
+
1569
+ # Whether to use alternative packed wire representation.
1570
+ # Corresponds to the JSON property `packed`
1571
+ # @return [Boolean]
1572
+ attr_accessor :packed
1573
+ alias_method :packed?, :packed
1574
+
1575
+ # The field type URL, without the scheme, for message or enumeration types.
1576
+ # Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
1577
+ # Corresponds to the JSON property `typeUrl`
1578
+ # @return [String]
1579
+ attr_accessor :type_url
1580
+
1581
+ def initialize(**args)
1582
+ update!(**args)
1583
+ end
1584
+
1585
+ # Update properties of this object
1586
+ def update!(**args)
1587
+ @cardinality = args[:cardinality] if args.key?(:cardinality)
1588
+ @default_value = args[:default_value] if args.key?(:default_value)
1589
+ @json_name = args[:json_name] if args.key?(:json_name)
1590
+ @kind = args[:kind] if args.key?(:kind)
1591
+ @name = args[:name] if args.key?(:name)
1592
+ @number = args[:number] if args.key?(:number)
1593
+ @oneof_index = args[:oneof_index] if args.key?(:oneof_index)
1594
+ @options = args[:options] if args.key?(:options)
1595
+ @packed = args[:packed] if args.key?(:packed)
1596
+ @type_url = args[:type_url] if args.key?(:type_url)
1597
+ end
1598
+ end
1599
+
1600
+ # Allocated IP address ranges for this private service access connection.
1601
+ class GoogleCloudServicenetworkingV1ConsumerConfigReservedRange
1602
+ include Google::Apis::Core::Hashable
1603
+
1604
+ # The starting address of the reserved range. The address must be a valid IPv4
1605
+ # address in the x.x.x.x format. This value combined with the IP prefix length
1606
+ # is the CIDR range for the reserved range.
1607
+ # Corresponds to the JSON property `address`
1608
+ # @return [String]
1609
+ attr_accessor :address
1610
+
1611
+ # The prefix length of the reserved range.
1612
+ # Corresponds to the JSON property `ipPrefixLength`
1613
+ # @return [Fixnum]
1614
+ attr_accessor :ip_prefix_length
1615
+
1616
+ # The name of the reserved range.
1617
+ # Corresponds to the JSON property `name`
1618
+ # @return [String]
1619
+ attr_accessor :name
1620
+
1621
+ def initialize(**args)
1622
+ update!(**args)
1623
+ end
1624
+
1625
+ # Update properties of this object
1626
+ def update!(**args)
1627
+ @address = args[:address] if args.key?(:address)
1628
+ @ip_prefix_length = args[:ip_prefix_length] if args.key?(:ip_prefix_length)
1629
+ @name = args[:name] if args.key?(:name)
1630
+ end
1631
+ end
1632
+
1633
+ # Represents a subnet that was created or discovered by a private access
1634
+ # management service.
1635
+ class GoogleCloudServicenetworkingV1betaSubnetwork
1636
+ include Google::Apis::Core::Hashable
1637
+
1638
+ # Subnetwork CIDR range in `10.x.x.x/y` format.
1639
+ # Corresponds to the JSON property `ipCidrRange`
1640
+ # @return [String]
1641
+ attr_accessor :ip_cidr_range
1642
+
1643
+ # Subnetwork name. See https://cloud.google.com/compute/docs/vpc/
1644
+ # Corresponds to the JSON property `name`
1645
+ # @return [String]
1646
+ attr_accessor :name
1647
+
1648
+ # In the Shared VPC host project, the VPC network that's peered with the
1649
+ # consumer network. For example: `projects/1234321/global/networks/host-network`
1650
+ # Corresponds to the JSON property `network`
1651
+ # @return [String]
1652
+ attr_accessor :network
1653
+
1654
+ # This is a discovered subnet that is not within the current consumer allocated
1655
+ # ranges.
1656
+ # Corresponds to the JSON property `outsideAllocation`
1657
+ # @return [Boolean]
1658
+ attr_accessor :outside_allocation
1659
+ alias_method :outside_allocation?, :outside_allocation
1660
+
1661
+ def initialize(**args)
1662
+ update!(**args)
1663
+ end
1664
+
1665
+ # Update properties of this object
1666
+ def update!(**args)
1667
+ @ip_cidr_range = args[:ip_cidr_range] if args.key?(:ip_cidr_range)
1668
+ @name = args[:name] if args.key?(:name)
1669
+ @network = args[:network] if args.key?(:network)
1670
+ @outside_allocation = args[:outside_allocation] if args.key?(:outside_allocation)
1671
+ end
1672
+ end
1673
+
1674
+ # Defines the HTTP configuration for an API service. It contains a list of
1675
+ # HttpRule, each specifying the mapping of an RPC method to one or more HTTP
1676
+ # REST API methods.
1677
+ class Http
1678
+ include Google::Apis::Core::Hashable
1679
+
1680
+ # When set to true, URL path parameters will be fully URI-decoded except in
1681
+ # cases of single segment matches in reserved expansion, where "%2F" will be
1682
+ # left encoded. The default behavior is to not decode RFC 6570 reserved
1683
+ # characters in multi segment matches.
1684
+ # Corresponds to the JSON property `fullyDecodeReservedExpansion`
1685
+ # @return [Boolean]
1686
+ attr_accessor :fully_decode_reserved_expansion
1687
+ alias_method :fully_decode_reserved_expansion?, :fully_decode_reserved_expansion
1688
+
1689
+ # A list of HTTP configuration rules that apply to individual API methods. **
1690
+ # NOTE:** All service configuration rules follow "last one wins" order.
1691
+ # Corresponds to the JSON property `rules`
1692
+ # @return [Array<Google::Apis::ServicenetworkingV1::HttpRule>]
1693
+ attr_accessor :rules
1694
+
1695
+ def initialize(**args)
1696
+ update!(**args)
1697
+ end
1698
+
1699
+ # Update properties of this object
1700
+ def update!(**args)
1701
+ @fully_decode_reserved_expansion = args[:fully_decode_reserved_expansion] if args.key?(:fully_decode_reserved_expansion)
1702
+ @rules = args[:rules] if args.key?(:rules)
1703
+ end
1704
+ end
1705
+
1706
+ # # gRPC Transcoding gRPC Transcoding is a feature for mapping between a gRPC
1707
+ # method and one or more HTTP REST endpoints. It allows developers to build a
1708
+ # single API service that supports both gRPC APIs and REST APIs. Many systems,
1709
+ # including [Google APIs](https://github.com/googleapis/googleapis), [Cloud
1710
+ # Endpoints](https://cloud.google.com/endpoints), [gRPC Gateway](https://github.
1711
+ # com/grpc-ecosystem/grpc-gateway), and [Envoy](https://github.com/envoyproxy/
1712
+ # envoy) proxy support this feature and use it for large scale production
1713
+ # services. `HttpRule` defines the schema of the gRPC/REST mapping. The mapping
1714
+ # specifies how different portions of the gRPC request message are mapped to the
1715
+ # URL path, URL query parameters, and HTTP request body. It also controls how
1716
+ # the gRPC response message is mapped to the HTTP response body. `HttpRule` is
1717
+ # typically specified as an `google.api.http` annotation on the gRPC method.
1718
+ # Each mapping specifies a URL path template and an HTTP method. The path
1719
+ # template may refer to one or more fields in the gRPC request message, as long
1720
+ # as each field is a non-repeated field with a primitive (non-message) type. The
1721
+ # path template controls how fields of the request message are mapped to the URL
1722
+ # path. Example: service Messaging ` rpc GetMessage(GetMessageRequest) returns (
1723
+ # Message) ` option (google.api.http) = ` get: "/v1/`name=messages/*`" `; ` `
1724
+ # message GetMessageRequest ` string name = 1; // Mapped to URL path. ` message
1725
+ # Message ` string text = 1; // The resource content. ` This enables an HTTP
1726
+ # REST to gRPC mapping as below: HTTP | gRPC -----|----- `GET /v1/messages/
1727
+ # 123456` | `GetMessage(name: "messages/123456")` Any fields in the request
1728
+ # message which are not bound by the path template automatically become HTTP
1729
+ # query parameters if there is no HTTP request body. For example: service
1730
+ # Messaging ` rpc GetMessage(GetMessageRequest) returns (Message) ` option (
1731
+ # google.api.http) = ` get:"/v1/messages/`message_id`" `; ` ` message
1732
+ # GetMessageRequest ` message SubMessage ` string subfield = 1; ` string
1733
+ # message_id = 1; // Mapped to URL path. int64 revision = 2; // Mapped to URL
1734
+ # query parameter `revision`. SubMessage sub = 3; // Mapped to URL query
1735
+ # parameter `sub.subfield`. ` This enables a HTTP JSON to RPC mapping as below:
1736
+ # HTTP | gRPC -----|----- `GET /v1/messages/123456?revision=2&sub.subfield=foo` |
1737
+ # `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: "foo"))
1738
+ # ` Note that fields which are mapped to URL query parameters must have a
1739
+ # primitive type or a repeated primitive type or a non-repeated message type. In
1740
+ # the case of a repeated type, the parameter can be repeated in the URL as `...?
1741
+ # param=A&param=B`. In the case of a message type, each field of the message is
1742
+ # mapped to a separate parameter, such as `...?foo.a=A&foo.b=B&foo.c=C`. For
1743
+ # HTTP methods that allow a request body, the `body` field specifies the mapping.
1744
+ # Consider a REST update method on the message resource collection: service
1745
+ # Messaging ` rpc UpdateMessage(UpdateMessageRequest) returns (Message) ` option
1746
+ # (google.api.http) = ` patch: "/v1/messages/`message_id`" body: "message" `; ` `
1747
+ # message UpdateMessageRequest ` string message_id = 1; // mapped to the URL
1748
+ # Message message = 2; // mapped to the body ` The following HTTP JSON to RPC
1749
+ # mapping is enabled, where the representation of the JSON in the request body
1750
+ # is determined by protos JSON encoding: HTTP | gRPC -----|----- `PATCH /v1/
1751
+ # messages/123456 ` "text": "Hi!" `` | `UpdateMessage(message_id: "123456"
1752
+ # message ` text: "Hi!" `)` The special name `*` can be used in the body mapping
1753
+ # to define that every field not bound by the path template should be mapped to
1754
+ # the request body. This enables the following alternative definition of the
1755
+ # update method: service Messaging ` rpc UpdateMessage(Message) returns (Message)
1756
+ # ` option (google.api.http) = ` patch: "/v1/messages/`message_id`" body: "*" `;
1757
+ # ` ` message Message ` string message_id = 1; string text = 2; ` The following
1758
+ # HTTP JSON to RPC mapping is enabled: HTTP | gRPC -----|----- `PATCH /v1/
1759
+ # messages/123456 ` "text": "Hi!" `` | `UpdateMessage(message_id: "123456" text:
1760
+ # "Hi!")` Note that when using `*` in the body mapping, it is not possible to
1761
+ # have HTTP parameters, as all fields not bound by the path end in the body.
1762
+ # This makes this option more rarely used in practice when defining REST APIs.
1763
+ # The common usage of `*` is in custom methods which don't use the URL at all
1764
+ # for transferring data. It is possible to define multiple HTTP methods for one
1765
+ # RPC by using the `additional_bindings` option. Example: service Messaging `
1766
+ # rpc GetMessage(GetMessageRequest) returns (Message) ` option (google.api.http)
1767
+ # = ` get: "/v1/messages/`message_id`" additional_bindings ` get: "/v1/users/`
1768
+ # user_id`/messages/`message_id`" ` `; ` ` message GetMessageRequest ` string
1769
+ # message_id = 1; string user_id = 2; ` This enables the following two
1770
+ # alternative HTTP JSON to RPC mappings: HTTP | gRPC -----|----- `GET /v1/
1771
+ # messages/123456` | `GetMessage(message_id: "123456")` `GET /v1/users/me/
1772
+ # messages/123456` | `GetMessage(user_id: "me" message_id: "123456")` ## Rules
1773
+ # for HTTP mapping 1. Leaf request fields (recursive expansion nested messages
1774
+ # in the request message) are classified into three categories: - Fields
1775
+ # referred by the path template. They are passed via the URL path. - Fields
1776
+ # referred by the HttpRule.body. They are passed via the HTTP request body. -
1777
+ # All other fields are passed via the URL query parameters, and the parameter
1778
+ # name is the field path in the request message. A repeated field can be
1779
+ # represented as multiple query parameters under the same name. 2. If HttpRule.
1780
+ # body is "*", there is no URL query parameter, all fields are passed via URL
1781
+ # path and HTTP request body. 3. If HttpRule.body is omitted, there is no HTTP
1782
+ # request body, all fields are passed via URL path and URL query parameters. ###
1783
+ # Path template syntax Template = "/" Segments [ Verb ] ; Segments = Segment ` "/
1784
+ # " Segment ` ; Segment = "*" | "**" | LITERAL | Variable ; Variable = "`"
1785
+ # FieldPath [ "=" Segments ] "`" ; FieldPath = IDENT ` "." IDENT ` ; Verb = ":"
1786
+ # LITERAL ; The syntax `*` matches a single URL path segment. The syntax `**`
1787
+ # matches zero or more URL path segments, which must be the last part of the URL
1788
+ # path except the `Verb`. The syntax `Variable` matches part of the URL path as
1789
+ # specified by its template. A variable template must not contain other
1790
+ # variables. If a variable matches a single path segment, its template may be
1791
+ # omitted, e.g. ``var`` is equivalent to ``var=*``. The syntax `LITERAL` matches
1792
+ # literal text in the URL path. If the `LITERAL` contains any reserved character,
1793
+ # such characters should be percent-encoded before the matching. If a variable
1794
+ # contains exactly one path segment, such as `"`var`"` or `"`var=*`"`, when such
1795
+ # a variable is expanded into a URL path on the client side, all characters
1796
+ # except `[-_.~0-9a-zA-Z]` are percent-encoded. The server side does the reverse
1797
+ # decoding. Such variables show up in the [Discovery Document](https://
1798
+ # developers.google.com/discovery/v1/reference/apis) as ``var``. If a variable
1799
+ # contains multiple path segments, such as `"`var=foo/*`"` or `"`var=**`"`, when
1800
+ # such a variable is expanded into a URL path on the client side, all characters
1801
+ # except `[-_.~/0-9a-zA-Z]` are percent-encoded. The server side does the
1802
+ # reverse decoding, except "%2F" and "%2f" are left unchanged. Such variables
1803
+ # show up in the [Discovery Document](https://developers.google.com/discovery/v1/
1804
+ # reference/apis) as ``+var``. ## Using gRPC API Service Configuration gRPC API
1805
+ # Service Configuration (service config) is a configuration language for
1806
+ # configuring a gRPC service to become a user-facing product. The service config
1807
+ # is simply the YAML representation of the `google.api.Service` proto message.
1808
+ # As an alternative to annotating your proto file, you can configure gRPC
1809
+ # transcoding in your service config YAML files. You do this by specifying a `
1810
+ # HttpRule` that maps the gRPC method to a REST endpoint, achieving the same
1811
+ # effect as the proto annotation. This can be particularly useful if you have a
1812
+ # proto that is reused in multiple services. Note that any transcoding specified
1813
+ # in the service config will override any matching transcoding configuration in
1814
+ # the proto. Example: http: rules: # Selects a gRPC method and applies HttpRule
1815
+ # to it. - selector: example.v1.Messaging.GetMessage get: /v1/messages/`
1816
+ # message_id`/`sub.subfield` ## Special notes When gRPC Transcoding is used to
1817
+ # map a gRPC to JSON REST endpoints, the proto to JSON conversion must follow
1818
+ # the [proto3 specification](https://developers.google.com/protocol-buffers/docs/
1819
+ # proto3#json). While the single segment variable follows the semantics of [RFC
1820
+ # 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
1821
+ # Expansion, the multi segment variable **does not** follow RFC 6570 Section 3.2.
1822
+ # 3 Reserved Expansion. The reason is that the Reserved Expansion does not
1823
+ # expand special characters like `?` and `#`, which would lead to invalid URLs.
1824
+ # As the result, gRPC Transcoding uses a custom encoding for multi segment
1825
+ # variables. The path variables **must not** refer to any repeated or mapped
1826
+ # field, because client libraries are not capable of handling such variable
1827
+ # expansion. The path variables **must not** capture the leading "/" character.
1828
+ # The reason is that the most common use case "`var`" does not capture the
1829
+ # leading "/" character. For consistency, all path variables must share the same
1830
+ # behavior. Repeated message fields must not be mapped to URL query parameters,
1831
+ # because no client library can support such complicated mapping. If an API
1832
+ # needs to use a JSON array for request or response body, it can map the request
1833
+ # or response body to a repeated field. However, some gRPC Transcoding
1834
+ # implementations may not support this feature.
1835
+ class HttpRule
1836
+ include Google::Apis::Core::Hashable
1837
+
1838
+ # Additional HTTP bindings for the selector. Nested bindings must not contain an
1839
+ # `additional_bindings` field themselves (that is, the nesting may only be one
1840
+ # level deep).
1841
+ # Corresponds to the JSON property `additionalBindings`
1842
+ # @return [Array<Google::Apis::ServicenetworkingV1::HttpRule>]
1843
+ attr_accessor :additional_bindings
1844
+
1845
+ # The name of the request field whose value is mapped to the HTTP request body,
1846
+ # or `*` for mapping all request fields not captured by the path pattern to the
1847
+ # HTTP body, or omitted for not having any HTTP request body. NOTE: the referred
1848
+ # field must be present at the top-level of the request message type.
1849
+ # Corresponds to the JSON property `body`
1850
+ # @return [String]
1851
+ attr_accessor :body
1852
+
1853
+ # A custom pattern is used for defining custom HTTP verb.
1854
+ # Corresponds to the JSON property `custom`
1855
+ # @return [Google::Apis::ServicenetworkingV1::CustomHttpPattern]
1856
+ attr_accessor :custom
1857
+
1858
+ # Maps to HTTP DELETE. Used for deleting a resource.
1859
+ # Corresponds to the JSON property `delete`
1860
+ # @return [String]
1861
+ attr_accessor :delete
1862
+
1863
+ # Maps to HTTP GET. Used for listing and getting information about resources.
1864
+ # Corresponds to the JSON property `get`
1865
+ # @return [String]
1866
+ attr_accessor :get
1867
+
1868
+ # Maps to HTTP PATCH. Used for updating a resource.
1869
+ # Corresponds to the JSON property `patch`
1870
+ # @return [String]
1871
+ attr_accessor :patch
1872
+
1873
+ # Maps to HTTP POST. Used for creating a resource or performing an action.
1874
+ # Corresponds to the JSON property `post`
1875
+ # @return [String]
1876
+ attr_accessor :post
1877
+
1878
+ # Maps to HTTP PUT. Used for replacing a resource.
1879
+ # Corresponds to the JSON property `put`
1880
+ # @return [String]
1881
+ attr_accessor :put
1882
+
1883
+ # Optional. The name of the response field whose value is mapped to the HTTP
1884
+ # response body. When omitted, the entire response message will be used as the
1885
+ # HTTP response body. NOTE: The referred field must be present at the top-level
1886
+ # of the response message type.
1887
+ # Corresponds to the JSON property `responseBody`
1888
+ # @return [String]
1889
+ attr_accessor :response_body
1890
+
1891
+ # Selects a method to which this rule applies. Refer to selector for syntax
1892
+ # details.
1893
+ # Corresponds to the JSON property `selector`
1894
+ # @return [String]
1895
+ attr_accessor :selector
1896
+
1897
+ def initialize(**args)
1898
+ update!(**args)
1899
+ end
1900
+
1901
+ # Update properties of this object
1902
+ def update!(**args)
1903
+ @additional_bindings = args[:additional_bindings] if args.key?(:additional_bindings)
1904
+ @body = args[:body] if args.key?(:body)
1905
+ @custom = args[:custom] if args.key?(:custom)
1906
+ @delete = args[:delete] if args.key?(:delete)
1907
+ @get = args[:get] if args.key?(:get)
1908
+ @patch = args[:patch] if args.key?(:patch)
1909
+ @post = args[:post] if args.key?(:post)
1910
+ @put = args[:put] if args.key?(:put)
1911
+ @response_body = args[:response_body] if args.key?(:response_body)
1912
+ @selector = args[:selector] if args.key?(:selector)
1913
+ end
1914
+ end
1915
+
1916
+ # Specifies a location to extract JWT from an API request.
1917
+ class JwtLocation
1918
+ include Google::Apis::Core::Hashable
1919
+
1920
+ # Specifies HTTP header name to extract JWT token.
1921
+ # Corresponds to the JSON property `header`
1922
+ # @return [String]
1923
+ attr_accessor :header
1924
+
1925
+ # Specifies URL query parameter name to extract JWT token.
1926
+ # Corresponds to the JSON property `query`
1927
+ # @return [String]
1928
+ attr_accessor :query
1929
+
1930
+ # The value prefix. The value format is "value_prefix`token`" Only applies to "
1931
+ # in" header type. Must be empty for "in" query type. If not empty, the header
1932
+ # value has to match (case sensitive) this prefix. If not matched, JWT will not
1933
+ # be extracted. If matched, JWT will be extracted after the prefix is removed.
1934
+ # For example, for "Authorization: Bearer `JWT`", value_prefix="Bearer " with a
1935
+ # space at the end.
1936
+ # Corresponds to the JSON property `valuePrefix`
1937
+ # @return [String]
1938
+ attr_accessor :value_prefix
1939
+
1940
+ def initialize(**args)
1941
+ update!(**args)
1942
+ end
1943
+
1944
+ # Update properties of this object
1945
+ def update!(**args)
1946
+ @header = args[:header] if args.key?(:header)
1947
+ @query = args[:query] if args.key?(:query)
1948
+ @value_prefix = args[:value_prefix] if args.key?(:value_prefix)
1949
+ end
1950
+ end
1951
+
1952
+ # A description of a label.
1953
+ class LabelDescriptor
1954
+ include Google::Apis::Core::Hashable
1955
+
1956
+ # A human-readable description for the label.
1957
+ # Corresponds to the JSON property `description`
1958
+ # @return [String]
1959
+ attr_accessor :description
1960
+
1961
+ # The label key.
1962
+ # Corresponds to the JSON property `key`
1963
+ # @return [String]
1964
+ attr_accessor :key
1965
+
1966
+ # The type of data that can be assigned to the label.
1967
+ # Corresponds to the JSON property `valueType`
1968
+ # @return [String]
1969
+ attr_accessor :value_type
1970
+
1971
+ def initialize(**args)
1972
+ update!(**args)
1973
+ end
1974
+
1975
+ # Update properties of this object
1976
+ def update!(**args)
1977
+ @description = args[:description] if args.key?(:description)
1978
+ @key = args[:key] if args.key?(:key)
1979
+ @value_type = args[:value_type] if args.key?(:value_type)
1980
+ end
1981
+ end
1982
+
1983
+ # ListConnectionsResponse is the response to list peering states for the given
1984
+ # service and consumer project.
1985
+ class ListConnectionsResponse
1986
+ include Google::Apis::Core::Hashable
1987
+
1988
+ # The list of Connections.
1989
+ # Corresponds to the JSON property `connections`
1990
+ # @return [Array<Google::Apis::ServicenetworkingV1::Connection>]
1991
+ attr_accessor :connections
1992
+
1993
+ def initialize(**args)
1994
+ update!(**args)
1995
+ end
1996
+
1997
+ # Update properties of this object
1998
+ def update!(**args)
1999
+ @connections = args[:connections] if args.key?(:connections)
2000
+ end
2001
+ end
2002
+
2003
+ # The response message for Operations.ListOperations.
2004
+ class ListOperationsResponse
2005
+ include Google::Apis::Core::Hashable
2006
+
2007
+ # The standard List next-page token.
2008
+ # Corresponds to the JSON property `nextPageToken`
2009
+ # @return [String]
2010
+ attr_accessor :next_page_token
2011
+
2012
+ # A list of operations that matches the specified filter in the request.
2013
+ # Corresponds to the JSON property `operations`
2014
+ # @return [Array<Google::Apis::ServicenetworkingV1::Operation>]
2015
+ attr_accessor :operations
2016
+
2017
+ def initialize(**args)
2018
+ update!(**args)
2019
+ end
2020
+
2021
+ # Update properties of this object
2022
+ def update!(**args)
2023
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
2024
+ @operations = args[:operations] if args.key?(:operations)
2025
+ end
2026
+ end
2027
+
2028
+ # Response to list peered DNS domains for a given connection.
2029
+ class ListPeeredDnsDomainsResponse
2030
+ include Google::Apis::Core::Hashable
2031
+
2032
+ # The list of peered DNS domains.
2033
+ # Corresponds to the JSON property `peeredDnsDomains`
2034
+ # @return [Array<Google::Apis::ServicenetworkingV1::PeeredDnsDomain>]
2035
+ attr_accessor :peered_dns_domains
2036
+
2037
+ def initialize(**args)
2038
+ update!(**args)
2039
+ end
2040
+
2041
+ # Update properties of this object
2042
+ def update!(**args)
2043
+ @peered_dns_domains = args[:peered_dns_domains] if args.key?(:peered_dns_domains)
2044
+ end
2045
+ end
2046
+
2047
+ # A description of a log type. Example in YAML format: - name: library.
2048
+ # googleapis.com/activity_history description: The history of borrowing and
2049
+ # returning library items. display_name: Activity labels: - key: /customer_id
2050
+ # description: Identifier of a library customer
2051
+ class LogDescriptor
2052
+ include Google::Apis::Core::Hashable
2053
+
2054
+ # A human-readable description of this log. This information appears in the
2055
+ # documentation and can contain details.
2056
+ # Corresponds to the JSON property `description`
2057
+ # @return [String]
2058
+ attr_accessor :description
2059
+
2060
+ # The human-readable name for this log. This information appears on the user
2061
+ # interface and should be concise.
2062
+ # Corresponds to the JSON property `displayName`
2063
+ # @return [String]
2064
+ attr_accessor :display_name
2065
+
2066
+ # The set of labels that are available to describe a specific log entry. Runtime
2067
+ # requests that contain labels not specified here are considered invalid.
2068
+ # Corresponds to the JSON property `labels`
2069
+ # @return [Array<Google::Apis::ServicenetworkingV1::LabelDescriptor>]
2070
+ attr_accessor :labels
2071
+
2072
+ # The name of the log. It must be less than 512 characters long and can include
2073
+ # the following characters: upper- and lower-case alphanumeric characters [A-Za-
2074
+ # z0-9], and punctuation characters including slash, underscore, hyphen, period [
2075
+ # /_-.].
2076
+ # Corresponds to the JSON property `name`
2077
+ # @return [String]
2078
+ attr_accessor :name
2079
+
2080
+ def initialize(**args)
2081
+ update!(**args)
2082
+ end
2083
+
2084
+ # Update properties of this object
2085
+ def update!(**args)
2086
+ @description = args[:description] if args.key?(:description)
2087
+ @display_name = args[:display_name] if args.key?(:display_name)
2088
+ @labels = args[:labels] if args.key?(:labels)
2089
+ @name = args[:name] if args.key?(:name)
2090
+ end
2091
+ end
2092
+
2093
+ # Logging configuration of the service. The following example shows how to
2094
+ # configure logs to be sent to the producer and consumer projects. In the
2095
+ # example, the `activity_history` log is sent to both the producer and consumer
2096
+ # projects, whereas the `purchase_history` log is only sent to the producer
2097
+ # project. monitored_resources: - type: library.googleapis.com/branch labels: -
2098
+ # key: /city description: The city where the library branch is located in. - key:
2099
+ # /name description: The name of the branch. logs: - name: activity_history
2100
+ # labels: - key: /customer_id - name: purchase_history logging:
2101
+ # producer_destinations: - monitored_resource: library.googleapis.com/branch
2102
+ # logs: - activity_history - purchase_history consumer_destinations: -
2103
+ # monitored_resource: library.googleapis.com/branch logs: - activity_history
2104
+ class Logging
2105
+ include Google::Apis::Core::Hashable
2106
+
2107
+ # Logging configurations for sending logs to the consumer project. There can be
2108
+ # multiple consumer destinations, each one must have a different monitored
2109
+ # resource type. A log can be used in at most one consumer destination.
2110
+ # Corresponds to the JSON property `consumerDestinations`
2111
+ # @return [Array<Google::Apis::ServicenetworkingV1::LoggingDestination>]
2112
+ attr_accessor :consumer_destinations
2113
+
2114
+ # Logging configurations for sending logs to the producer project. There can be
2115
+ # multiple producer destinations, each one must have a different monitored
2116
+ # resource type. A log can be used in at most one producer destination.
2117
+ # Corresponds to the JSON property `producerDestinations`
2118
+ # @return [Array<Google::Apis::ServicenetworkingV1::LoggingDestination>]
2119
+ attr_accessor :producer_destinations
2120
+
2121
+ def initialize(**args)
2122
+ update!(**args)
2123
+ end
2124
+
2125
+ # Update properties of this object
2126
+ def update!(**args)
2127
+ @consumer_destinations = args[:consumer_destinations] if args.key?(:consumer_destinations)
2128
+ @producer_destinations = args[:producer_destinations] if args.key?(:producer_destinations)
2129
+ end
2130
+ end
2131
+
2132
+ # Configuration of a specific logging destination (the producer project or the
2133
+ # consumer project).
2134
+ class LoggingDestination
2135
+ include Google::Apis::Core::Hashable
2136
+
2137
+ # Names of the logs to be sent to this destination. Each name must be defined in
2138
+ # the Service.logs section. If the log name is not a domain scoped name, it will
2139
+ # be automatically prefixed with the service name followed by "/".
2140
+ # Corresponds to the JSON property `logs`
2141
+ # @return [Array<String>]
2142
+ attr_accessor :logs
2143
+
2144
+ # The monitored resource type. The type must be defined in the Service.
2145
+ # monitored_resources section.
2146
+ # Corresponds to the JSON property `monitoredResource`
2147
+ # @return [String]
2148
+ attr_accessor :monitored_resource
2149
+
2150
+ def initialize(**args)
2151
+ update!(**args)
2152
+ end
2153
+
2154
+ # Update properties of this object
2155
+ def update!(**args)
2156
+ @logs = args[:logs] if args.key?(:logs)
2157
+ @monitored_resource = args[:monitored_resource] if args.key?(:monitored_resource)
2158
+ end
2159
+ end
2160
+
2161
+ # Method represents a method of an API interface.
2162
+ class MethodProp
2163
+ include Google::Apis::Core::Hashable
2164
+
2165
+ # The simple name of this method.
2166
+ # Corresponds to the JSON property `name`
2167
+ # @return [String]
2168
+ attr_accessor :name
2169
+
2170
+ # Any metadata attached to the method.
2171
+ # Corresponds to the JSON property `options`
2172
+ # @return [Array<Google::Apis::ServicenetworkingV1::Option>]
2173
+ attr_accessor :options
2174
+
2175
+ # If true, the request is streamed.
2176
+ # Corresponds to the JSON property `requestStreaming`
2177
+ # @return [Boolean]
2178
+ attr_accessor :request_streaming
2179
+ alias_method :request_streaming?, :request_streaming
2180
+
2181
+ # A URL of the input message type.
2182
+ # Corresponds to the JSON property `requestTypeUrl`
2183
+ # @return [String]
2184
+ attr_accessor :request_type_url
2185
+
2186
+ # If true, the response is streamed.
2187
+ # Corresponds to the JSON property `responseStreaming`
2188
+ # @return [Boolean]
2189
+ attr_accessor :response_streaming
2190
+ alias_method :response_streaming?, :response_streaming
2191
+
2192
+ # The URL of the output message type.
2193
+ # Corresponds to the JSON property `responseTypeUrl`
2194
+ # @return [String]
2195
+ attr_accessor :response_type_url
2196
+
2197
+ # The source syntax of this method.
2198
+ # Corresponds to the JSON property `syntax`
2199
+ # @return [String]
2200
+ attr_accessor :syntax
2201
+
2202
+ def initialize(**args)
2203
+ update!(**args)
2204
+ end
2205
+
2206
+ # Update properties of this object
2207
+ def update!(**args)
2208
+ @name = args[:name] if args.key?(:name)
2209
+ @options = args[:options] if args.key?(:options)
2210
+ @request_streaming = args[:request_streaming] if args.key?(:request_streaming)
2211
+ @request_type_url = args[:request_type_url] if args.key?(:request_type_url)
2212
+ @response_streaming = args[:response_streaming] if args.key?(:response_streaming)
2213
+ @response_type_url = args[:response_type_url] if args.key?(:response_type_url)
2214
+ @syntax = args[:syntax] if args.key?(:syntax)
2215
+ end
2216
+ end
2217
+
2218
+ # Defines a metric type and its schema. Once a metric descriptor is created,
2219
+ # deleting or altering it stops data collection and makes the metric type's
2220
+ # existing data unusable.
2221
+ class MetricDescriptor
2222
+ include Google::Apis::Core::Hashable
2223
+
2224
+ # A detailed description of the metric, which can be used in documentation.
2225
+ # Corresponds to the JSON property `description`
2226
+ # @return [String]
2227
+ attr_accessor :description
2228
+
2229
+ # A concise name for the metric, which can be displayed in user interfaces. Use
2230
+ # sentence case without an ending period, for example "Request count". This
2231
+ # field is optional but it is recommended to be set for any metrics associated
2232
+ # with user-visible concepts, such as Quota.
2233
+ # Corresponds to the JSON property `displayName`
2234
+ # @return [String]
2235
+ attr_accessor :display_name
2236
+
2237
+ # The set of labels that can be used to describe a specific instance of this
2238
+ # metric type. For example, the `appengine.googleapis.com/http/server/
2239
+ # response_latencies` metric type has a label for the HTTP response code, `
2240
+ # response_code`, so you can look at latencies for successful responses or just
2241
+ # for responses that failed.
2242
+ # Corresponds to the JSON property `labels`
2243
+ # @return [Array<Google::Apis::ServicenetworkingV1::LabelDescriptor>]
2244
+ attr_accessor :labels
2245
+
2246
+ # Optional. The launch stage of the metric definition.
2247
+ # Corresponds to the JSON property `launchStage`
2248
+ # @return [String]
2249
+ attr_accessor :launch_stage
2250
+
2251
+ # Additional annotations that can be used to guide the usage of a metric.
2252
+ # Corresponds to the JSON property `metadata`
2253
+ # @return [Google::Apis::ServicenetworkingV1::MetricDescriptorMetadata]
2254
+ attr_accessor :metadata
2255
+
2256
+ # Whether the metric records instantaneous values, changes to a value, etc. Some
2257
+ # combinations of `metric_kind` and `value_type` might not be supported.
2258
+ # Corresponds to the JSON property `metricKind`
2259
+ # @return [String]
2260
+ attr_accessor :metric_kind
2261
+
2262
+ # Read-only. If present, then a time series, which is identified partially by a
2263
+ # metric type and a MonitoredResourceDescriptor, that is associated with this
2264
+ # metric type can only be associated with one of the monitored resource types
2265
+ # listed here.
2266
+ # Corresponds to the JSON property `monitoredResourceTypes`
2267
+ # @return [Array<String>]
2268
+ attr_accessor :monitored_resource_types
2269
+
2270
+ # The resource name of the metric descriptor.
2271
+ # Corresponds to the JSON property `name`
2272
+ # @return [String]
2273
+ attr_accessor :name
2274
+
2275
+ # The metric type, including its DNS name prefix. The type is not URL-encoded.
2276
+ # All user-defined metric types have the DNS name `custom.googleapis.com` or `
2277
+ # external.googleapis.com`. Metric types should use a natural hierarchical
2278
+ # grouping. For example: "custom.googleapis.com/invoice/paid/amount" "external.
2279
+ # googleapis.com/prometheus/up" "appengine.googleapis.com/http/server/
2280
+ # response_latencies"
2281
+ # Corresponds to the JSON property `type`
2282
+ # @return [String]
2283
+ attr_accessor :type
2284
+
2285
+ # The units in which the metric value is reported. It is only applicable if the `
2286
+ # value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the
2287
+ # representation of the stored metric values. Different systems may scale the
2288
+ # values to be more easily displayed (so a value of `0.02KBy` _might_ be
2289
+ # displayed as `20By`, and a value of `3523KBy` _might_ be displayed as `3.5MBy`)
2290
+ # . However, if the `unit` is `KBy`, then the value of the metric is always in
2291
+ # thousands of bytes, no matter how it may be displayed.. If you want a custom
2292
+ # metric to record the exact number of CPU-seconds used by a job, you can create
2293
+ # an `INT64 CUMULATIVE` metric whose `unit` is `s`CPU`` (or equivalently `1s`CPU`
2294
+ # ` or just `s`). If the job uses 12,005 CPU-seconds, then the value is written
2295
+ # as `12005`. Alternatively, if you want a custom metric to record data in a
2296
+ # more granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
2297
+ # `ks`CPU``, and then write the value `12.005` (which is `12005/1000`), or use `
2298
+ # Kis`CPU`` and write `11.723` (which is `12005/1024`). The supported units are
2299
+ # a subset of [The Unified Code for Units of Measure](http://unitsofmeasure.org/
2300
+ # ucum.html) standard: **Basic units (UNIT)** * `bit` bit * `By` byte * `s`
2301
+ # second * `min` minute * `h` hour * `d` day * `1` dimensionless **Prefixes (
2302
+ # PREFIX)** * `k` kilo (10^3) * `M` mega (10^6) * `G` giga (10^9) * `T` tera (10^
2303
+ # 12) * `P` peta (10^15) * `E` exa (10^18) * `Z` zetta (10^21) * `Y` yotta (10^
2304
+ # 24) * `m` milli (10^-3) * `u` micro (10^-6) * `n` nano (10^-9) * `p` pico (10^-
2305
+ # 12) * `f` femto (10^-15) * `a` atto (10^-18) * `z` zepto (10^-21) * `y` yocto (
2306
+ # 10^-24) * `Ki` kibi (2^10) * `Mi` mebi (2^20) * `Gi` gibi (2^30) * `Ti` tebi (
2307
+ # 2^40) * `Pi` pebi (2^50) **Grammar** The grammar also includes these
2308
+ # connectors: * `/` division or ratio (as an infix operator). For examples, `kBy/
2309
+ # `email`` or `MiBy/10ms` (although you should almost never have `/s` in a
2310
+ # metric `unit`; rates should always be computed at query time from the
2311
+ # underlying cumulative or delta value). * `.` multiplication or composition (as
2312
+ # an infix operator). For examples, `GBy.d` or `k`watt`.h`. The grammar for a
2313
+ # unit is as follows: Expression = Component ` "." Component ` ` "/" Component `
2314
+ # ; Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ] | Annotation | "1" ;
2315
+ # Annotation = "`" NAME "`" ; Notes: * `Annotation` is just a comment if it
2316
+ # follows a `UNIT`. If the annotation is used alone, then the unit is equivalent
2317
+ # to `1`. For examples, ``request`/s == 1/s`, `By`transmitted`/s == By/s`. * `
2318
+ # NAME` is a sequence of non-blank printable ASCII characters not containing ```
2319
+ # or ```. * `1` represents a unitary [dimensionless unit](https://en.wikipedia.
2320
+ # org/wiki/Dimensionless_quantity) of 1, such as in `1/s`. It is typically used
2321
+ # when none of the basic units are appropriate. For example, "new users per day"
2322
+ # can be represented as `1/d` or ``new-users`/d` (and a metric value `5` would
2323
+ # mean "5 new users). Alternatively, "thousands of page views per day" would be
2324
+ # represented as `1000/d` or `k1/d` or `k`page_views`/d` (and a metric value of `
2325
+ # 5.3` would mean "5300 page views per day"). * `%` represents dimensionless
2326
+ # value of 1/100, and annotates values giving a percentage (so the metric values
2327
+ # are typically in the range of 0..100, and a metric value `3` means "3 percent")
2328
+ # . * `10^2.%` indicates a metric contains a ratio, typically in the range 0..1,
2329
+ # that will be multiplied by 100 and displayed as a percentage (so a metric
2330
+ # value `0.03` means "3 percent").
2331
+ # Corresponds to the JSON property `unit`
2332
+ # @return [String]
2333
+ attr_accessor :unit
2334
+
2335
+ # Whether the measurement is an integer, a floating-point number, etc. Some
2336
+ # combinations of `metric_kind` and `value_type` might not be supported.
2337
+ # Corresponds to the JSON property `valueType`
2338
+ # @return [String]
2339
+ attr_accessor :value_type
2340
+
2341
+ def initialize(**args)
2342
+ update!(**args)
2343
+ end
2344
+
2345
+ # Update properties of this object
2346
+ def update!(**args)
2347
+ @description = args[:description] if args.key?(:description)
2348
+ @display_name = args[:display_name] if args.key?(:display_name)
2349
+ @labels = args[:labels] if args.key?(:labels)
2350
+ @launch_stage = args[:launch_stage] if args.key?(:launch_stage)
2351
+ @metadata = args[:metadata] if args.key?(:metadata)
2352
+ @metric_kind = args[:metric_kind] if args.key?(:metric_kind)
2353
+ @monitored_resource_types = args[:monitored_resource_types] if args.key?(:monitored_resource_types)
2354
+ @name = args[:name] if args.key?(:name)
2355
+ @type = args[:type] if args.key?(:type)
2356
+ @unit = args[:unit] if args.key?(:unit)
2357
+ @value_type = args[:value_type] if args.key?(:value_type)
2358
+ end
2359
+ end
2360
+
2361
+ # Additional annotations that can be used to guide the usage of a metric.
2362
+ class MetricDescriptorMetadata
2363
+ include Google::Apis::Core::Hashable
2364
+
2365
+ # The delay of data points caused by ingestion. Data points older than this age
2366
+ # are guaranteed to be ingested and available to be read, excluding data loss
2367
+ # due to errors.
2368
+ # Corresponds to the JSON property `ingestDelay`
2369
+ # @return [String]
2370
+ attr_accessor :ingest_delay
2371
+
2372
+ # Deprecated. Must use the MetricDescriptor.launch_stage instead.
2373
+ # Corresponds to the JSON property `launchStage`
2374
+ # @return [String]
2375
+ attr_accessor :launch_stage
2376
+
2377
+ # The sampling period of metric data points. For metrics which are written
2378
+ # periodically, consecutive data points are stored at this time interval,
2379
+ # excluding data loss due to errors. Metrics with a higher granularity have a
2380
+ # smaller sampling period.
2381
+ # Corresponds to the JSON property `samplePeriod`
2382
+ # @return [String]
2383
+ attr_accessor :sample_period
2384
+
2385
+ def initialize(**args)
2386
+ update!(**args)
2387
+ end
2388
+
2389
+ # Update properties of this object
2390
+ def update!(**args)
2391
+ @ingest_delay = args[:ingest_delay] if args.key?(:ingest_delay)
2392
+ @launch_stage = args[:launch_stage] if args.key?(:launch_stage)
2393
+ @sample_period = args[:sample_period] if args.key?(:sample_period)
2394
+ end
2395
+ end
2396
+
2397
+ # Bind API methods to metrics. Binding a method to a metric causes that metric's
2398
+ # configured quota behaviors to apply to the method call.
2399
+ class MetricRule
2400
+ include Google::Apis::Core::Hashable
2401
+
2402
+ # Metrics to update when the selected methods are called, and the associated
2403
+ # cost applied to each metric. The key of the map is the metric name, and the
2404
+ # values are the amount increased for the metric against which the quota limits
2405
+ # are defined. The value must not be negative.
2406
+ # Corresponds to the JSON property `metricCosts`
2407
+ # @return [Hash<String,Fixnum>]
2408
+ attr_accessor :metric_costs
2409
+
2410
+ # Selects the methods to which this rule applies. Refer to selector for syntax
2411
+ # details.
2412
+ # Corresponds to the JSON property `selector`
2413
+ # @return [String]
2414
+ attr_accessor :selector
2415
+
2416
+ def initialize(**args)
2417
+ update!(**args)
2418
+ end
2419
+
2420
+ # Update properties of this object
2421
+ def update!(**args)
2422
+ @metric_costs = args[:metric_costs] if args.key?(:metric_costs)
2423
+ @selector = args[:selector] if args.key?(:selector)
2424
+ end
2425
+ end
2426
+
2427
+ # Declares an API Interface to be included in this interface. The including
2428
+ # interface must redeclare all the methods from the included interface, but
2429
+ # documentation and options are inherited as follows: - If after comment and
2430
+ # whitespace stripping, the documentation string of the redeclared method is
2431
+ # empty, it will be inherited from the original method. - Each annotation
2432
+ # belonging to the service config (http, visibility) which is not set in the
2433
+ # redeclared method will be inherited. - If an http annotation is inherited, the
2434
+ # path pattern will be modified as follows. Any version prefix will be replaced
2435
+ # by the version of the including interface plus the root path if specified.
2436
+ # Example of a simple mixin: package google.acl.v1; service AccessControl ` //
2437
+ # Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) `
2438
+ # option (google.api.http).get = "/v1/`resource=**`:getAcl"; ` ` package google.
2439
+ # storage.v2; service Storage ` // rpc GetAcl(GetAclRequest) returns (Acl); //
2440
+ # Get a data record. rpc GetData(GetDataRequest) returns (Data) ` option (google.
2441
+ # api.http).get = "/v2/`resource=**`"; ` ` Example of a mixin configuration:
2442
+ # apis: - name: google.storage.v2.Storage mixins: - name: google.acl.v1.
2443
+ # AccessControl The mixin construct implies that all methods in `AccessControl`
2444
+ # are also declared with same name and request/response types in `Storage`. A
2445
+ # documentation generator or annotation processor will see the effective `
2446
+ # Storage.GetAcl` method after inheriting documentation and annotations as
2447
+ # follows: service Storage ` // Get the underlying ACL object. rpc GetAcl(
2448
+ # GetAclRequest) returns (Acl) ` option (google.api.http).get = "/v2/`resource=**
2449
+ # `:getAcl"; ` ... ` Note how the version in the path pattern changed from `v1`
2450
+ # to `v2`. If the `root` field in the mixin is specified, it should be a
2451
+ # relative path under which inherited HTTP paths are placed. Example: apis: -
2452
+ # name: google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl
2453
+ # root: acls This implies the following inherited HTTP annotation: service
2454
+ # Storage ` // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (
2455
+ # Acl) ` option (google.api.http).get = "/v2/acls/`resource=**`:getAcl"; ` ... `
2456
+ class Mixin
2457
+ include Google::Apis::Core::Hashable
2458
+
2459
+ # The fully qualified name of the interface which is included.
2460
+ # Corresponds to the JSON property `name`
2461
+ # @return [String]
2462
+ attr_accessor :name
2463
+
2464
+ # If non-empty specifies a path under which inherited HTTP paths are rooted.
2465
+ # Corresponds to the JSON property `root`
2466
+ # @return [String]
2467
+ attr_accessor :root
2468
+
2469
+ def initialize(**args)
2470
+ update!(**args)
2471
+ end
2472
+
2473
+ # Update properties of this object
2474
+ def update!(**args)
2475
+ @name = args[:name] if args.key?(:name)
2476
+ @root = args[:root] if args.key?(:root)
2477
+ end
2478
+ end
2479
+
2480
+ # An object that describes the schema of a MonitoredResource object using a type
2481
+ # name and a set of labels. For example, the monitored resource descriptor for
2482
+ # Google Compute Engine VM instances has a type of `"gce_instance"` and
2483
+ # specifies the use of the labels `"instance_id"` and `"zone"` to identify
2484
+ # particular VM instances. Different APIs can support different monitored
2485
+ # resource types. APIs generally provide a `list` method that returns the
2486
+ # monitored resource descriptors used by the API.
2487
+ class MonitoredResourceDescriptor
2488
+ include Google::Apis::Core::Hashable
2489
+
2490
+ # Optional. A detailed description of the monitored resource type that might be
2491
+ # used in documentation.
2492
+ # Corresponds to the JSON property `description`
2493
+ # @return [String]
2494
+ attr_accessor :description
2495
+
2496
+ # Optional. A concise name for the monitored resource type that might be
2497
+ # displayed in user interfaces. It should be a Title Cased Noun Phrase, without
2498
+ # any article or other determiners. For example, `"Google Cloud SQL Database"`.
2499
+ # Corresponds to the JSON property `displayName`
2500
+ # @return [String]
2501
+ attr_accessor :display_name
2502
+
2503
+ # Required. A set of labels used to describe instances of this monitored
2504
+ # resource type. For example, an individual Google Cloud SQL database is
2505
+ # identified by values for the labels `"database_id"` and `"zone"`.
2506
+ # Corresponds to the JSON property `labels`
2507
+ # @return [Array<Google::Apis::ServicenetworkingV1::LabelDescriptor>]
2508
+ attr_accessor :labels
2509
+
2510
+ # Optional. The launch stage of the monitored resource definition.
2511
+ # Corresponds to the JSON property `launchStage`
2512
+ # @return [String]
2513
+ attr_accessor :launch_stage
2514
+
2515
+ # Optional. The resource name of the monitored resource descriptor: `"projects/`
2516
+ # project_id`/monitoredResourceDescriptors/`type`"` where `type` is the value of
2517
+ # the `type` field in this object and `project_id` is a project ID that provides
2518
+ # API-specific context for accessing the type. APIs that do not use project
2519
+ # information can use the resource name format `"monitoredResourceDescriptors/`
2520
+ # type`"`.
2521
+ # Corresponds to the JSON property `name`
2522
+ # @return [String]
2523
+ attr_accessor :name
2524
+
2525
+ # Required. The monitored resource type. For example, the type `"
2526
+ # cloudsql_database"` represents databases in Google Cloud SQL.
2527
+ # Corresponds to the JSON property `type`
2528
+ # @return [String]
2529
+ attr_accessor :type
2530
+
2531
+ def initialize(**args)
2532
+ update!(**args)
2533
+ end
2534
+
2535
+ # Update properties of this object
2536
+ def update!(**args)
2537
+ @description = args[:description] if args.key?(:description)
2538
+ @display_name = args[:display_name] if args.key?(:display_name)
2539
+ @labels = args[:labels] if args.key?(:labels)
2540
+ @launch_stage = args[:launch_stage] if args.key?(:launch_stage)
2541
+ @name = args[:name] if args.key?(:name)
2542
+ @type = args[:type] if args.key?(:type)
2543
+ end
2544
+ end
2545
+
2546
+ # Monitoring configuration of the service. The example below shows how to
2547
+ # configure monitored resources and metrics for monitoring. In the example, a
2548
+ # monitored resource and two metrics are defined. The `library.googleapis.com/
2549
+ # book/returned_count` metric is sent to both producer and consumer projects,
2550
+ # whereas the `library.googleapis.com/book/num_overdue` metric is only sent to
2551
+ # the consumer project. monitored_resources: - type: library.googleapis.com/
2552
+ # Branch display_name: "Library Branch" description: "A branch of a library."
2553
+ # launch_stage: GA labels: - key: resource_container description: "The Cloud
2554
+ # container (ie. project id) for the Branch." - key: location description: "The
2555
+ # location of the library branch." - key: branch_id description: "The id of the
2556
+ # branch." metrics: - name: library.googleapis.com/book/returned_count
2557
+ # display_name: "Books Returned" description: "The count of books that have been
2558
+ # returned." launch_stage: GA metric_kind: DELTA value_type: INT64 unit: "1"
2559
+ # labels: - key: customer_id description: "The id of the customer." - name:
2560
+ # library.googleapis.com/book/num_overdue display_name: "Books Overdue"
2561
+ # description: "The current number of overdue books." launch_stage: GA
2562
+ # metric_kind: GAUGE value_type: INT64 unit: "1" labels: - key: customer_id
2563
+ # description: "The id of the customer." monitoring: producer_destinations: -
2564
+ # monitored_resource: library.googleapis.com/Branch metrics: - library.
2565
+ # googleapis.com/book/returned_count consumer_destinations: - monitored_resource:
2566
+ # library.googleapis.com/Branch metrics: - library.googleapis.com/book/
2567
+ # returned_count - library.googleapis.com/book/num_overdue
2568
+ class Monitoring
2569
+ include Google::Apis::Core::Hashable
2570
+
2571
+ # Monitoring configurations for sending metrics to the consumer project. There
2572
+ # can be multiple consumer destinations. A monitored resource type may appear in
2573
+ # multiple monitoring destinations if different aggregations are needed for
2574
+ # different sets of metrics associated with that monitored resource type. A
2575
+ # monitored resource and metric pair may only be used once in the Monitoring
2576
+ # configuration.
2577
+ # Corresponds to the JSON property `consumerDestinations`
2578
+ # @return [Array<Google::Apis::ServicenetworkingV1::MonitoringDestination>]
2579
+ attr_accessor :consumer_destinations
2580
+
2581
+ # Monitoring configurations for sending metrics to the producer project. There
2582
+ # can be multiple producer destinations. A monitored resource type may appear in
2583
+ # multiple monitoring destinations if different aggregations are needed for
2584
+ # different sets of metrics associated with that monitored resource type. A
2585
+ # monitored resource and metric pair may only be used once in the Monitoring
2586
+ # configuration.
2587
+ # Corresponds to the JSON property `producerDestinations`
2588
+ # @return [Array<Google::Apis::ServicenetworkingV1::MonitoringDestination>]
2589
+ attr_accessor :producer_destinations
2590
+
2591
+ def initialize(**args)
2592
+ update!(**args)
2593
+ end
2594
+
2595
+ # Update properties of this object
2596
+ def update!(**args)
2597
+ @consumer_destinations = args[:consumer_destinations] if args.key?(:consumer_destinations)
2598
+ @producer_destinations = args[:producer_destinations] if args.key?(:producer_destinations)
2599
+ end
2600
+ end
2601
+
2602
+ # Configuration of a specific monitoring destination (the producer project or
2603
+ # the consumer project).
2604
+ class MonitoringDestination
2605
+ include Google::Apis::Core::Hashable
2606
+
2607
+ # Types of the metrics to report to this monitoring destination. Each type must
2608
+ # be defined in Service.metrics section.
2609
+ # Corresponds to the JSON property `metrics`
2610
+ # @return [Array<String>]
2611
+ attr_accessor :metrics
2612
+
2613
+ # The monitored resource type. The type must be defined in Service.
2614
+ # monitored_resources section.
2615
+ # Corresponds to the JSON property `monitoredResource`
2616
+ # @return [String]
2617
+ attr_accessor :monitored_resource
2618
+
2619
+ def initialize(**args)
2620
+ update!(**args)
2621
+ end
2622
+
2623
+ # Update properties of this object
2624
+ def update!(**args)
2625
+ @metrics = args[:metrics] if args.key?(:metrics)
2626
+ @monitored_resource = args[:monitored_resource] if args.key?(:monitored_resource)
2627
+ end
2628
+ end
2629
+
2630
+ # OAuth scopes are a way to define data and permissions on data. For example,
2631
+ # there are scopes defined for "Read-only access to Google Calendar" and "Access
2632
+ # to Cloud Platform". Users can consent to a scope for an application, giving it
2633
+ # permission to access that data on their behalf. OAuth scope specifications
2634
+ # should be fairly coarse grained; a user will need to see and understand the
2635
+ # text description of what your scope means. In most cases: use one or at most
2636
+ # two OAuth scopes for an entire family of products. If your product has
2637
+ # multiple APIs, you should probably be sharing the OAuth scope across all of
2638
+ # those APIs. When you need finer grained OAuth consent screens: talk with your
2639
+ # product management about how developers will use them in practice. Please note
2640
+ # that even though each of the canonical scopes is enough for a request to be
2641
+ # accepted and passed to the backend, a request can still fail due to the
2642
+ # backend requiring additional scopes or permissions.
2643
+ class OAuthRequirements
2644
+ include Google::Apis::Core::Hashable
2645
+
2646
+ # The list of publicly documented OAuth scopes that are allowed access. An OAuth
2647
+ # token containing any of these scopes will be accepted. Example:
2648
+ # canonical_scopes: https://www.googleapis.com/auth/calendar, https://www.
2649
+ # googleapis.com/auth/calendar.read
2650
+ # Corresponds to the JSON property `canonicalScopes`
2651
+ # @return [String]
2652
+ attr_accessor :canonical_scopes
2653
+
2654
+ def initialize(**args)
2655
+ update!(**args)
2656
+ end
2657
+
2658
+ # Update properties of this object
2659
+ def update!(**args)
2660
+ @canonical_scopes = args[:canonical_scopes] if args.key?(:canonical_scopes)
2661
+ end
2662
+ end
2663
+
2664
+ # This resource represents a long-running operation that is the result of a
2665
+ # network API call.
2666
+ class Operation
2667
+ include Google::Apis::Core::Hashable
2668
+
2669
+ # If the value is `false`, it means the operation is still in progress. If `true`
2670
+ # , the operation is completed, and either `error` or `response` is available.
2671
+ # Corresponds to the JSON property `done`
2672
+ # @return [Boolean]
2673
+ attr_accessor :done
2674
+ alias_method :done?, :done
2675
+
2676
+ # The `Status` type defines a logical error model that is suitable for different
2677
+ # programming environments, including REST APIs and RPC APIs. It is used by [
2678
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
2679
+ # data: error code, error message, and error details. You can find out more
2680
+ # about this error model and how to work with it in the [API Design Guide](https:
2681
+ # //cloud.google.com/apis/design/errors).
2682
+ # Corresponds to the JSON property `error`
2683
+ # @return [Google::Apis::ServicenetworkingV1::Status]
2684
+ attr_accessor :error
2685
+
2686
+ # Service-specific metadata associated with the operation. It typically contains
2687
+ # progress information and common metadata such as create time. Some services
2688
+ # might not provide such metadata. Any method that returns a long-running
2689
+ # operation should document the metadata type, if any.
2690
+ # Corresponds to the JSON property `metadata`
2691
+ # @return [Hash<String,Object>]
2692
+ attr_accessor :metadata
2693
+
2694
+ # The server-assigned name, which is only unique within the same service that
2695
+ # originally returns it. If you use the default HTTP mapping, the `name` should
2696
+ # be a resource name ending with `operations/`unique_id``.
2697
+ # Corresponds to the JSON property `name`
2698
+ # @return [String]
2699
+ attr_accessor :name
2700
+
2701
+ # The normal response of the operation in case of success. If the original
2702
+ # method returns no data on success, such as `Delete`, the response is `google.
2703
+ # protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`,
2704
+ # the response should be the resource. For other methods, the response should
2705
+ # have the type `XxxResponse`, where `Xxx` is the original method name. For
2706
+ # example, if the original method name is `TakeSnapshot()`, the inferred
2707
+ # response type is `TakeSnapshotResponse`.
2708
+ # Corresponds to the JSON property `response`
2709
+ # @return [Hash<String,Object>]
2710
+ attr_accessor :response
2711
+
2712
+ def initialize(**args)
2713
+ update!(**args)
2714
+ end
2715
+
2716
+ # Update properties of this object
2717
+ def update!(**args)
2718
+ @done = args[:done] if args.key?(:done)
2719
+ @error = args[:error] if args.key?(:error)
2720
+ @metadata = args[:metadata] if args.key?(:metadata)
2721
+ @name = args[:name] if args.key?(:name)
2722
+ @response = args[:response] if args.key?(:response)
2723
+ end
2724
+ end
2725
+
2726
+ # A protocol buffer option, which can be attached to a message, field,
2727
+ # enumeration, etc.
2728
+ class Option
2729
+ include Google::Apis::Core::Hashable
2730
+
2731
+ # The option's name. For protobuf built-in options (options defined in
2732
+ # descriptor.proto), this is the short name. For example, `"map_entry"`. For
2733
+ # custom options, it should be the fully-qualified name. For example, `"google.
2734
+ # api.http"`.
2735
+ # Corresponds to the JSON property `name`
2736
+ # @return [String]
2737
+ attr_accessor :name
2738
+
2739
+ # The option's value packed in an Any message. If the value is a primitive, the
2740
+ # corresponding wrapper type defined in google/protobuf/wrappers.proto should be
2741
+ # used. If the value is an enum, it should be stored as an int32 value using the
2742
+ # google.protobuf.Int32Value type.
2743
+ # Corresponds to the JSON property `value`
2744
+ # @return [Hash<String,Object>]
2745
+ attr_accessor :value
2746
+
2747
+ def initialize(**args)
2748
+ update!(**args)
2749
+ end
2750
+
2751
+ # Update properties of this object
2752
+ def update!(**args)
2753
+ @name = args[:name] if args.key?(:name)
2754
+ @value = args[:value] if args.key?(:value)
2755
+ end
2756
+ end
2757
+
2758
+ # Represents a documentation page. A page can contain subpages to represent
2759
+ # nested documentation set structure.
2760
+ class Page
2761
+ include Google::Apis::Core::Hashable
2762
+
2763
+ # The Markdown content of the page. You can use (== include `path` ==) to
2764
+ # include content from a Markdown file.
2765
+ # Corresponds to the JSON property `content`
2766
+ # @return [String]
2767
+ attr_accessor :content
2768
+
2769
+ # The name of the page. It will be used as an identity of the page to generate
2770
+ # URI of the page, text of the link to this page in navigation, etc. The full
2771
+ # page name (start from the root page name to this page concatenated with `.`)
2772
+ # can be used as reference to the page in your documentation. For example: pages:
2773
+ # - name: Tutorial content: (== include tutorial.md ==) subpages: - name: Java
2774
+ # content: (== include tutorial_java.md ==) You can reference `Java` page using
2775
+ # Markdown reference link syntax: `Java`.
2776
+ # Corresponds to the JSON property `name`
2777
+ # @return [String]
2778
+ attr_accessor :name
2779
+
2780
+ # Subpages of this page. The order of subpages specified here will be honored in
2781
+ # the generated docset.
2782
+ # Corresponds to the JSON property `subpages`
2783
+ # @return [Array<Google::Apis::ServicenetworkingV1::Page>]
2784
+ attr_accessor :subpages
2785
+
2786
+ def initialize(**args)
2787
+ update!(**args)
2788
+ end
2789
+
2790
+ # Update properties of this object
2791
+ def update!(**args)
2792
+ @content = args[:content] if args.key?(:content)
2793
+ @name = args[:name] if args.key?(:name)
2794
+ @subpages = args[:subpages] if args.key?(:subpages)
2795
+ end
2796
+ end
2797
+
2798
+ # DNS domain suffix for which requests originating in the producer VPC network
2799
+ # are resolved in the associated consumer VPC network.
2800
+ class PeeredDnsDomain
2801
+ include Google::Apis::Core::Hashable
2802
+
2803
+ # The DNS domain name suffix e.g. `example.com.`.
2804
+ # Corresponds to the JSON property `dnsSuffix`
2805
+ # @return [String]
2806
+ attr_accessor :dns_suffix
2807
+
2808
+ # User assigned name for this resource. Must be unique within the consumer
2809
+ # network. The name must be 1-63 characters long, must begin with a letter, end
2810
+ # with a letter or digit, and only contain lowercase letters, digits or dashes.
2811
+ # Corresponds to the JSON property `name`
2812
+ # @return [String]
2813
+ attr_accessor :name
2814
+
2815
+ def initialize(**args)
2816
+ update!(**args)
2817
+ end
2818
+
2819
+ # Update properties of this object
2820
+ def update!(**args)
2821
+ @dns_suffix = args[:dns_suffix] if args.key?(:dns_suffix)
2822
+ @name = args[:name] if args.key?(:name)
2823
+ end
2824
+ end
2825
+
2826
+ # Metadata provided through GetOperation request for the LRO generated by
2827
+ # CreatePeeredDnsDomain API.
2828
+ class PeeredDnsDomainMetadata
2829
+ include Google::Apis::Core::Hashable
2830
+
2831
+ def initialize(**args)
2832
+ update!(**args)
2833
+ end
2834
+
2835
+ # Update properties of this object
2836
+ def update!(**args)
2837
+ end
2838
+ end
2839
+
2840
+ # Grouping of IAM role and IAM member.
2841
+ class PolicyBinding
2842
+ include Google::Apis::Core::Hashable
2843
+
2844
+ # Required. Member to bind the role with. See /iam/docs/reference/rest/v1/Policy#
2845
+ # Binding for how to format each member. Eg. - user:myuser@mydomain.com -
2846
+ # serviceAccount:my-service-account@app.gserviceaccount.com
2847
+ # Corresponds to the JSON property `member`
2848
+ # @return [String]
2849
+ attr_accessor :member
2850
+
2851
+ # Required. Role to apply. Only allowlisted roles can be used at the specified
2852
+ # granularity. The role must be one of the following: - 'roles/container.
2853
+ # hostServiceAgentUser' applied on the shared VPC host project - 'roles/compute.
2854
+ # securityAdmin' applied on the shared VPC host project
2855
+ # Corresponds to the JSON property `role`
2856
+ # @return [String]
2857
+ attr_accessor :role
2858
+
2859
+ def initialize(**args)
2860
+ update!(**args)
2861
+ end
2862
+
2863
+ # Update properties of this object
2864
+ def update!(**args)
2865
+ @member = args[:member] if args.key?(:member)
2866
+ @role = args[:role] if args.key?(:role)
2867
+ end
2868
+ end
2869
+
2870
+ # Quota configuration helps to achieve fairness and budgeting in service usage.
2871
+ # The metric based quota configuration works this way: - The service
2872
+ # configuration defines a set of metrics. - For API calls, the quota.
2873
+ # metric_rules maps methods to metrics with corresponding costs. - The quota.
2874
+ # limits defines limits on the metrics, which will be used for quota checks at
2875
+ # runtime. An example quota configuration in yaml format: quota: limits: - name:
2876
+ # apiWriteQpsPerProject metric: library.googleapis.com/write_calls unit: "1/min/`
2877
+ # project`" # rate limit for consumer projects values: STANDARD: 10000 # The
2878
+ # metric rules bind all methods to the read_calls metric, # except for the
2879
+ # UpdateBook and DeleteBook methods. These two methods # are mapped to the
2880
+ # write_calls metric, with the UpdateBook method # consuming at twice rate as
2881
+ # the DeleteBook method. metric_rules: - selector: "*" metric_costs: library.
2882
+ # googleapis.com/read_calls: 1 - selector: google.example.library.v1.
2883
+ # LibraryService.UpdateBook metric_costs: library.googleapis.com/write_calls: 2 -
2884
+ # selector: google.example.library.v1.LibraryService.DeleteBook metric_costs:
2885
+ # library.googleapis.com/write_calls: 1 Corresponding Metric definition: metrics:
2886
+ # - name: library.googleapis.com/read_calls display_name: Read requests
2887
+ # metric_kind: DELTA value_type: INT64 - name: library.googleapis.com/
2888
+ # write_calls display_name: Write requests metric_kind: DELTA value_type: INT64
2889
+ class Quota
2890
+ include Google::Apis::Core::Hashable
2891
+
2892
+ # List of `QuotaLimit` definitions for the service.
2893
+ # Corresponds to the JSON property `limits`
2894
+ # @return [Array<Google::Apis::ServicenetworkingV1::QuotaLimit>]
2895
+ attr_accessor :limits
2896
+
2897
+ # List of `MetricRule` definitions, each one mapping a selected method to one or
2898
+ # more metrics.
2899
+ # Corresponds to the JSON property `metricRules`
2900
+ # @return [Array<Google::Apis::ServicenetworkingV1::MetricRule>]
2901
+ attr_accessor :metric_rules
2902
+
2903
+ def initialize(**args)
2904
+ update!(**args)
2905
+ end
2906
+
2907
+ # Update properties of this object
2908
+ def update!(**args)
2909
+ @limits = args[:limits] if args.key?(:limits)
2910
+ @metric_rules = args[:metric_rules] if args.key?(:metric_rules)
2911
+ end
2912
+ end
2913
+
2914
+ # `QuotaLimit` defines a specific limit that applies over a specified duration
2915
+ # for a limit type. There can be at most one limit for a duration and limit type
2916
+ # combination defined within a `QuotaGroup`.
2917
+ class QuotaLimit
2918
+ include Google::Apis::Core::Hashable
2919
+
2920
+ # Default number of tokens that can be consumed during the specified duration.
2921
+ # This is the number of tokens assigned when a client application developer
2922
+ # activates the service for his/her project. Specifying a value of 0 will block
2923
+ # all requests. This can be used if you are provisioning quota to selected
2924
+ # consumers and blocking others. Similarly, a value of -1 will indicate an
2925
+ # unlimited quota. No other negative values are allowed. Used by group-based
2926
+ # quotas only.
2927
+ # Corresponds to the JSON property `defaultLimit`
2928
+ # @return [Fixnum]
2929
+ attr_accessor :default_limit
2930
+
2931
+ # Optional. User-visible, extended description for this quota limit. Should be
2932
+ # used only when more context is needed to understand this limit than provided
2933
+ # by the limit's display name (see: `display_name`).
2934
+ # Corresponds to the JSON property `description`
2935
+ # @return [String]
2936
+ attr_accessor :description
2937
+
2938
+ # User-visible display name for this limit. Optional. If not set, the UI will
2939
+ # provide a default display name based on the quota configuration. This field
2940
+ # can be used to override the default display name generated from the
2941
+ # configuration.
2942
+ # Corresponds to the JSON property `displayName`
2943
+ # @return [String]
2944
+ attr_accessor :display_name
2945
+
2946
+ # Duration of this limit in textual notation. Must be "100s" or "1d". Used by
2947
+ # group-based quotas only.
2948
+ # Corresponds to the JSON property `duration`
2949
+ # @return [String]
2950
+ attr_accessor :duration
2951
+
2952
+ # Free tier value displayed in the Developers Console for this limit. The free
2953
+ # tier is the number of tokens that will be subtracted from the billed amount
2954
+ # when billing is enabled. This field can only be set on a limit with duration "
2955
+ # 1d", in a billable group; it is invalid on any other limit. If this field is
2956
+ # not set, it defaults to 0, indicating that there is no free tier for this
2957
+ # service. Used by group-based quotas only.
2958
+ # Corresponds to the JSON property `freeTier`
2959
+ # @return [Fixnum]
2960
+ attr_accessor :free_tier
2961
+
2962
+ # Maximum number of tokens that can be consumed during the specified duration.
2963
+ # Client application developers can override the default limit up to this
2964
+ # maximum. If specified, this value cannot be set to a value less than the
2965
+ # default limit. If not specified, it is set to the default limit. To allow
2966
+ # clients to apply overrides with no upper bound, set this to -1, indicating
2967
+ # unlimited maximum quota. Used by group-based quotas only.
2968
+ # Corresponds to the JSON property `maxLimit`
2969
+ # @return [Fixnum]
2970
+ attr_accessor :max_limit
2971
+
2972
+ # The name of the metric this quota limit applies to. The quota limits with the
2973
+ # same metric will be checked together during runtime. The metric must be
2974
+ # defined within the service config.
2975
+ # Corresponds to the JSON property `metric`
2976
+ # @return [String]
2977
+ attr_accessor :metric
2978
+
2979
+ # Name of the quota limit. The name must be provided, and it must be unique
2980
+ # within the service. The name can only include alphanumeric characters as well
2981
+ # as '-'. The maximum length of the limit name is 64 characters.
2982
+ # Corresponds to the JSON property `name`
2983
+ # @return [String]
2984
+ attr_accessor :name
2985
+
2986
+ # Specify the unit of the quota limit. It uses the same syntax as Metric.unit.
2987
+ # The supported unit kinds are determined by the quota backend system. Here are
2988
+ # some examples: * "1/min/`project`" for quota per minute per project. Note: the
2989
+ # order of unit components is insignificant. The "1" at the beginning is
2990
+ # required to follow the metric unit syntax.
2991
+ # Corresponds to the JSON property `unit`
2992
+ # @return [String]
2993
+ attr_accessor :unit
2994
+
2995
+ # Tiered limit values. You must specify this as a key:value pair, with an
2996
+ # integer value that is the maximum number of requests allowed for the specified
2997
+ # unit. Currently only STANDARD is supported.
2998
+ # Corresponds to the JSON property `values`
2999
+ # @return [Hash<String,Fixnum>]
3000
+ attr_accessor :values
3001
+
3002
+ def initialize(**args)
3003
+ update!(**args)
3004
+ end
3005
+
3006
+ # Update properties of this object
3007
+ def update!(**args)
3008
+ @default_limit = args[:default_limit] if args.key?(:default_limit)
3009
+ @description = args[:description] if args.key?(:description)
3010
+ @display_name = args[:display_name] if args.key?(:display_name)
3011
+ @duration = args[:duration] if args.key?(:duration)
3012
+ @free_tier = args[:free_tier] if args.key?(:free_tier)
3013
+ @max_limit = args[:max_limit] if args.key?(:max_limit)
3014
+ @metric = args[:metric] if args.key?(:metric)
3015
+ @name = args[:name] if args.key?(:name)
3016
+ @unit = args[:unit] if args.key?(:unit)
3017
+ @values = args[:values] if args.key?(:values)
3018
+ end
3019
+ end
3020
+
3021
+ # Represents a found unused range.
3022
+ class Range
3023
+ include Google::Apis::Core::Hashable
3024
+
3025
+ # CIDR range in "10.x.x.x/y" format that is within the allocated ranges and
3026
+ # currently unused.
3027
+ # Corresponds to the JSON property `ipCidrRange`
3028
+ # @return [String]
3029
+ attr_accessor :ip_cidr_range
3030
+
3031
+ # In the Shared VPC host project, the VPC network that's peered with the
3032
+ # consumer network. For example: `projects/1234321/global/networks/host-network`
3033
+ # Corresponds to the JSON property `network`
3034
+ # @return [String]
3035
+ attr_accessor :network
3036
+
3037
+ def initialize(**args)
3038
+ update!(**args)
3039
+ end
3040
+
3041
+ # Update properties of this object
3042
+ def update!(**args)
3043
+ @ip_cidr_range = args[:ip_cidr_range] if args.key?(:ip_cidr_range)
3044
+ @network = args[:network] if args.key?(:network)
3045
+ end
3046
+ end
3047
+
3048
+ # Represents a range reservation.
3049
+ class RangeReservation
3050
+ include Google::Apis::Core::Hashable
3051
+
3052
+ # Required. The size of the desired subnet. Use usual CIDR range notation. For
3053
+ # example, '30' to find unused x.x.x.x/30 CIDR range. The goal is to determine
3054
+ # if one of the allocated ranges has enough free space for a subnet of the
3055
+ # requested size.
3056
+ # Corresponds to the JSON property `ipPrefixLength`
3057
+ # @return [Fixnum]
3058
+ attr_accessor :ip_prefix_length
3059
+
3060
+ # Optional. The name of one or more allocated IP address ranges associated with
3061
+ # this private service access connection. If no range names are provided all
3062
+ # ranges associated with this connection will be considered. If a CIDR range
3063
+ # with the specified IP prefix length is not available within these ranges the
3064
+ # validation fails.
3065
+ # Corresponds to the JSON property `requestedRanges`
3066
+ # @return [Array<String>]
3067
+ attr_accessor :requested_ranges
3068
+
3069
+ # Optional. DO NOT USE - Under development. The size of the desired secondary
3070
+ # ranges for the subnet. Use usual CIDR range notation. For example, '30' to
3071
+ # find unused x.x.x.x/30 CIDR range. The goal is to determine that the allocated
3072
+ # ranges have enough free space for all the requested secondary ranges.
3073
+ # Corresponds to the JSON property `secondaryRangeIpPrefixLengths`
3074
+ # @return [Array<Fixnum>]
3075
+ attr_accessor :secondary_range_ip_prefix_lengths
3076
+
3077
+ def initialize(**args)
3078
+ update!(**args)
3079
+ end
3080
+
3081
+ # Update properties of this object
3082
+ def update!(**args)
3083
+ @ip_prefix_length = args[:ip_prefix_length] if args.key?(:ip_prefix_length)
3084
+ @requested_ranges = args[:requested_ranges] if args.key?(:requested_ranges)
3085
+ @secondary_range_ip_prefix_lengths = args[:secondary_range_ip_prefix_lengths] if args.key?(:secondary_range_ip_prefix_lengths)
3086
+ end
3087
+ end
3088
+
3089
+ # Metadata provided through GetOperation request for the LRO generated by
3090
+ # RemoveDnsRecordSet API
3091
+ class RemoveDnsRecordSetMetadata
3092
+ include Google::Apis::Core::Hashable
3093
+
3094
+ def initialize(**args)
3095
+ update!(**args)
3096
+ end
3097
+
3098
+ # Update properties of this object
3099
+ def update!(**args)
3100
+ end
3101
+ end
3102
+
3103
+ # Request to remove a record set from a private managed DNS zone in the shared
3104
+ # producer host project. The name, type, ttl, and data values must all exactly
3105
+ # match an existing record set in the specified zone.
3106
+ class RemoveDnsRecordSetRequest
3107
+ include Google::Apis::Core::Hashable
3108
+
3109
+ # Required. The network that the consumer is using to connect with services.
3110
+ # Must be in the form of projects/`project`/global/networks/`network` `project`
3111
+ # is the project number, as in '12345' `network` is the network name.
3112
+ # Corresponds to the JSON property `consumerNetwork`
3113
+ # @return [String]
3114
+ attr_accessor :consumer_network
3115
+
3116
+ # Represents a DNS record set resource.
3117
+ # Corresponds to the JSON property `dnsRecordSet`
3118
+ # @return [Google::Apis::ServicenetworkingV1::DnsRecordSet]
3119
+ attr_accessor :dns_record_set
3120
+
3121
+ # Required. The name of the private DNS zone in the shared producer host project
3122
+ # from which the record set will be removed.
3123
+ # Corresponds to the JSON property `zone`
3124
+ # @return [String]
3125
+ attr_accessor :zone
3126
+
3127
+ def initialize(**args)
3128
+ update!(**args)
3129
+ end
3130
+
3131
+ # Update properties of this object
3132
+ def update!(**args)
3133
+ @consumer_network = args[:consumer_network] if args.key?(:consumer_network)
3134
+ @dns_record_set = args[:dns_record_set] if args.key?(:dns_record_set)
3135
+ @zone = args[:zone] if args.key?(:zone)
3136
+ end
3137
+ end
3138
+
3139
+ # Blank message response type for RemoveDnsRecordSet API
3140
+ class RemoveDnsRecordSetResponse
3141
+ include Google::Apis::Core::Hashable
3142
+
3143
+ def initialize(**args)
3144
+ update!(**args)
3145
+ end
3146
+
3147
+ # Update properties of this object
3148
+ def update!(**args)
3149
+ end
3150
+ end
3151
+
3152
+ # Metadata provided through GetOperation request for the LRO generated by
3153
+ # RemoveDnsZone API
3154
+ class RemoveDnsZoneMetadata
3155
+ include Google::Apis::Core::Hashable
3156
+
3157
+ def initialize(**args)
3158
+ update!(**args)
3159
+ end
3160
+
3161
+ # Update properties of this object
3162
+ def update!(**args)
3163
+ end
3164
+ end
3165
+
3166
+ # Request to remove a private managed DNS zone in the shared producer host
3167
+ # project and a matching DNS peering zone in the consumer project.
3168
+ class RemoveDnsZoneRequest
3169
+ include Google::Apis::Core::Hashable
3170
+
3171
+ # Required. The network that the consumer is using to connect with services.
3172
+ # Must be in the form of projects/`project`/global/networks/`network` `project`
3173
+ # is the project number, as in '12345' `network` is the network name.
3174
+ # Corresponds to the JSON property `consumerNetwork`
3175
+ # @return [String]
3176
+ attr_accessor :consumer_network
3177
+
3178
+ # Required. The name for both the private zone in the shared producer host
3179
+ # project and the peering zone in the consumer project.
3180
+ # Corresponds to the JSON property `name`
3181
+ # @return [String]
3182
+ attr_accessor :name
3183
+
3184
+ def initialize(**args)
3185
+ update!(**args)
3186
+ end
3187
+
3188
+ # Update properties of this object
3189
+ def update!(**args)
3190
+ @consumer_network = args[:consumer_network] if args.key?(:consumer_network)
3191
+ @name = args[:name] if args.key?(:name)
3192
+ end
3193
+ end
3194
+
3195
+ # Blank message response type for RemoveDnsZone API
3196
+ class RemoveDnsZoneResponse
3197
+ include Google::Apis::Core::Hashable
3198
+
3199
+ def initialize(**args)
3200
+ update!(**args)
3201
+ end
3202
+
3203
+ # Update properties of this object
3204
+ def update!(**args)
3205
+ end
3206
+ end
3207
+
3208
+ # Represents a route that was created or discovered by a private access
3209
+ # management service.
3210
+ class Route
3211
+ include Google::Apis::Core::Hashable
3212
+
3213
+ # Destination CIDR range that this route applies to.
3214
+ # Corresponds to the JSON property `destRange`
3215
+ # @return [String]
3216
+ attr_accessor :dest_range
3217
+
3218
+ # Route name. See https://cloud.google.com/vpc/docs/routes
3219
+ # Corresponds to the JSON property `name`
3220
+ # @return [String]
3221
+ attr_accessor :name
3222
+
3223
+ # Fully-qualified URL of the VPC network in the producer host tenant project
3224
+ # that this route applies to. For example: `projects/123456/global/networks/host-
3225
+ # network`
3226
+ # Corresponds to the JSON property `network`
3227
+ # @return [String]
3228
+ attr_accessor :network
3229
+
3230
+ # Fully-qualified URL of the gateway that should handle matching packets that
3231
+ # this route applies to. For example: `projects/123456/global/gateways/default-
3232
+ # internet-gateway`
3233
+ # Corresponds to the JSON property `nextHopGateway`
3234
+ # @return [String]
3235
+ attr_accessor :next_hop_gateway
3236
+
3237
+ def initialize(**args)
3238
+ update!(**args)
3239
+ end
3240
+
3241
+ # Update properties of this object
3242
+ def update!(**args)
3243
+ @dest_range = args[:dest_range] if args.key?(:dest_range)
3244
+ @name = args[:name] if args.key?(:name)
3245
+ @network = args[:network] if args.key?(:network)
3246
+ @next_hop_gateway = args[:next_hop_gateway] if args.key?(:next_hop_gateway)
3247
+ end
3248
+ end
3249
+
3250
+ # Request to search for an unused range within allocated ranges.
3251
+ class SearchRangeRequest
3252
+ include Google::Apis::Core::Hashable
3253
+
3254
+ # Required. The prefix length of the IP range. Use usual CIDR range notation.
3255
+ # For example, '30' to find unused x.x.x.x/30 CIDR range. Actual range will be
3256
+ # determined using allocated range for the consumer peered network and returned
3257
+ # in the result.
3258
+ # Corresponds to the JSON property `ipPrefixLength`
3259
+ # @return [Fixnum]
3260
+ attr_accessor :ip_prefix_length
3261
+
3262
+ # Network name in the consumer project. This network must have been already
3263
+ # peered with a shared VPC network using CreateConnection method. Must be in a
3264
+ # form 'projects/`project`/global/networks/`network`'. `project` is a project
3265
+ # number, as in '12345' `network` is network name.
3266
+ # Corresponds to the JSON property `network`
3267
+ # @return [String]
3268
+ attr_accessor :network
3269
+
3270
+ def initialize(**args)
3271
+ update!(**args)
3272
+ end
3273
+
3274
+ # Update properties of this object
3275
+ def update!(**args)
3276
+ @ip_prefix_length = args[:ip_prefix_length] if args.key?(:ip_prefix_length)
3277
+ @network = args[:network] if args.key?(:network)
3278
+ end
3279
+ end
3280
+
3281
+ #
3282
+ class SecondaryIpRange
3283
+ include Google::Apis::Core::Hashable
3284
+
3285
+ # Secondary IP CIDR range in `x.x.x.x/y` format.
3286
+ # Corresponds to the JSON property `ipCidrRange`
3287
+ # @return [String]
3288
+ attr_accessor :ip_cidr_range
3289
+
3290
+ # Name of the secondary IP range.
3291
+ # Corresponds to the JSON property `rangeName`
3292
+ # @return [String]
3293
+ attr_accessor :range_name
3294
+
3295
+ def initialize(**args)
3296
+ update!(**args)
3297
+ end
3298
+
3299
+ # Update properties of this object
3300
+ def update!(**args)
3301
+ @ip_cidr_range = args[:ip_cidr_range] if args.key?(:ip_cidr_range)
3302
+ @range_name = args[:range_name] if args.key?(:range_name)
3303
+ end
3304
+ end
3305
+
3306
+ #
3307
+ class SecondaryIpRangeSpec
3308
+ include Google::Apis::Core::Hashable
3309
+
3310
+ # Required. The prefix length of the secondary IP range. Use CIDR range notation,
3311
+ # such as `30` to provision a secondary IP range with an `x.x.x.x/30` CIDR
3312
+ # range. The IP address range is drawn from a pool of available ranges in the
3313
+ # service consumer's allocated range.
3314
+ # Corresponds to the JSON property `ipPrefixLength`
3315
+ # @return [Fixnum]
3316
+ attr_accessor :ip_prefix_length
3317
+
3318
+ # Required. A name for the secondary IP range. The name must be 1-63 characters
3319
+ # long, and comply with RFC1035. The name must be unique within the subnetwork.
3320
+ # Corresponds to the JSON property `rangeName`
3321
+ # @return [String]
3322
+ attr_accessor :range_name
3323
+
3324
+ # Optional. The starting address of a range. The address must be a valid IPv4
3325
+ # address in the x.x.x.x format. This value combined with the IP prefix range is
3326
+ # the CIDR range for the secondary IP range. The range must be within the
3327
+ # allocated range that is assigned to the private connection. If the CIDR range
3328
+ # isn't available, the call fails.
3329
+ # Corresponds to the JSON property `requestedAddress`
3330
+ # @return [String]
3331
+ attr_accessor :requested_address
3332
+
3333
+ def initialize(**args)
3334
+ update!(**args)
3335
+ end
3336
+
3337
+ # Update properties of this object
3338
+ def update!(**args)
3339
+ @ip_prefix_length = args[:ip_prefix_length] if args.key?(:ip_prefix_length)
3340
+ @range_name = args[:range_name] if args.key?(:range_name)
3341
+ @requested_address = args[:requested_address] if args.key?(:requested_address)
3342
+ end
3343
+ end
3344
+
3345
+ # `Service` is the root object of Google service configuration schema. It
3346
+ # describes basic information about a service, such as the name and the title,
3347
+ # and delegates other aspects to sub-sections. Each sub-section is either a
3348
+ # proto message or a repeated proto message that configures a specific aspect,
3349
+ # such as auth. See each proto message definition for details. Example: type:
3350
+ # google.api.Service config_version: 3 name: calendar.googleapis.com title:
3351
+ # Google Calendar API apis: - name: google.calendar.v3.Calendar authentication:
3352
+ # providers: - id: google_calendar_auth jwks_uri: https://www.googleapis.com/
3353
+ # oauth2/v1/certs issuer: https://securetoken.google.com rules: - selector: "*"
3354
+ # requirements: provider_id: google_calendar_auth
3355
+ class Service
3356
+ include Google::Apis::Core::Hashable
3357
+
3358
+ # A list of API interfaces exported by this service. Only the `name` field of
3359
+ # the google.protobuf.Api needs to be provided by the configuration author, as
3360
+ # the remaining fields will be derived from the IDL during the normalization
3361
+ # process. It is an error to specify an API interface here which cannot be
3362
+ # resolved against the associated IDL files.
3363
+ # Corresponds to the JSON property `apis`
3364
+ # @return [Array<Google::Apis::ServicenetworkingV1::Api>]
3365
+ attr_accessor :apis
3366
+
3367
+ # `Authentication` defines the authentication configuration for an API. Example
3368
+ # for an API targeted for external use: name: calendar.googleapis.com
3369
+ # authentication: providers: - id: google_calendar_auth jwks_uri: https://www.
3370
+ # googleapis.com/oauth2/v1/certs issuer: https://securetoken.google.com rules: -
3371
+ # selector: "*" requirements: provider_id: google_calendar_auth
3372
+ # Corresponds to the JSON property `authentication`
3373
+ # @return [Google::Apis::ServicenetworkingV1::Authentication]
3374
+ attr_accessor :authentication
3375
+
3376
+ # `Backend` defines the backend configuration for a service.
3377
+ # Corresponds to the JSON property `backend`
3378
+ # @return [Google::Apis::ServicenetworkingV1::Backend]
3379
+ attr_accessor :backend
3380
+
3381
+ # Billing related configuration of the service. The following example shows how
3382
+ # to configure monitored resources and metrics for billing, `
3383
+ # consumer_destinations` is the only supported destination and the monitored
3384
+ # resources need at least one label key `cloud.googleapis.com/location` to
3385
+ # indicate the location of the billing usage, using different monitored
3386
+ # resources between monitoring and billing is recommended so they can be evolved
3387
+ # independently: monitored_resources: - type: library.googleapis.com/
3388
+ # billing_branch labels: - key: cloud.googleapis.com/location description: |
3389
+ # Predefined label to support billing location restriction. - key: city
3390
+ # description: | Custom label to define the city where the library branch is
3391
+ # located in. - key: name description: Custom label to define the name of the
3392
+ # library branch. metrics: - name: library.googleapis.com/book/borrowed_count
3393
+ # metric_kind: DELTA value_type: INT64 unit: "1" billing: consumer_destinations:
3394
+ # - monitored_resource: library.googleapis.com/billing_branch metrics: - library.
3395
+ # googleapis.com/book/borrowed_count
3396
+ # Corresponds to the JSON property `billing`
3397
+ # @return [Google::Apis::ServicenetworkingV1::Billing]
3398
+ attr_accessor :billing
3399
+
3400
+ # Deprecated. The service config compiler always sets this field to `3`.
3401
+ # Corresponds to the JSON property `configVersion`
3402
+ # @return [Fixnum]
3403
+ attr_accessor :config_version
3404
+
3405
+ # `Context` defines which contexts an API requests. Example: context: rules: -
3406
+ # selector: "*" requested: - google.rpc.context.ProjectContext - google.rpc.
3407
+ # context.OriginContext The above specifies that all methods in the API request `
3408
+ # google.rpc.context.ProjectContext` and `google.rpc.context.OriginContext`.
3409
+ # Available context types are defined in package `google.rpc.context`. This also
3410
+ # provides mechanism to allowlist any protobuf message extension that can be
3411
+ # sent in grpc metadata using “x-goog-ext--bin” and “x-goog-ext--jspb” format.
3412
+ # For example, list any service specific protobuf types that can appear in grpc
3413
+ # metadata as follows in your yaml file: Example: context: rules: - selector: "
3414
+ # google.example.library.v1.LibraryService.CreateBook"
3415
+ # allowed_request_extensions: - google.foo.v1.NewExtension
3416
+ # allowed_response_extensions: - google.foo.v1.NewExtension You can also specify
3417
+ # extension ID instead of fully qualified extension name here.
3418
+ # Corresponds to the JSON property `context`
3419
+ # @return [Google::Apis::ServicenetworkingV1::Context]
3420
+ attr_accessor :context
3421
+
3422
+ # Selects and configures the service controller used by the service. The service
3423
+ # controller handles features like abuse, quota, billing, logging, monitoring,
3424
+ # etc.
3425
+ # Corresponds to the JSON property `control`
3426
+ # @return [Google::Apis::ServicenetworkingV1::Control]
3427
+ attr_accessor :control
3428
+
3429
+ # Customize service error responses. For example, list any service specific
3430
+ # protobuf types that can appear in error detail lists of error responses.
3431
+ # Example: custom_error: types: - google.foo.v1.CustomError - google.foo.v1.
3432
+ # AnotherError
3433
+ # Corresponds to the JSON property `customError`
3434
+ # @return [Google::Apis::ServicenetworkingV1::CustomError]
3435
+ attr_accessor :custom_error
3436
+
3437
+ # `Documentation` provides the information for describing a service. Example:
3438
+ # documentation: summary: > The Google Calendar API gives access to most
3439
+ # calendar features. pages: - name: Overview content: (== include google/foo/
3440
+ # overview.md ==) - name: Tutorial content: (== include google/foo/tutorial.md ==
3441
+ # ) subpages; - name: Java content: (== include google/foo/tutorial_java.md ==)
3442
+ # rules: - selector: google.calendar.Calendar.Get description: > ... - selector:
3443
+ # google.calendar.Calendar.Put description: > ... Documentation is provided in
3444
+ # markdown syntax. In addition to standard markdown features, definition lists,
3445
+ # tables and fenced code blocks are supported. Section headers can be provided
3446
+ # and are interpreted relative to the section nesting of the context where a
3447
+ # documentation fragment is embedded. Documentation from the IDL is merged with
3448
+ # documentation defined via the config at normalization time, where
3449
+ # documentation provided by config rules overrides IDL provided. A number of
3450
+ # constructs specific to the API platform are supported in documentation text.
3451
+ # In order to reference a proto element, the following notation can be used: [
3452
+ # fully.qualified.proto.name][] To override the display text used for the link,
3453
+ # this can be used: [display text][fully.qualified.proto.name] Text can be
3454
+ # excluded from doc using the following notation: (-- internal comment --) A few
3455
+ # directives are available in documentation. Note that directives must appear on
3456
+ # a single line to be properly identified. The `include` directive includes a
3457
+ # markdown file from an external source: (== include path/to/file ==) The `
3458
+ # resource_for` directive marks a message to be the resource of a collection in
3459
+ # REST view. If it is not specified, tools attempt to infer the resource from
3460
+ # the operations in a collection: (== resource_for v1.shelves.books ==) The
3461
+ # directive `suppress_warning` does not directly affect documentation and is
3462
+ # documented together with service config validation.
3463
+ # Corresponds to the JSON property `documentation`
3464
+ # @return [Google::Apis::ServicenetworkingV1::Documentation]
3465
+ attr_accessor :documentation
3466
+
3467
+ # Configuration for network endpoints. If this is empty, then an endpoint with
3468
+ # the same name as the service is automatically generated to service all defined
3469
+ # APIs.
3470
+ # Corresponds to the JSON property `endpoints`
3471
+ # @return [Array<Google::Apis::ServicenetworkingV1::Endpoint>]
3472
+ attr_accessor :endpoints
3473
+
3474
+ # A list of all enum types included in this API service. Enums referenced
3475
+ # directly or indirectly by the `apis` are automatically included. Enums which
3476
+ # are not referenced but shall be included should be listed here by name.
3477
+ # Example: enums: - name: google.someapi.v1.SomeEnum
3478
+ # Corresponds to the JSON property `enums`
3479
+ # @return [Array<Google::Apis::ServicenetworkingV1::Enum>]
3480
+ attr_accessor :enums
3481
+
3482
+ # Defines the HTTP configuration for an API service. It contains a list of
3483
+ # HttpRule, each specifying the mapping of an RPC method to one or more HTTP
3484
+ # REST API methods.
3485
+ # Corresponds to the JSON property `http`
3486
+ # @return [Google::Apis::ServicenetworkingV1::Http]
3487
+ attr_accessor :http
3488
+
3489
+ # A unique ID for a specific instance of this message, typically assigned by the
3490
+ # client for tracking purpose. Must be no longer than 63 characters and only
3491
+ # lower case letters, digits, '.', '_' and '-' are allowed. If empty, the server
3492
+ # may choose to generate one instead.
3493
+ # Corresponds to the JSON property `id`
3494
+ # @return [String]
3495
+ attr_accessor :id
3496
+
3497
+ # Logging configuration of the service. The following example shows how to
3498
+ # configure logs to be sent to the producer and consumer projects. In the
3499
+ # example, the `activity_history` log is sent to both the producer and consumer
3500
+ # projects, whereas the `purchase_history` log is only sent to the producer
3501
+ # project. monitored_resources: - type: library.googleapis.com/branch labels: -
3502
+ # key: /city description: The city where the library branch is located in. - key:
3503
+ # /name description: The name of the branch. logs: - name: activity_history
3504
+ # labels: - key: /customer_id - name: purchase_history logging:
3505
+ # producer_destinations: - monitored_resource: library.googleapis.com/branch
3506
+ # logs: - activity_history - purchase_history consumer_destinations: -
3507
+ # monitored_resource: library.googleapis.com/branch logs: - activity_history
3508
+ # Corresponds to the JSON property `logging`
3509
+ # @return [Google::Apis::ServicenetworkingV1::Logging]
3510
+ attr_accessor :logging
3511
+
3512
+ # Defines the logs used by this service.
3513
+ # Corresponds to the JSON property `logs`
3514
+ # @return [Array<Google::Apis::ServicenetworkingV1::LogDescriptor>]
3515
+ attr_accessor :logs
3516
+
3517
+ # Defines the metrics used by this service.
3518
+ # Corresponds to the JSON property `metrics`
3519
+ # @return [Array<Google::Apis::ServicenetworkingV1::MetricDescriptor>]
3520
+ attr_accessor :metrics
3521
+
3522
+ # Defines the monitored resources used by this service. This is required by the
3523
+ # Service.monitoring and Service.logging configurations.
3524
+ # Corresponds to the JSON property `monitoredResources`
3525
+ # @return [Array<Google::Apis::ServicenetworkingV1::MonitoredResourceDescriptor>]
3526
+ attr_accessor :monitored_resources
3527
+
3528
+ # Monitoring configuration of the service. The example below shows how to
3529
+ # configure monitored resources and metrics for monitoring. In the example, a
3530
+ # monitored resource and two metrics are defined. The `library.googleapis.com/
3531
+ # book/returned_count` metric is sent to both producer and consumer projects,
3532
+ # whereas the `library.googleapis.com/book/num_overdue` metric is only sent to
3533
+ # the consumer project. monitored_resources: - type: library.googleapis.com/
3534
+ # Branch display_name: "Library Branch" description: "A branch of a library."
3535
+ # launch_stage: GA labels: - key: resource_container description: "The Cloud
3536
+ # container (ie. project id) for the Branch." - key: location description: "The
3537
+ # location of the library branch." - key: branch_id description: "The id of the
3538
+ # branch." metrics: - name: library.googleapis.com/book/returned_count
3539
+ # display_name: "Books Returned" description: "The count of books that have been
3540
+ # returned." launch_stage: GA metric_kind: DELTA value_type: INT64 unit: "1"
3541
+ # labels: - key: customer_id description: "The id of the customer." - name:
3542
+ # library.googleapis.com/book/num_overdue display_name: "Books Overdue"
3543
+ # description: "The current number of overdue books." launch_stage: GA
3544
+ # metric_kind: GAUGE value_type: INT64 unit: "1" labels: - key: customer_id
3545
+ # description: "The id of the customer." monitoring: producer_destinations: -
3546
+ # monitored_resource: library.googleapis.com/Branch metrics: - library.
3547
+ # googleapis.com/book/returned_count consumer_destinations: - monitored_resource:
3548
+ # library.googleapis.com/Branch metrics: - library.googleapis.com/book/
3549
+ # returned_count - library.googleapis.com/book/num_overdue
3550
+ # Corresponds to the JSON property `monitoring`
3551
+ # @return [Google::Apis::ServicenetworkingV1::Monitoring]
3552
+ attr_accessor :monitoring
3553
+
3554
+ # The service name, which is a DNS-like logical identifier for the service, such
3555
+ # as `calendar.googleapis.com`. The service name typically goes through DNS
3556
+ # verification to make sure the owner of the service also owns the DNS name.
3557
+ # Corresponds to the JSON property `name`
3558
+ # @return [String]
3559
+ attr_accessor :name
3560
+
3561
+ # The Google project that owns this service.
3562
+ # Corresponds to the JSON property `producerProjectId`
3563
+ # @return [String]
3564
+ attr_accessor :producer_project_id
3565
+
3566
+ # Quota configuration helps to achieve fairness and budgeting in service usage.
3567
+ # The metric based quota configuration works this way: - The service
3568
+ # configuration defines a set of metrics. - For API calls, the quota.
3569
+ # metric_rules maps methods to metrics with corresponding costs. - The quota.
3570
+ # limits defines limits on the metrics, which will be used for quota checks at
3571
+ # runtime. An example quota configuration in yaml format: quota: limits: - name:
3572
+ # apiWriteQpsPerProject metric: library.googleapis.com/write_calls unit: "1/min/`
3573
+ # project`" # rate limit for consumer projects values: STANDARD: 10000 # The
3574
+ # metric rules bind all methods to the read_calls metric, # except for the
3575
+ # UpdateBook and DeleteBook methods. These two methods # are mapped to the
3576
+ # write_calls metric, with the UpdateBook method # consuming at twice rate as
3577
+ # the DeleteBook method. metric_rules: - selector: "*" metric_costs: library.
3578
+ # googleapis.com/read_calls: 1 - selector: google.example.library.v1.
3579
+ # LibraryService.UpdateBook metric_costs: library.googleapis.com/write_calls: 2 -
3580
+ # selector: google.example.library.v1.LibraryService.DeleteBook metric_costs:
3581
+ # library.googleapis.com/write_calls: 1 Corresponding Metric definition: metrics:
3582
+ # - name: library.googleapis.com/read_calls display_name: Read requests
3583
+ # metric_kind: DELTA value_type: INT64 - name: library.googleapis.com/
3584
+ # write_calls display_name: Write requests metric_kind: DELTA value_type: INT64
3585
+ # Corresponds to the JSON property `quota`
3586
+ # @return [Google::Apis::ServicenetworkingV1::Quota]
3587
+ attr_accessor :quota
3588
+
3589
+ # Source information used to create a Service Config
3590
+ # Corresponds to the JSON property `sourceInfo`
3591
+ # @return [Google::Apis::ServicenetworkingV1::SourceInfo]
3592
+ attr_accessor :source_info
3593
+
3594
+ # ### System parameter configuration A system parameter is a special kind of
3595
+ # parameter defined by the API system, not by an individual API. It is typically
3596
+ # mapped to an HTTP header and/or a URL query parameter. This configuration
3597
+ # specifies which methods change the names of the system parameters.
3598
+ # Corresponds to the JSON property `systemParameters`
3599
+ # @return [Google::Apis::ServicenetworkingV1::SystemParameters]
3600
+ attr_accessor :system_parameters
3601
+
3602
+ # A list of all proto message types included in this API service. It serves
3603
+ # similar purpose as [google.api.Service.types], except that these types are not
3604
+ # needed by user-defined APIs. Therefore, they will not show up in the generated
3605
+ # discovery doc. This field should only be used to define system APIs in ESF.
3606
+ # Corresponds to the JSON property `systemTypes`
3607
+ # @return [Array<Google::Apis::ServicenetworkingV1::Type>]
3608
+ attr_accessor :system_types
3609
+
3610
+ # The product title for this service.
3611
+ # Corresponds to the JSON property `title`
3612
+ # @return [String]
3613
+ attr_accessor :title
3614
+
3615
+ # A list of all proto message types included in this API service. Types
3616
+ # referenced directly or indirectly by the `apis` are automatically included.
3617
+ # Messages which are not referenced but shall be included, such as types used by
3618
+ # the `google.protobuf.Any` type, should be listed here by name. Example: types:
3619
+ # - name: google.protobuf.Int32
3620
+ # Corresponds to the JSON property `types`
3621
+ # @return [Array<Google::Apis::ServicenetworkingV1::Type>]
3622
+ attr_accessor :types
3623
+
3624
+ # Configuration controlling usage of a service.
3625
+ # Corresponds to the JSON property `usage`
3626
+ # @return [Google::Apis::ServicenetworkingV1::Usage]
3627
+ attr_accessor :usage
3628
+
3629
+ def initialize(**args)
3630
+ update!(**args)
3631
+ end
3632
+
3633
+ # Update properties of this object
3634
+ def update!(**args)
3635
+ @apis = args[:apis] if args.key?(:apis)
3636
+ @authentication = args[:authentication] if args.key?(:authentication)
3637
+ @backend = args[:backend] if args.key?(:backend)
3638
+ @billing = args[:billing] if args.key?(:billing)
3639
+ @config_version = args[:config_version] if args.key?(:config_version)
3640
+ @context = args[:context] if args.key?(:context)
3641
+ @control = args[:control] if args.key?(:control)
3642
+ @custom_error = args[:custom_error] if args.key?(:custom_error)
3643
+ @documentation = args[:documentation] if args.key?(:documentation)
3644
+ @endpoints = args[:endpoints] if args.key?(:endpoints)
3645
+ @enums = args[:enums] if args.key?(:enums)
3646
+ @http = args[:http] if args.key?(:http)
3647
+ @id = args[:id] if args.key?(:id)
3648
+ @logging = args[:logging] if args.key?(:logging)
3649
+ @logs = args[:logs] if args.key?(:logs)
3650
+ @metrics = args[:metrics] if args.key?(:metrics)
3651
+ @monitored_resources = args[:monitored_resources] if args.key?(:monitored_resources)
3652
+ @monitoring = args[:monitoring] if args.key?(:monitoring)
3653
+ @name = args[:name] if args.key?(:name)
3654
+ @producer_project_id = args[:producer_project_id] if args.key?(:producer_project_id)
3655
+ @quota = args[:quota] if args.key?(:quota)
3656
+ @source_info = args[:source_info] if args.key?(:source_info)
3657
+ @system_parameters = args[:system_parameters] if args.key?(:system_parameters)
3658
+ @system_types = args[:system_types] if args.key?(:system_types)
3659
+ @title = args[:title] if args.key?(:title)
3660
+ @types = args[:types] if args.key?(:types)
3661
+ @usage = args[:usage] if args.key?(:usage)
3662
+ end
3663
+ end
3664
+
3665
+ # `SourceContext` represents information about the source of a protobuf element,
3666
+ # like the file in which it is defined.
3667
+ class SourceContext
3668
+ include Google::Apis::Core::Hashable
3669
+
3670
+ # The path-qualified name of the .proto file that contained the associated
3671
+ # protobuf element. For example: `"google/protobuf/source_context.proto"`.
3672
+ # Corresponds to the JSON property `fileName`
3673
+ # @return [String]
3674
+ attr_accessor :file_name
3675
+
3676
+ def initialize(**args)
3677
+ update!(**args)
3678
+ end
3679
+
3680
+ # Update properties of this object
3681
+ def update!(**args)
3682
+ @file_name = args[:file_name] if args.key?(:file_name)
3683
+ end
3684
+ end
3685
+
3686
+ # Source information used to create a Service Config
3687
+ class SourceInfo
3688
+ include Google::Apis::Core::Hashable
3689
+
3690
+ # All files used during config generation.
3691
+ # Corresponds to the JSON property `sourceFiles`
3692
+ # @return [Array<Hash<String,Object>>]
3693
+ attr_accessor :source_files
3694
+
3695
+ def initialize(**args)
3696
+ update!(**args)
3697
+ end
3698
+
3699
+ # Update properties of this object
3700
+ def update!(**args)
3701
+ @source_files = args[:source_files] if args.key?(:source_files)
3702
+ end
3703
+ end
3704
+
3705
+ # The `Status` type defines a logical error model that is suitable for different
3706
+ # programming environments, including REST APIs and RPC APIs. It is used by [
3707
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
3708
+ # data: error code, error message, and error details. You can find out more
3709
+ # about this error model and how to work with it in the [API Design Guide](https:
3710
+ # //cloud.google.com/apis/design/errors).
3711
+ class Status
3712
+ include Google::Apis::Core::Hashable
3713
+
3714
+ # The status code, which should be an enum value of google.rpc.Code.
3715
+ # Corresponds to the JSON property `code`
3716
+ # @return [Fixnum]
3717
+ attr_accessor :code
3718
+
3719
+ # A list of messages that carry the error details. There is a common set of
3720
+ # message types for APIs to use.
3721
+ # Corresponds to the JSON property `details`
3722
+ # @return [Array<Hash<String,Object>>]
3723
+ attr_accessor :details
3724
+
3725
+ # A developer-facing error message, which should be in English. Any user-facing
3726
+ # error message should be localized and sent in the google.rpc.Status.details
3727
+ # field, or localized by the client.
3728
+ # Corresponds to the JSON property `message`
3729
+ # @return [String]
3730
+ attr_accessor :message
3731
+
3732
+ def initialize(**args)
3733
+ update!(**args)
3734
+ end
3735
+
3736
+ # Update properties of this object
3737
+ def update!(**args)
3738
+ @code = args[:code] if args.key?(:code)
3739
+ @details = args[:details] if args.key?(:details)
3740
+ @message = args[:message] if args.key?(:message)
3741
+ end
3742
+ end
3743
+
3744
+ # Represents a subnet that was created or discovered by a private access
3745
+ # management service.
3746
+ class Subnetwork
3747
+ include Google::Apis::Core::Hashable
3748
+
3749
+ # Subnetwork CIDR range in `10.x.x.x/y` format.
3750
+ # Corresponds to the JSON property `ipCidrRange`
3751
+ # @return [String]
3752
+ attr_accessor :ip_cidr_range
3753
+
3754
+ # Subnetwork name. See https://cloud.google.com/compute/docs/vpc/
3755
+ # Corresponds to the JSON property `name`
3756
+ # @return [String]
3757
+ attr_accessor :name
3758
+
3759
+ # In the Shared VPC host project, the VPC network that's peered with the
3760
+ # consumer network. For example: `projects/1234321/global/networks/host-network`
3761
+ # Corresponds to the JSON property `network`
3762
+ # @return [String]
3763
+ attr_accessor :network
3764
+
3765
+ # This is a discovered subnet that is not within the current consumer allocated
3766
+ # ranges.
3767
+ # Corresponds to the JSON property `outsideAllocation`
3768
+ # @return [Boolean]
3769
+ attr_accessor :outside_allocation
3770
+ alias_method :outside_allocation?, :outside_allocation
3771
+
3772
+ # List of secondary IP ranges in this subnetwork.
3773
+ # Corresponds to the JSON property `secondaryIpRanges`
3774
+ # @return [Array<Google::Apis::ServicenetworkingV1::SecondaryIpRange>]
3775
+ attr_accessor :secondary_ip_ranges
3776
+
3777
+ def initialize(**args)
3778
+ update!(**args)
3779
+ end
3780
+
3781
+ # Update properties of this object
3782
+ def update!(**args)
3783
+ @ip_cidr_range = args[:ip_cidr_range] if args.key?(:ip_cidr_range)
3784
+ @name = args[:name] if args.key?(:name)
3785
+ @network = args[:network] if args.key?(:network)
3786
+ @outside_allocation = args[:outside_allocation] if args.key?(:outside_allocation)
3787
+ @secondary_ip_ranges = args[:secondary_ip_ranges] if args.key?(:secondary_ip_ranges)
3788
+ end
3789
+ end
3790
+
3791
+ # Define a parameter's name and location. The parameter may be passed as either
3792
+ # an HTTP header or a URL query parameter, and if both are passed the behavior
3793
+ # is implementation-dependent.
3794
+ class SystemParameter
3795
+ include Google::Apis::Core::Hashable
3796
+
3797
+ # Define the HTTP header name to use for the parameter. It is case insensitive.
3798
+ # Corresponds to the JSON property `httpHeader`
3799
+ # @return [String]
3800
+ attr_accessor :http_header
3801
+
3802
+ # Define the name of the parameter, such as "api_key" . It is case sensitive.
3803
+ # Corresponds to the JSON property `name`
3804
+ # @return [String]
3805
+ attr_accessor :name
3806
+
3807
+ # Define the URL query parameter name to use for the parameter. It is case
3808
+ # sensitive.
3809
+ # Corresponds to the JSON property `urlQueryParameter`
3810
+ # @return [String]
3811
+ attr_accessor :url_query_parameter
3812
+
3813
+ def initialize(**args)
3814
+ update!(**args)
3815
+ end
3816
+
3817
+ # Update properties of this object
3818
+ def update!(**args)
3819
+ @http_header = args[:http_header] if args.key?(:http_header)
3820
+ @name = args[:name] if args.key?(:name)
3821
+ @url_query_parameter = args[:url_query_parameter] if args.key?(:url_query_parameter)
3822
+ end
3823
+ end
3824
+
3825
+ # Define a system parameter rule mapping system parameter definitions to methods.
3826
+ class SystemParameterRule
3827
+ include Google::Apis::Core::Hashable
3828
+
3829
+ # Define parameters. Multiple names may be defined for a parameter. For a given
3830
+ # method call, only one of them should be used. If multiple names are used the
3831
+ # behavior is implementation-dependent. If none of the specified names are
3832
+ # present the behavior is parameter-dependent.
3833
+ # Corresponds to the JSON property `parameters`
3834
+ # @return [Array<Google::Apis::ServicenetworkingV1::SystemParameter>]
3835
+ attr_accessor :parameters
3836
+
3837
+ # Selects the methods to which this rule applies. Use '*' to indicate all
3838
+ # methods in all APIs. Refer to selector for syntax details.
3839
+ # Corresponds to the JSON property `selector`
3840
+ # @return [String]
3841
+ attr_accessor :selector
3842
+
3843
+ def initialize(**args)
3844
+ update!(**args)
3845
+ end
3846
+
3847
+ # Update properties of this object
3848
+ def update!(**args)
3849
+ @parameters = args[:parameters] if args.key?(:parameters)
3850
+ @selector = args[:selector] if args.key?(:selector)
3851
+ end
3852
+ end
3853
+
3854
+ # ### System parameter configuration A system parameter is a special kind of
3855
+ # parameter defined by the API system, not by an individual API. It is typically
3856
+ # mapped to an HTTP header and/or a URL query parameter. This configuration
3857
+ # specifies which methods change the names of the system parameters.
3858
+ class SystemParameters
3859
+ include Google::Apis::Core::Hashable
3860
+
3861
+ # Define system parameters. The parameters defined here will override the
3862
+ # default parameters implemented by the system. If this field is missing from
3863
+ # the service config, default system parameters will be used. Default system
3864
+ # parameters and names is implementation-dependent. Example: define api key for
3865
+ # all methods system_parameters rules: - selector: "*" parameters: - name:
3866
+ # api_key url_query_parameter: api_key Example: define 2 api key names for a
3867
+ # specific method. system_parameters rules: - selector: "/ListShelves"
3868
+ # parameters: - name: api_key http_header: Api-Key1 - name: api_key http_header:
3869
+ # Api-Key2 **NOTE:** All service configuration rules follow "last one wins"
3870
+ # order.
3871
+ # Corresponds to the JSON property `rules`
3872
+ # @return [Array<Google::Apis::ServicenetworkingV1::SystemParameterRule>]
3873
+ attr_accessor :rules
3874
+
3875
+ def initialize(**args)
3876
+ update!(**args)
3877
+ end
3878
+
3879
+ # Update properties of this object
3880
+ def update!(**args)
3881
+ @rules = args[:rules] if args.key?(:rules)
3882
+ end
3883
+ end
3884
+
3885
+ # A protocol buffer message type.
3886
+ class Type
3887
+ include Google::Apis::Core::Hashable
3888
+
3889
+ # The list of fields.
3890
+ # Corresponds to the JSON property `fields`
3891
+ # @return [Array<Google::Apis::ServicenetworkingV1::Field>]
3892
+ attr_accessor :fields
3893
+
3894
+ # The fully qualified message name.
3895
+ # Corresponds to the JSON property `name`
3896
+ # @return [String]
3897
+ attr_accessor :name
3898
+
3899
+ # The list of types appearing in `oneof` definitions in this type.
3900
+ # Corresponds to the JSON property `oneofs`
3901
+ # @return [Array<String>]
3902
+ attr_accessor :oneofs
3903
+
3904
+ # The protocol buffer options.
3905
+ # Corresponds to the JSON property `options`
3906
+ # @return [Array<Google::Apis::ServicenetworkingV1::Option>]
3907
+ attr_accessor :options
3908
+
3909
+ # `SourceContext` represents information about the source of a protobuf element,
3910
+ # like the file in which it is defined.
3911
+ # Corresponds to the JSON property `sourceContext`
3912
+ # @return [Google::Apis::ServicenetworkingV1::SourceContext]
3913
+ attr_accessor :source_context
3914
+
3915
+ # The source syntax.
3916
+ # Corresponds to the JSON property `syntax`
3917
+ # @return [String]
3918
+ attr_accessor :syntax
3919
+
3920
+ def initialize(**args)
3921
+ update!(**args)
3922
+ end
3923
+
3924
+ # Update properties of this object
3925
+ def update!(**args)
3926
+ @fields = args[:fields] if args.key?(:fields)
3927
+ @name = args[:name] if args.key?(:name)
3928
+ @oneofs = args[:oneofs] if args.key?(:oneofs)
3929
+ @options = args[:options] if args.key?(:options)
3930
+ @source_context = args[:source_context] if args.key?(:source_context)
3931
+ @syntax = args[:syntax] if args.key?(:syntax)
3932
+ end
3933
+ end
3934
+
3935
+ # Request to update the configuration of a service networking connection
3936
+ # including the import/export of custom routes and subnetwork routes with public
3937
+ # IP.
3938
+ class UpdateConsumerConfigRequest
3939
+ include Google::Apis::Core::Hashable
3940
+
3941
+ # Configuration information for a private service access connection.
3942
+ # Corresponds to the JSON property `consumerConfig`
3943
+ # @return [Google::Apis::ServicenetworkingV1::ConsumerConfig]
3944
+ attr_accessor :consumer_config
3945
+
3946
+ def initialize(**args)
3947
+ update!(**args)
3948
+ end
3949
+
3950
+ # Update properties of this object
3951
+ def update!(**args)
3952
+ @consumer_config = args[:consumer_config] if args.key?(:consumer_config)
3953
+ end
3954
+ end
3955
+
3956
+ # Metadata provided through GetOperation request for the LRO generated by
3957
+ # UpdateDnsRecordSet API
3958
+ class UpdateDnsRecordSetMetadata
3959
+ include Google::Apis::Core::Hashable
3960
+
3961
+ def initialize(**args)
3962
+ update!(**args)
3963
+ end
3964
+
3965
+ # Update properties of this object
3966
+ def update!(**args)
3967
+ end
3968
+ end
3969
+
3970
+ # Request to update a record set from a private managed DNS zone in the shared
3971
+ # producer host project. The name, type, ttl, and data values of the existing
3972
+ # record set must all exactly match an existing record set in the specified zone.
3973
+ class UpdateDnsRecordSetRequest
3974
+ include Google::Apis::Core::Hashable
3975
+
3976
+ # Required. The network that the consumer is using to connect with services.
3977
+ # Must be in the form of projects/`project`/global/networks/`network` `project`
3978
+ # is the project number, as in '12345' `network` is the network name.
3979
+ # Corresponds to the JSON property `consumerNetwork`
3980
+ # @return [String]
3981
+ attr_accessor :consumer_network
3982
+
3983
+ # Represents a DNS record set resource.
3984
+ # Corresponds to the JSON property `existingDnsRecordSet`
3985
+ # @return [Google::Apis::ServicenetworkingV1::DnsRecordSet]
3986
+ attr_accessor :existing_dns_record_set
3987
+
3988
+ # Represents a DNS record set resource.
3989
+ # Corresponds to the JSON property `newDnsRecordSet`
3990
+ # @return [Google::Apis::ServicenetworkingV1::DnsRecordSet]
3991
+ attr_accessor :new_dns_record_set
3992
+
3993
+ # Required. The name of the private DNS zone in the shared producer host project
3994
+ # from which the record set will be removed.
3995
+ # Corresponds to the JSON property `zone`
3996
+ # @return [String]
3997
+ attr_accessor :zone
3998
+
3999
+ def initialize(**args)
4000
+ update!(**args)
4001
+ end
4002
+
4003
+ # Update properties of this object
4004
+ def update!(**args)
4005
+ @consumer_network = args[:consumer_network] if args.key?(:consumer_network)
4006
+ @existing_dns_record_set = args[:existing_dns_record_set] if args.key?(:existing_dns_record_set)
4007
+ @new_dns_record_set = args[:new_dns_record_set] if args.key?(:new_dns_record_set)
4008
+ @zone = args[:zone] if args.key?(:zone)
4009
+ end
4010
+ end
4011
+
4012
+ # Configuration controlling usage of a service.
4013
+ class Usage
4014
+ include Google::Apis::Core::Hashable
4015
+
4016
+ # The full resource name of a channel used for sending notifications to the
4017
+ # service producer. Google Service Management currently only supports [Google
4018
+ # Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification channel. To
4019
+ # use Google Cloud Pub/Sub as the channel, this must be the name of a Cloud Pub/
4020
+ # Sub topic that uses the Cloud Pub/Sub topic name format documented in https://
4021
+ # cloud.google.com/pubsub/docs/overview.
4022
+ # Corresponds to the JSON property `producerNotificationChannel`
4023
+ # @return [String]
4024
+ attr_accessor :producer_notification_channel
4025
+
4026
+ # Requirements that must be satisfied before a consumer project can use the
4027
+ # service. Each requirement is of the form /; for example 'serviceusage.
4028
+ # googleapis.com/billing-enabled'.
4029
+ # Corresponds to the JSON property `requirements`
4030
+ # @return [Array<String>]
4031
+ attr_accessor :requirements
4032
+
4033
+ # A list of usage rules that apply to individual API methods. **NOTE:** All
4034
+ # service configuration rules follow "last one wins" order.
4035
+ # Corresponds to the JSON property `rules`
4036
+ # @return [Array<Google::Apis::ServicenetworkingV1::UsageRule>]
4037
+ attr_accessor :rules
4038
+
4039
+ def initialize(**args)
4040
+ update!(**args)
4041
+ end
4042
+
4043
+ # Update properties of this object
4044
+ def update!(**args)
4045
+ @producer_notification_channel = args[:producer_notification_channel] if args.key?(:producer_notification_channel)
4046
+ @requirements = args[:requirements] if args.key?(:requirements)
4047
+ @rules = args[:rules] if args.key?(:rules)
4048
+ end
4049
+ end
4050
+
4051
+ # Usage configuration rules for the service. NOTE: Under development. Use this
4052
+ # rule to configure unregistered calls for the service. Unregistered calls are
4053
+ # calls that do not contain consumer project identity. (Example: calls that do
4054
+ # not contain an API key). By default, API methods do not allow unregistered
4055
+ # calls, and each method call must be identified by a consumer project identity.
4056
+ # Use this rule to allow/disallow unregistered calls. Example of an API that
4057
+ # wants to allow unregistered calls for entire service. usage: rules: - selector:
4058
+ # "*" allow_unregistered_calls: true Example of a method that wants to allow
4059
+ # unregistered calls. usage: rules: - selector: "google.example.library.v1.
4060
+ # LibraryService.CreateBook" allow_unregistered_calls: true
4061
+ class UsageRule
4062
+ include Google::Apis::Core::Hashable
4063
+
4064
+ # If true, the selected method allows unregistered calls, e.g. calls that don't
4065
+ # identify any user or application.
4066
+ # Corresponds to the JSON property `allowUnregisteredCalls`
4067
+ # @return [Boolean]
4068
+ attr_accessor :allow_unregistered_calls
4069
+ alias_method :allow_unregistered_calls?, :allow_unregistered_calls
4070
+
4071
+ # Selects the methods to which this rule applies. Use '*' to indicate all
4072
+ # methods in all APIs. Refer to selector for syntax details.
4073
+ # Corresponds to the JSON property `selector`
4074
+ # @return [String]
4075
+ attr_accessor :selector
4076
+
4077
+ # If true, the selected method should skip service control and the control plane
4078
+ # features, such as quota and billing, will not be available. This flag is used
4079
+ # by Google Cloud Endpoints to bypass checks for internal methods, such as
4080
+ # service health check methods.
4081
+ # Corresponds to the JSON property `skipServiceControl`
4082
+ # @return [Boolean]
4083
+ attr_accessor :skip_service_control
4084
+ alias_method :skip_service_control?, :skip_service_control
4085
+
4086
+ def initialize(**args)
4087
+ update!(**args)
4088
+ end
4089
+
4090
+ # Update properties of this object
4091
+ def update!(**args)
4092
+ @allow_unregistered_calls = args[:allow_unregistered_calls] if args.key?(:allow_unregistered_calls)
4093
+ @selector = args[:selector] if args.key?(:selector)
4094
+ @skip_service_control = args[:skip_service_control] if args.key?(:skip_service_control)
4095
+ end
4096
+ end
4097
+
4098
+ #
4099
+ class ValidateConsumerConfigRequest
4100
+ include Google::Apis::Core::Hashable
4101
+
4102
+ # Required. The network that the consumer is using to connect with services.
4103
+ # Must be in the form of projects/`project`/global/networks/`network` `project`
4104
+ # is a project number, as in '12345' `network` is network name.
4105
+ # Corresponds to the JSON property `consumerNetwork`
4106
+ # @return [String]
4107
+ attr_accessor :consumer_network
4108
+
4109
+ # Represents a consumer project.
4110
+ # Corresponds to the JSON property `consumerProject`
4111
+ # @return [Google::Apis::ServicenetworkingV1::ConsumerProject]
4112
+ attr_accessor :consumer_project
4113
+
4114
+ # Represents a range reservation.
4115
+ # Corresponds to the JSON property `rangeReservation`
4116
+ # @return [Google::Apis::ServicenetworkingV1::RangeReservation]
4117
+ attr_accessor :range_reservation
4118
+
4119
+ # The validations will be performed in the order listed in the ValidationError
4120
+ # enum. The first failure will return. If a validation is not requested, then
4121
+ # the next one will be performed. SERVICE_NETWORKING_NOT_ENABLED and
4122
+ # NETWORK_NOT_PEERED checks are performed for all requests where validation is
4123
+ # requested. NETWORK_NOT_FOUND and NETWORK_DISCONNECTED checks are done for
4124
+ # requests that have validate_network set to true.
4125
+ # Corresponds to the JSON property `validateNetwork`
4126
+ # @return [Boolean]
4127
+ attr_accessor :validate_network
4128
+ alias_method :validate_network?, :validate_network
4129
+
4130
+ def initialize(**args)
4131
+ update!(**args)
4132
+ end
4133
+
4134
+ # Update properties of this object
4135
+ def update!(**args)
4136
+ @consumer_network = args[:consumer_network] if args.key?(:consumer_network)
4137
+ @consumer_project = args[:consumer_project] if args.key?(:consumer_project)
4138
+ @range_reservation = args[:range_reservation] if args.key?(:range_reservation)
4139
+ @validate_network = args[:validate_network] if args.key?(:validate_network)
4140
+ end
4141
+ end
4142
+
4143
+ #
4144
+ class ValidateConsumerConfigResponse
4145
+ include Google::Apis::Core::Hashable
4146
+
4147
+ #
4148
+ # Corresponds to the JSON property `isValid`
4149
+ # @return [Boolean]
4150
+ attr_accessor :is_valid
4151
+ alias_method :is_valid?, :is_valid
4152
+
4153
+ #
4154
+ # Corresponds to the JSON property `validationError`
4155
+ # @return [String]
4156
+ attr_accessor :validation_error
4157
+
4158
+ def initialize(**args)
4159
+ update!(**args)
4160
+ end
4161
+
4162
+ # Update properties of this object
4163
+ def update!(**args)
4164
+ @is_valid = args[:is_valid] if args.key?(:is_valid)
4165
+ @validation_error = args[:validation_error] if args.key?(:validation_error)
4166
+ end
4167
+ end
4168
+ end
4169
+ end
4170
+ end