grafeas 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +11 -0
  3. data/AUTHENTICATION.md +199 -0
  4. data/LICENSE +201 -0
  5. data/README.md +55 -25
  6. data/lib/grafeas.rb +151 -2
  7. data/lib/grafeas/v1.rb +155 -0
  8. data/lib/grafeas/v1/attestation_pb.rb +27 -0
  9. data/lib/grafeas/v1/build_pb.rb +23 -0
  10. data/lib/grafeas/v1/common_pb.rb +34 -0
  11. data/lib/grafeas/v1/credentials.rb +37 -0
  12. data/lib/grafeas/v1/cvss_pb.rb +67 -0
  13. data/lib/grafeas/v1/deployment_pb.rb +35 -0
  14. data/lib/grafeas/v1/discovery_pb.rb +40 -0
  15. data/lib/grafeas/v1/doc/google/protobuf/any.rb +131 -0
  16. data/lib/grafeas/v1/doc/google/protobuf/empty.rb +29 -0
  17. data/lib/grafeas/v1/doc/google/protobuf/field_mask.rb +222 -0
  18. data/lib/grafeas/v1/doc/google/protobuf/timestamp.rb +113 -0
  19. data/lib/grafeas/v1/doc/google/rpc/status.rb +87 -0
  20. data/lib/grafeas/v1/doc/grafeas/v1/attestation.rb +64 -0
  21. data/lib/grafeas/v1/doc/grafeas/v1/build.rb +44 -0
  22. data/lib/grafeas/v1/doc/grafeas/v1/common.rb +105 -0
  23. data/lib/grafeas/v1/doc/grafeas/v1/cvss.rb +104 -0
  24. data/lib/grafeas/v1/doc/grafeas/v1/deployment.rb +64 -0
  25. data/lib/grafeas/v1/doc/grafeas/v1/discovery.rb +76 -0
  26. data/lib/grafeas/v1/doc/grafeas/v1/grafeas.rb +322 -0
  27. data/lib/grafeas/v1/doc/grafeas/v1/image.rb +79 -0
  28. data/lib/grafeas/v1/doc/grafeas/v1/package.rb +125 -0
  29. data/lib/grafeas/v1/doc/grafeas/v1/provenance.rb +248 -0
  30. data/lib/grafeas/v1/doc/grafeas/v1/vulnerability.rb +214 -0
  31. data/lib/grafeas/v1/grafeas_client.rb +961 -0
  32. data/lib/grafeas/v1/grafeas_client_config.json +96 -0
  33. data/lib/grafeas/v1/grafeas_pb.rb +163 -0
  34. data/lib/grafeas/v1/grafeas_services_pb.rb +86 -0
  35. data/lib/grafeas/v1/image_pb.rb +36 -0
  36. data/lib/grafeas/v1/package_pb.rb +59 -0
  37. data/lib/grafeas/v1/provenance_pb.rb +116 -0
  38. data/lib/grafeas/v1/vulnerability_pb.rb +81 -0
  39. data/lib/grafeas/version.rb +16 -1
  40. metadata +111 -31
  41. data/.gitignore +0 -8
  42. data/.travis.yml +0 -5
  43. data/Gemfile +0 -6
  44. data/Gemfile.lock +0 -22
  45. data/LICENSE.txt +0 -21
  46. data/Rakefile +0 -10
  47. data/bin/console +0 -14
  48. data/bin/setup +0 -8
  49. data/grafeas.gemspec +0 -26
@@ -0,0 +1,214 @@
1
+ # Copyright 2019 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
+ # https://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
+
16
+ module Grafeas
17
+ module V1
18
+ # A security vulnerability that can be found in resources.
19
+ # @!attribute [rw] cvss_score
20
+ # @return [Float]
21
+ # The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10
22
+ # where 0 indicates low severity and 10 indicates high severity.
23
+ # @!attribute [rw] severity
24
+ # @return [Grafeas::V1::Severity]
25
+ # The note provider assigned severity of this vulnerability.
26
+ # @!attribute [rw] details
27
+ # @return [Array<Grafeas::V1::VulnerabilityNote::Detail>]
28
+ # Details of all known distros and packages affected by this vulnerability.
29
+ # @!attribute [rw] cvss_v3
30
+ # @return [Grafeas::V1::CVSSv3]
31
+ # The full description of the CVSSv3 for this vulnerability.
32
+ # @!attribute [rw] windows_details
33
+ # @return [Array<Grafeas::V1::VulnerabilityNote::WindowsDetail>]
34
+ # Windows details get their own format because the information format and
35
+ # model don't match a normal detail. Specifically Windows updates are done as
36
+ # patches, thus Windows vulnerabilities really are a missing package, rather
37
+ # than a package being at an incorrect version.
38
+ class VulnerabilityNote
39
+ # A detail for a distro and package affected by this vulnerability and its
40
+ # associated fix (if one is available).
41
+ # @!attribute [rw] severity_name
42
+ # @return [String]
43
+ # The distro assigned severity of this vulnerability.
44
+ # @!attribute [rw] description
45
+ # @return [String]
46
+ # A vendor-specific description of this vulnerability.
47
+ # @!attribute [rw] package_type
48
+ # @return [String]
49
+ # The type of package; whether native or non native (e.g., ruby gems,
50
+ # node.js packages, etc.).
51
+ # @!attribute [rw] affected_cpe_uri
52
+ # @return [String]
53
+ # Required. The [CPE URI](https://cpe.mitre.org/specification/) this
54
+ # vulnerability affects.
55
+ # @!attribute [rw] affected_package
56
+ # @return [String]
57
+ # Required. The package this vulnerability affects.
58
+ # @!attribute [rw] affected_version_start
59
+ # @return [Grafeas::V1::Version]
60
+ # The version number at the start of an interval in which this
61
+ # vulnerability exists. A vulnerability can affect a package between
62
+ # version numbers that are disjoint sets of intervals (example:
63
+ # [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be
64
+ # represented in its own Detail. If a specific affected version is provided
65
+ # by a vulnerability database, affected_version_start and
66
+ # affected_version_end will be the same in that Detail.
67
+ # @!attribute [rw] affected_version_end
68
+ # @return [Grafeas::V1::Version]
69
+ # The version number at the end of an interval in which this vulnerability
70
+ # exists. A vulnerability can affect a package between version numbers
71
+ # that are disjoint sets of intervals (example: [1.0.0-1.1.0],
72
+ # [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its
73
+ # own Detail. If a specific affected version is provided by a vulnerability
74
+ # database, affected_version_start and affected_version_end will be the
75
+ # same in that Detail.
76
+ # @!attribute [rw] fixed_cpe_uri
77
+ # @return [String]
78
+ # The distro recommended [CPE URI](https://cpe.mitre.org/specification/)
79
+ # to update to that contains a fix for this vulnerability. It is possible
80
+ # for this to be different from the affected_cpe_uri.
81
+ # @!attribute [rw] fixed_package
82
+ # @return [String]
83
+ # The distro recommended package to update to that contains a fix for this
84
+ # vulnerability. It is possible for this to be different from the
85
+ # affected_package.
86
+ # @!attribute [rw] fixed_version
87
+ # @return [Grafeas::V1::Version]
88
+ # The distro recommended version to update to that contains a
89
+ # fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no
90
+ # such version is yet available.
91
+ # @!attribute [rw] is_obsolete
92
+ # @return [true, false]
93
+ # Whether this detail is obsolete. Occurrences are expected not to point to
94
+ # obsolete details.
95
+ class Detail; end
96
+
97
+ # @!attribute [rw] cpe_uri
98
+ # @return [String]
99
+ # Required. The [CPE URI](https://cpe.mitre.org/specification/) this
100
+ # vulnerability affects.
101
+ # @!attribute [rw] name
102
+ # @return [String]
103
+ # Required. The name of this vulnerability.
104
+ # @!attribute [rw] description
105
+ # @return [String]
106
+ # The description of this vulnerability.
107
+ # @!attribute [rw] fixing_kbs
108
+ # @return [Array<Grafeas::V1::VulnerabilityNote::WindowsDetail::KnowledgeBase>]
109
+ # Required. The names of the KBs which have hotfixes to mitigate this
110
+ # vulnerability. Note that there may be multiple hotfixes (and thus
111
+ # multiple KBs) that mitigate a given vulnerability. Currently any listed
112
+ # KBs presence is considered a fix.
113
+ class WindowsDetail
114
+ # @!attribute [rw] name
115
+ # @return [String]
116
+ # The KB name (generally of the form KB[0-9]+ (e.g., KB123456)).
117
+ # @!attribute [rw] url
118
+ # @return [String]
119
+ # A link to the KB in the [Windows update catalog]
120
+ # (https://www.catalog.update.microsoft.com/).
121
+ class KnowledgeBase; end
122
+ end
123
+ end
124
+
125
+ # An occurrence of a severity vulnerability on a resource.
126
+ # @!attribute [rw] type
127
+ # @return [String]
128
+ # The type of package; whether native or non native (e.g., ruby gems, node.js
129
+ # packages, etc.).
130
+ # @!attribute [rw] severity
131
+ # @return [Grafeas::V1::Severity]
132
+ # Output only. The note provider assigned severity of this vulnerability.
133
+ # @!attribute [rw] cvss_score
134
+ # @return [Float]
135
+ # Output only. The CVSS score of this vulnerability. CVSS score is on a
136
+ # scale of 0 - 10 where 0 indicates low severity and 10 indicates high
137
+ # severity.
138
+ # @!attribute [rw] package_issue
139
+ # @return [Array<Grafeas::V1::VulnerabilityOccurrence::PackageIssue>]
140
+ # Required. The set of affected locations and their fixes (if available)
141
+ # within the associated resource.
142
+ # @!attribute [rw] short_description
143
+ # @return [String]
144
+ # Output only. A one sentence description of this vulnerability.
145
+ # @!attribute [rw] long_description
146
+ # @return [String]
147
+ # Output only. A detailed description of this vulnerability.
148
+ # @!attribute [rw] related_urls
149
+ # @return [Array<Grafeas::V1::RelatedUrl>]
150
+ # Output only. URLs related to this vulnerability.
151
+ # @!attribute [rw] effective_severity
152
+ # @return [Grafeas::V1::Severity]
153
+ # The distro assigned severity for this vulnerability when it is available,
154
+ # and note provider assigned severity when distro has not yet assigned a
155
+ # severity for this vulnerability.
156
+ # @!attribute [rw] fix_available
157
+ # @return [true, false]
158
+ # Output only. Whether at least one of the affected packages has a fix
159
+ # available.
160
+ class VulnerabilityOccurrence
161
+ # A detail for a distro and package this vulnerability occurrence was found
162
+ # in and its associated fix (if one is available).
163
+ # @!attribute [rw] affected_cpe_uri
164
+ # @return [String]
165
+ # Required. The [CPE URI](https://cpe.mitre.org/specification/) this
166
+ # vulnerability was found in.
167
+ # @!attribute [rw] affected_package
168
+ # @return [String]
169
+ # Required. The package this vulnerability was found in.
170
+ # @!attribute [rw] affected_version
171
+ # @return [Grafeas::V1::Version]
172
+ # Required. The version of the package that is installed on the resource
173
+ # affected by this vulnerability.
174
+ # @!attribute [rw] fixed_cpe_uri
175
+ # @return [String]
176
+ # The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability
177
+ # was fixed in. It is possible for this to be different from the
178
+ # affected_cpe_uri.
179
+ # @!attribute [rw] fixed_package
180
+ # @return [String]
181
+ # The package this vulnerability was fixed in. It is possible for this to
182
+ # be different from the affected_package.
183
+ # @!attribute [rw] fixed_version
184
+ # @return [Grafeas::V1::Version]
185
+ # Required. The version of the package this vulnerability was fixed in.
186
+ # Setting this to VersionKind.MAXIMUM means no fix is yet available.
187
+ # @!attribute [rw] fix_available
188
+ # @return [true, false]
189
+ # Output only. Whether a fix is available for this package.
190
+ class PackageIssue; end
191
+ end
192
+
193
+ # Note provider assigned severity/impact ranking.
194
+ module Severity
195
+ # Unknown.
196
+ SEVERITY_UNSPECIFIED = 0
197
+
198
+ # Minimal severity.
199
+ MINIMAL = 1
200
+
201
+ # Low severity.
202
+ LOW = 2
203
+
204
+ # Medium severity.
205
+ MEDIUM = 3
206
+
207
+ # High severity.
208
+ HIGH = 4
209
+
210
+ # Critical severity.
211
+ CRITICAL = 5
212
+ end
213
+ end
214
+ end
@@ -0,0 +1,961 @@
1
+ # Copyright 2019 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
+ # https://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
+ # EDITING INSTRUCTIONS
16
+ # This file was generated from the file
17
+ # https://github.com/googleapis/googleapis/blob/master/grafeas/v1/grafeas.proto,
18
+ # and updates to that file get reflected here through a refresh process.
19
+ # For the short term, the refresh process will only be runnable by Google
20
+ # engineers.
21
+
22
+
23
+ require "json"
24
+ require "pathname"
25
+
26
+ require "google/gax"
27
+
28
+ require "grafeas/v1/grafeas_pb"
29
+ require "grafeas/v1/credentials"
30
+ require "grafeas/version"
31
+
32
+ module Grafeas
33
+ module V1
34
+ # [Grafeas](https://grafeas.io) API.
35
+ #
36
+ # Retrieves analysis results of Cloud components such as Docker container
37
+ # images.
38
+ #
39
+ # Analysis results are stored as a series of occurrences. An `Occurrence`
40
+ # contains information about a specific analysis instance on a resource. An
41
+ # occurrence refers to a `Note`. A note contains details describing the
42
+ # analysis and is generally stored in a separate project, called a `Provider`.
43
+ # Multiple occurrences can refer to the same note.
44
+ #
45
+ # For example, an SSL vulnerability could affect multiple images. In this case,
46
+ # there would be one note for the vulnerability and an occurrence for each
47
+ # image with the vulnerability referring to that note.
48
+ #
49
+ # @!attribute [r] grafeas_stub
50
+ # @return [Grafeas::V1::GrafeasService::Stub]
51
+ class GrafeasClient
52
+ # @private
53
+ attr_reader :grafeas_stub
54
+
55
+ # The default address of the service.
56
+ SERVICE_ADDRESS = "containeranalysis.googleapis.com".freeze
57
+
58
+ # The default port of the service.
59
+ DEFAULT_SERVICE_PORT = 443
60
+
61
+ # The default set of gRPC interceptors.
62
+ GRPC_INTERCEPTORS = []
63
+
64
+ DEFAULT_TIMEOUT = 30
65
+
66
+ PAGE_DESCRIPTORS = {
67
+ "list_occurrences" => Google::Gax::PageDescriptor.new(
68
+ "page_token",
69
+ "next_page_token",
70
+ "occurrences"),
71
+ "list_notes" => Google::Gax::PageDescriptor.new(
72
+ "page_token",
73
+ "next_page_token",
74
+ "notes"),
75
+ "list_note_occurrences" => Google::Gax::PageDescriptor.new(
76
+ "page_token",
77
+ "next_page_token",
78
+ "occurrences")
79
+ }.freeze
80
+
81
+ private_constant :PAGE_DESCRIPTORS
82
+
83
+ # The scopes needed to make gRPC calls to all of the methods defined in
84
+ # this service.
85
+ ALL_SCOPES = [
86
+ "https://www.googleapis.com/auth/cloud-platform"
87
+ ].freeze
88
+
89
+
90
+ NOTE_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
91
+ "projects/{project}/notes/{note}"
92
+ )
93
+
94
+ private_constant :NOTE_PATH_TEMPLATE
95
+
96
+ OCCURRENCE_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
97
+ "projects/{project}/occurrences/{occurrence}"
98
+ )
99
+
100
+ private_constant :OCCURRENCE_PATH_TEMPLATE
101
+
102
+ PROJECT_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
103
+ "projects/{project}"
104
+ )
105
+
106
+ private_constant :PROJECT_PATH_TEMPLATE
107
+
108
+ # Returns a fully-qualified note resource name string.
109
+ # @param project [String]
110
+ # @param note [String]
111
+ # @return [String]
112
+ def self.note_path project, note
113
+ NOTE_PATH_TEMPLATE.render(
114
+ :"project" => project,
115
+ :"note" => note
116
+ )
117
+ end
118
+
119
+ # Returns a fully-qualified occurrence resource name string.
120
+ # @param project [String]
121
+ # @param occurrence [String]
122
+ # @return [String]
123
+ def self.occurrence_path project, occurrence
124
+ OCCURRENCE_PATH_TEMPLATE.render(
125
+ :"project" => project,
126
+ :"occurrence" => occurrence
127
+ )
128
+ end
129
+
130
+ # Returns a fully-qualified project resource name string.
131
+ # @param project [String]
132
+ # @return [String]
133
+ def self.project_path project
134
+ PROJECT_PATH_TEMPLATE.render(
135
+ :"project" => project
136
+ )
137
+ end
138
+
139
+ # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
140
+ # Provides the means for authenticating requests made by the client. This parameter can
141
+ # be many types.
142
+ # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for
143
+ # authenticating requests made by this client.
144
+ # A `String` will be treated as the path to the keyfile to be used for the construction of
145
+ # credentials for this client.
146
+ # A `Hash` will be treated as the contents of a keyfile to be used for the construction of
147
+ # credentials for this client.
148
+ # A `GRPC::Core::Channel` will be used to make calls through.
149
+ # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials
150
+ # should already be composed with a `GRPC::Core::CallCredentials` object.
151
+ # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the
152
+ # metadata for requests, generally, to give OAuth credentials.
153
+ # @param scopes [Array<String>]
154
+ # The OAuth scopes for this service. This parameter is ignored if
155
+ # an updater_proc is supplied.
156
+ # @param client_config [Hash]
157
+ # A Hash for call options for each method. See
158
+ # Google::Gax#construct_settings for the structure of
159
+ # this data. Falls back to the default config if not specified
160
+ # or the specified config is missing data points.
161
+ # @param timeout [Numeric]
162
+ # The default timeout, in seconds, for calls made through this client.
163
+ # @param metadata [Hash]
164
+ # Default metadata to be sent with each request. This can be overridden on a per call basis.
165
+ # @param service_address [String]
166
+ # Override for the service hostname, or `nil` to leave as the default.
167
+ # @param service_port [Integer]
168
+ # Override for the service port, or `nil` to leave as the default.
169
+ # @param exception_transformer [Proc]
170
+ # An optional proc that intercepts any exceptions raised during an API call to inject
171
+ # custom error handling.
172
+ def initialize \
173
+ credentials: nil,
174
+ scopes: ALL_SCOPES,
175
+ client_config: {},
176
+ timeout: DEFAULT_TIMEOUT,
177
+ metadata: nil,
178
+ service_address: nil,
179
+ service_port: nil,
180
+ exception_transformer: nil,
181
+ lib_name: nil,
182
+ lib_version: ""
183
+ # These require statements are intentionally placed here to initialize
184
+ # the gRPC module only when it's required.
185
+ # See https://github.com/googleapis/toolkit/issues/446
186
+ require "google/gax/grpc"
187
+ require "grafeas/v1/grafeas_services_pb"
188
+
189
+ credentials ||= Grafeas::V1::Credentials.default
190
+
191
+ if credentials.is_a?(String) || credentials.is_a?(Hash)
192
+ updater_proc = Grafeas::V1::Credentials.new(credentials).updater_proc
193
+ end
194
+ if credentials.is_a?(GRPC::Core::Channel)
195
+ channel = credentials
196
+ end
197
+ if credentials.is_a?(GRPC::Core::ChannelCredentials)
198
+ chan_creds = credentials
199
+ end
200
+ if credentials.is_a?(Proc)
201
+ updater_proc = credentials
202
+ end
203
+ if credentials.is_a?(Google::Auth::Credentials)
204
+ updater_proc = credentials.updater_proc
205
+ end
206
+
207
+ package_version = Grafeas::VERSION
208
+
209
+ google_api_client = "gl-ruby/#{RUBY_VERSION}"
210
+ google_api_client << " #{lib_name}/#{lib_version}" if lib_name
211
+ google_api_client << " gapic/#{package_version} gax/#{Google::Gax::VERSION}"
212
+ google_api_client << " grpc/#{GRPC::VERSION}"
213
+ google_api_client.freeze
214
+
215
+ headers = { :"x-goog-api-client" => google_api_client }
216
+ headers.merge!(metadata) unless metadata.nil?
217
+ client_config_file = Pathname.new(__dir__).join(
218
+ "grafeas_client_config.json"
219
+ )
220
+ defaults = client_config_file.open do |f|
221
+ Google::Gax.construct_settings(
222
+ "grafeas.v1.Grafeas",
223
+ JSON.parse(f.read),
224
+ client_config,
225
+ Google::Gax::Grpc::STATUS_CODE_NAMES,
226
+ timeout,
227
+ page_descriptors: PAGE_DESCRIPTORS,
228
+ errors: Google::Gax::Grpc::API_ERRORS,
229
+ metadata: headers
230
+ )
231
+ end
232
+
233
+ # Allow overriding the service path/port in subclasses.
234
+ service_path = service_address || self.class::SERVICE_ADDRESS
235
+ port = service_port || self.class::DEFAULT_SERVICE_PORT
236
+ interceptors = self.class::GRPC_INTERCEPTORS
237
+ @grafeas_stub = Google::Gax::Grpc.create_stub(
238
+ service_path,
239
+ port,
240
+ chan_creds: chan_creds,
241
+ channel: channel,
242
+ updater_proc: updater_proc,
243
+ scopes: scopes,
244
+ interceptors: interceptors,
245
+ &Grafeas::V1::GrafeasService::Stub.method(:new)
246
+ )
247
+
248
+ @get_occurrence = Google::Gax.create_api_call(
249
+ @grafeas_stub.method(:get_occurrence),
250
+ defaults["get_occurrence"],
251
+ exception_transformer: exception_transformer,
252
+ params_extractor: proc do |request|
253
+ {'name' => request.name}
254
+ end
255
+ )
256
+ @list_occurrences = Google::Gax.create_api_call(
257
+ @grafeas_stub.method(:list_occurrences),
258
+ defaults["list_occurrences"],
259
+ exception_transformer: exception_transformer,
260
+ params_extractor: proc do |request|
261
+ {'parent' => request.parent}
262
+ end
263
+ )
264
+ @delete_occurrence = Google::Gax.create_api_call(
265
+ @grafeas_stub.method(:delete_occurrence),
266
+ defaults["delete_occurrence"],
267
+ exception_transformer: exception_transformer,
268
+ params_extractor: proc do |request|
269
+ {'name' => request.name}
270
+ end
271
+ )
272
+ @create_occurrence = Google::Gax.create_api_call(
273
+ @grafeas_stub.method(:create_occurrence),
274
+ defaults["create_occurrence"],
275
+ exception_transformer: exception_transformer,
276
+ params_extractor: proc do |request|
277
+ {'parent' => request.parent}
278
+ end
279
+ )
280
+ @batch_create_occurrences = Google::Gax.create_api_call(
281
+ @grafeas_stub.method(:batch_create_occurrences),
282
+ defaults["batch_create_occurrences"],
283
+ exception_transformer: exception_transformer,
284
+ params_extractor: proc do |request|
285
+ {'parent' => request.parent}
286
+ end
287
+ )
288
+ @update_occurrence = Google::Gax.create_api_call(
289
+ @grafeas_stub.method(:update_occurrence),
290
+ defaults["update_occurrence"],
291
+ exception_transformer: exception_transformer,
292
+ params_extractor: proc do |request|
293
+ {'name' => request.name}
294
+ end
295
+ )
296
+ @get_occurrence_note = Google::Gax.create_api_call(
297
+ @grafeas_stub.method(:get_occurrence_note),
298
+ defaults["get_occurrence_note"],
299
+ exception_transformer: exception_transformer,
300
+ params_extractor: proc do |request|
301
+ {'name' => request.name}
302
+ end
303
+ )
304
+ @get_note = Google::Gax.create_api_call(
305
+ @grafeas_stub.method(:get_note),
306
+ defaults["get_note"],
307
+ exception_transformer: exception_transformer,
308
+ params_extractor: proc do |request|
309
+ {'name' => request.name}
310
+ end
311
+ )
312
+ @list_notes = Google::Gax.create_api_call(
313
+ @grafeas_stub.method(:list_notes),
314
+ defaults["list_notes"],
315
+ exception_transformer: exception_transformer,
316
+ params_extractor: proc do |request|
317
+ {'parent' => request.parent}
318
+ end
319
+ )
320
+ @delete_note = Google::Gax.create_api_call(
321
+ @grafeas_stub.method(:delete_note),
322
+ defaults["delete_note"],
323
+ exception_transformer: exception_transformer,
324
+ params_extractor: proc do |request|
325
+ {'name' => request.name}
326
+ end
327
+ )
328
+ @create_note = Google::Gax.create_api_call(
329
+ @grafeas_stub.method(:create_note),
330
+ defaults["create_note"],
331
+ exception_transformer: exception_transformer,
332
+ params_extractor: proc do |request|
333
+ {'parent' => request.parent}
334
+ end
335
+ )
336
+ @batch_create_notes = Google::Gax.create_api_call(
337
+ @grafeas_stub.method(:batch_create_notes),
338
+ defaults["batch_create_notes"],
339
+ exception_transformer: exception_transformer,
340
+ params_extractor: proc do |request|
341
+ {'parent' => request.parent}
342
+ end
343
+ )
344
+ @update_note = Google::Gax.create_api_call(
345
+ @grafeas_stub.method(:update_note),
346
+ defaults["update_note"],
347
+ exception_transformer: exception_transformer,
348
+ params_extractor: proc do |request|
349
+ {'name' => request.name}
350
+ end
351
+ )
352
+ @list_note_occurrences = Google::Gax.create_api_call(
353
+ @grafeas_stub.method(:list_note_occurrences),
354
+ defaults["list_note_occurrences"],
355
+ exception_transformer: exception_transformer,
356
+ params_extractor: proc do |request|
357
+ {'name' => request.name}
358
+ end
359
+ )
360
+ end
361
+
362
+ # Service calls
363
+
364
+ # Gets the specified occurrence.
365
+ #
366
+ # @param name [String]
367
+ # The name of the occurrence in the form of
368
+ # `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
369
+ # @param options [Google::Gax::CallOptions]
370
+ # Overrides the default settings for this call, e.g, timeout,
371
+ # retries, etc.
372
+ # @yield [result, operation] Access the result along with the RPC operation
373
+ # @yieldparam result [Grafeas::V1::Occurrence]
374
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
375
+ # @return [Grafeas::V1::Occurrence]
376
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
377
+ # @example
378
+ # require "grafeas"
379
+ #
380
+ # grafeas_client = Grafeas.new(version: :v1)
381
+ # formatted_name = Grafeas::V1::GrafeasClient.occurrence_path("[PROJECT]", "[OCCURRENCE]")
382
+ # response = grafeas_client.get_occurrence(formatted_name)
383
+
384
+ def get_occurrence \
385
+ name,
386
+ options: nil,
387
+ &block
388
+ req = {
389
+ name: name
390
+ }.delete_if { |_, v| v.nil? }
391
+ req = Google::Gax::to_proto(req, Grafeas::V1::GetOccurrenceRequest)
392
+ @get_occurrence.call(req, options, &block)
393
+ end
394
+
395
+ # Lists occurrences for the specified project.
396
+ #
397
+ # @param parent [String]
398
+ # The name of the project to list occurrences for in the form of
399
+ # `projects/[PROJECT_ID]`.
400
+ # @param filter [String]
401
+ # The filter expression.
402
+ # @param page_size [Integer]
403
+ # The maximum number of resources contained in the underlying API
404
+ # response. If page streaming is performed per-resource, this
405
+ # parameter does not affect the return value. If page streaming is
406
+ # performed per-page, this determines the maximum number of
407
+ # resources in a page.
408
+ # @param options [Google::Gax::CallOptions]
409
+ # Overrides the default settings for this call, e.g, timeout,
410
+ # retries, etc.
411
+ # @yield [result, operation] Access the result along with the RPC operation
412
+ # @yieldparam result [Google::Gax::PagedEnumerable<Grafeas::V1::Occurrence>]
413
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
414
+ # @return [Google::Gax::PagedEnumerable<Grafeas::V1::Occurrence>]
415
+ # An enumerable of Grafeas::V1::Occurrence instances.
416
+ # See Google::Gax::PagedEnumerable documentation for other
417
+ # operations such as per-page iteration or access to the response
418
+ # object.
419
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
420
+ # @example
421
+ # require "grafeas"
422
+ #
423
+ # grafeas_client = Grafeas.new(version: :v1)
424
+ # formatted_parent = Grafeas::V1::GrafeasClient.project_path("[PROJECT]")
425
+ #
426
+ # # Iterate over all results.
427
+ # grafeas_client.list_occurrences(formatted_parent).each do |element|
428
+ # # Process element.
429
+ # end
430
+ #
431
+ # # Or iterate over results one page at a time.
432
+ # grafeas_client.list_occurrences(formatted_parent).each_page do |page|
433
+ # # Process each page at a time.
434
+ # page.each do |element|
435
+ # # Process element.
436
+ # end
437
+ # end
438
+
439
+ def list_occurrences \
440
+ parent,
441
+ filter: nil,
442
+ page_size: nil,
443
+ options: nil,
444
+ &block
445
+ req = {
446
+ parent: parent,
447
+ filter: filter,
448
+ page_size: page_size
449
+ }.delete_if { |_, v| v.nil? }
450
+ req = Google::Gax::to_proto(req, Grafeas::V1::ListOccurrencesRequest)
451
+ @list_occurrences.call(req, options, &block)
452
+ end
453
+
454
+ # Deletes the specified occurrence. For example, use this method to delete an
455
+ # occurrence when the occurrence is no longer applicable for the given
456
+ # resource.
457
+ #
458
+ # @param name [String]
459
+ # The name of the occurrence in the form of
460
+ # `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
461
+ # @param options [Google::Gax::CallOptions]
462
+ # Overrides the default settings for this call, e.g, timeout,
463
+ # retries, etc.
464
+ # @yield [result, operation] Access the result along with the RPC operation
465
+ # @yieldparam result []
466
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
467
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
468
+ # @example
469
+ # require "grafeas"
470
+ #
471
+ # grafeas_client = Grafeas.new(version: :v1)
472
+ # formatted_name = Grafeas::V1::GrafeasClient.occurrence_path("[PROJECT]", "[OCCURRENCE]")
473
+ # grafeas_client.delete_occurrence(formatted_name)
474
+
475
+ def delete_occurrence \
476
+ name,
477
+ options: nil,
478
+ &block
479
+ req = {
480
+ name: name
481
+ }.delete_if { |_, v| v.nil? }
482
+ req = Google::Gax::to_proto(req, Grafeas::V1::DeleteOccurrenceRequest)
483
+ @delete_occurrence.call(req, options, &block)
484
+ nil
485
+ end
486
+
487
+ # Creates a new occurrence.
488
+ #
489
+ # @param parent [String]
490
+ # The name of the project in the form of `projects/[PROJECT_ID]`, under which
491
+ # the occurrence is to be created.
492
+ # @param occurrence [Grafeas::V1::Occurrence | Hash]
493
+ # The occurrence to create.
494
+ # A hash of the same form as `Grafeas::V1::Occurrence`
495
+ # can also be provided.
496
+ # @param options [Google::Gax::CallOptions]
497
+ # Overrides the default settings for this call, e.g, timeout,
498
+ # retries, etc.
499
+ # @yield [result, operation] Access the result along with the RPC operation
500
+ # @yieldparam result [Grafeas::V1::Occurrence]
501
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
502
+ # @return [Grafeas::V1::Occurrence]
503
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
504
+ # @example
505
+ # require "grafeas"
506
+ #
507
+ # grafeas_client = Grafeas.new(version: :v1)
508
+ # formatted_parent = Grafeas::V1::GrafeasClient.project_path("[PROJECT]")
509
+ #
510
+ # # TODO: Initialize `occurrence`:
511
+ # occurrence = {}
512
+ # response = grafeas_client.create_occurrence(formatted_parent, occurrence)
513
+
514
+ def create_occurrence \
515
+ parent,
516
+ occurrence,
517
+ options: nil,
518
+ &block
519
+ req = {
520
+ parent: parent,
521
+ occurrence: occurrence
522
+ }.delete_if { |_, v| v.nil? }
523
+ req = Google::Gax::to_proto(req, Grafeas::V1::CreateOccurrenceRequest)
524
+ @create_occurrence.call(req, options, &block)
525
+ end
526
+
527
+ # Creates new occurrences in batch.
528
+ #
529
+ # @param parent [String]
530
+ # The name of the project in the form of `projects/[PROJECT_ID]`, under which
531
+ # the occurrences are to be created.
532
+ # @param occurrences [Array<Grafeas::V1::Occurrence | Hash>]
533
+ # The occurrences to create. Max allowed length is 1000.
534
+ # A hash of the same form as `Grafeas::V1::Occurrence`
535
+ # can also be provided.
536
+ # @param options [Google::Gax::CallOptions]
537
+ # Overrides the default settings for this call, e.g, timeout,
538
+ # retries, etc.
539
+ # @yield [result, operation] Access the result along with the RPC operation
540
+ # @yieldparam result [Grafeas::V1::BatchCreateOccurrencesResponse]
541
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
542
+ # @return [Grafeas::V1::BatchCreateOccurrencesResponse]
543
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
544
+ # @example
545
+ # require "grafeas"
546
+ #
547
+ # grafeas_client = Grafeas.new(version: :v1)
548
+ # formatted_parent = Grafeas::V1::GrafeasClient.project_path("[PROJECT]")
549
+ #
550
+ # # TODO: Initialize `occurrences`:
551
+ # occurrences = []
552
+ # response = grafeas_client.batch_create_occurrences(formatted_parent, occurrences)
553
+
554
+ def batch_create_occurrences \
555
+ parent,
556
+ occurrences,
557
+ options: nil,
558
+ &block
559
+ req = {
560
+ parent: parent,
561
+ occurrences: occurrences
562
+ }.delete_if { |_, v| v.nil? }
563
+ req = Google::Gax::to_proto(req, Grafeas::V1::BatchCreateOccurrencesRequest)
564
+ @batch_create_occurrences.call(req, options, &block)
565
+ end
566
+
567
+ # Updates the specified occurrence.
568
+ #
569
+ # @param name [String]
570
+ # The name of the occurrence in the form of
571
+ # `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
572
+ # @param occurrence [Grafeas::V1::Occurrence | Hash]
573
+ # The updated occurrence.
574
+ # A hash of the same form as `Grafeas::V1::Occurrence`
575
+ # can also be provided.
576
+ # @param update_mask [Google::Protobuf::FieldMask | Hash]
577
+ # The fields to update.
578
+ # A hash of the same form as `Google::Protobuf::FieldMask`
579
+ # can also be provided.
580
+ # @param options [Google::Gax::CallOptions]
581
+ # Overrides the default settings for this call, e.g, timeout,
582
+ # retries, etc.
583
+ # @yield [result, operation] Access the result along with the RPC operation
584
+ # @yieldparam result [Grafeas::V1::Occurrence]
585
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
586
+ # @return [Grafeas::V1::Occurrence]
587
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
588
+ # @example
589
+ # require "grafeas"
590
+ #
591
+ # grafeas_client = Grafeas.new(version: :v1)
592
+ # formatted_name = Grafeas::V1::GrafeasClient.occurrence_path("[PROJECT]", "[OCCURRENCE]")
593
+ #
594
+ # # TODO: Initialize `occurrence`:
595
+ # occurrence = {}
596
+ # response = grafeas_client.update_occurrence(formatted_name, occurrence)
597
+
598
+ def update_occurrence \
599
+ name,
600
+ occurrence,
601
+ update_mask: nil,
602
+ options: nil,
603
+ &block
604
+ req = {
605
+ name: name,
606
+ occurrence: occurrence,
607
+ update_mask: update_mask
608
+ }.delete_if { |_, v| v.nil? }
609
+ req = Google::Gax::to_proto(req, Grafeas::V1::UpdateOccurrenceRequest)
610
+ @update_occurrence.call(req, options, &block)
611
+ end
612
+
613
+ # Gets the note attached to the specified occurrence. Consumer projects can
614
+ # use this method to get a note that belongs to a provider project.
615
+ #
616
+ # @param name [String]
617
+ # The name of the occurrence in the form of
618
+ # `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
619
+ # @param options [Google::Gax::CallOptions]
620
+ # Overrides the default settings for this call, e.g, timeout,
621
+ # retries, etc.
622
+ # @yield [result, operation] Access the result along with the RPC operation
623
+ # @yieldparam result [Grafeas::V1::Note]
624
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
625
+ # @return [Grafeas::V1::Note]
626
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
627
+ # @example
628
+ # require "grafeas"
629
+ #
630
+ # grafeas_client = Grafeas.new(version: :v1)
631
+ # formatted_name = Grafeas::V1::GrafeasClient.occurrence_path("[PROJECT]", "[OCCURRENCE]")
632
+ # response = grafeas_client.get_occurrence_note(formatted_name)
633
+
634
+ def get_occurrence_note \
635
+ name,
636
+ options: nil,
637
+ &block
638
+ req = {
639
+ name: name
640
+ }.delete_if { |_, v| v.nil? }
641
+ req = Google::Gax::to_proto(req, Grafeas::V1::GetOccurrenceNoteRequest)
642
+ @get_occurrence_note.call(req, options, &block)
643
+ end
644
+
645
+ # Gets the specified note.
646
+ #
647
+ # @param name [String]
648
+ # The name of the note in the form of
649
+ # `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
650
+ # @param options [Google::Gax::CallOptions]
651
+ # Overrides the default settings for this call, e.g, timeout,
652
+ # retries, etc.
653
+ # @yield [result, operation] Access the result along with the RPC operation
654
+ # @yieldparam result [Grafeas::V1::Note]
655
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
656
+ # @return [Grafeas::V1::Note]
657
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
658
+ # @example
659
+ # require "grafeas"
660
+ #
661
+ # grafeas_client = Grafeas.new(version: :v1)
662
+ # formatted_name = Grafeas::V1::GrafeasClient.note_path("[PROJECT]", "[NOTE]")
663
+ # response = grafeas_client.get_note(formatted_name)
664
+
665
+ def get_note \
666
+ name,
667
+ options: nil,
668
+ &block
669
+ req = {
670
+ name: name
671
+ }.delete_if { |_, v| v.nil? }
672
+ req = Google::Gax::to_proto(req, Grafeas::V1::GetNoteRequest)
673
+ @get_note.call(req, options, &block)
674
+ end
675
+
676
+ # Lists notes for the specified project.
677
+ #
678
+ # @param parent [String]
679
+ # The name of the project to list notes for in the form of
680
+ # `projects/[PROJECT_ID]`.
681
+ # @param filter [String]
682
+ # The filter expression.
683
+ # @param page_size [Integer]
684
+ # The maximum number of resources contained in the underlying API
685
+ # response. If page streaming is performed per-resource, this
686
+ # parameter does not affect the return value. If page streaming is
687
+ # performed per-page, this determines the maximum number of
688
+ # resources in a page.
689
+ # @param options [Google::Gax::CallOptions]
690
+ # Overrides the default settings for this call, e.g, timeout,
691
+ # retries, etc.
692
+ # @yield [result, operation] Access the result along with the RPC operation
693
+ # @yieldparam result [Google::Gax::PagedEnumerable<Grafeas::V1::Note>]
694
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
695
+ # @return [Google::Gax::PagedEnumerable<Grafeas::V1::Note>]
696
+ # An enumerable of Grafeas::V1::Note instances.
697
+ # See Google::Gax::PagedEnumerable documentation for other
698
+ # operations such as per-page iteration or access to the response
699
+ # object.
700
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
701
+ # @example
702
+ # require "grafeas"
703
+ #
704
+ # grafeas_client = Grafeas.new(version: :v1)
705
+ # formatted_parent = Grafeas::V1::GrafeasClient.project_path("[PROJECT]")
706
+ #
707
+ # # Iterate over all results.
708
+ # grafeas_client.list_notes(formatted_parent).each do |element|
709
+ # # Process element.
710
+ # end
711
+ #
712
+ # # Or iterate over results one page at a time.
713
+ # grafeas_client.list_notes(formatted_parent).each_page do |page|
714
+ # # Process each page at a time.
715
+ # page.each do |element|
716
+ # # Process element.
717
+ # end
718
+ # end
719
+
720
+ def list_notes \
721
+ parent,
722
+ filter: nil,
723
+ page_size: nil,
724
+ options: nil,
725
+ &block
726
+ req = {
727
+ parent: parent,
728
+ filter: filter,
729
+ page_size: page_size
730
+ }.delete_if { |_, v| v.nil? }
731
+ req = Google::Gax::to_proto(req, Grafeas::V1::ListNotesRequest)
732
+ @list_notes.call(req, options, &block)
733
+ end
734
+
735
+ # Deletes the specified note.
736
+ #
737
+ # @param name [String]
738
+ # The name of the note in the form of
739
+ # `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
740
+ # @param options [Google::Gax::CallOptions]
741
+ # Overrides the default settings for this call, e.g, timeout,
742
+ # retries, etc.
743
+ # @yield [result, operation] Access the result along with the RPC operation
744
+ # @yieldparam result []
745
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
746
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
747
+ # @example
748
+ # require "grafeas"
749
+ #
750
+ # grafeas_client = Grafeas.new(version: :v1)
751
+ # formatted_name = Grafeas::V1::GrafeasClient.note_path("[PROJECT]", "[NOTE]")
752
+ # grafeas_client.delete_note(formatted_name)
753
+
754
+ def delete_note \
755
+ name,
756
+ options: nil,
757
+ &block
758
+ req = {
759
+ name: name
760
+ }.delete_if { |_, v| v.nil? }
761
+ req = Google::Gax::to_proto(req, Grafeas::V1::DeleteNoteRequest)
762
+ @delete_note.call(req, options, &block)
763
+ nil
764
+ end
765
+
766
+ # Creates a new note.
767
+ #
768
+ # @param parent [String]
769
+ # The name of the project in the form of `projects/[PROJECT_ID]`, under which
770
+ # the note is to be created.
771
+ # @param note_id [String]
772
+ # The ID to use for this note.
773
+ # @param note [Grafeas::V1::Note | Hash]
774
+ # The note to create.
775
+ # A hash of the same form as `Grafeas::V1::Note`
776
+ # can also be provided.
777
+ # @param options [Google::Gax::CallOptions]
778
+ # Overrides the default settings for this call, e.g, timeout,
779
+ # retries, etc.
780
+ # @yield [result, operation] Access the result along with the RPC operation
781
+ # @yieldparam result [Grafeas::V1::Note]
782
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
783
+ # @return [Grafeas::V1::Note]
784
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
785
+ # @example
786
+ # require "grafeas"
787
+ #
788
+ # grafeas_client = Grafeas.new(version: :v1)
789
+ # formatted_parent = Grafeas::V1::GrafeasClient.project_path("[PROJECT]")
790
+ #
791
+ # # TODO: Initialize `note_id`:
792
+ # note_id = ''
793
+ #
794
+ # # TODO: Initialize `note`:
795
+ # note = {}
796
+ # response = grafeas_client.create_note(formatted_parent, note_id, note)
797
+
798
+ def create_note \
799
+ parent,
800
+ note_id,
801
+ note,
802
+ options: nil,
803
+ &block
804
+ req = {
805
+ parent: parent,
806
+ note_id: note_id,
807
+ note: note
808
+ }.delete_if { |_, v| v.nil? }
809
+ req = Google::Gax::to_proto(req, Grafeas::V1::CreateNoteRequest)
810
+ @create_note.call(req, options, &block)
811
+ end
812
+
813
+ # Creates new notes in batch.
814
+ #
815
+ # @param parent [String]
816
+ # The name of the project in the form of `projects/[PROJECT_ID]`, under which
817
+ # the notes are to be created.
818
+ # @param notes [Hash{String => Grafeas::V1::Note | Hash}]
819
+ # The notes to create. Max allowed length is 1000.
820
+ # A hash of the same form as `Grafeas::V1::Note`
821
+ # can also be provided.
822
+ # @param options [Google::Gax::CallOptions]
823
+ # Overrides the default settings for this call, e.g, timeout,
824
+ # retries, etc.
825
+ # @yield [result, operation] Access the result along with the RPC operation
826
+ # @yieldparam result [Grafeas::V1::BatchCreateNotesResponse]
827
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
828
+ # @return [Grafeas::V1::BatchCreateNotesResponse]
829
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
830
+ # @example
831
+ # require "grafeas"
832
+ #
833
+ # grafeas_client = Grafeas.new(version: :v1)
834
+ # formatted_parent = Grafeas::V1::GrafeasClient.project_path("[PROJECT]")
835
+ #
836
+ # # TODO: Initialize `notes`:
837
+ # notes = {}
838
+ # response = grafeas_client.batch_create_notes(formatted_parent, notes)
839
+
840
+ def batch_create_notes \
841
+ parent,
842
+ notes,
843
+ options: nil,
844
+ &block
845
+ req = {
846
+ parent: parent,
847
+ notes: notes
848
+ }.delete_if { |_, v| v.nil? }
849
+ req = Google::Gax::to_proto(req, Grafeas::V1::BatchCreateNotesRequest)
850
+ @batch_create_notes.call(req, options, &block)
851
+ end
852
+
853
+ # Updates the specified note.
854
+ #
855
+ # @param name [String]
856
+ # The name of the note in the form of
857
+ # `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
858
+ # @param note [Grafeas::V1::Note | Hash]
859
+ # The updated note.
860
+ # A hash of the same form as `Grafeas::V1::Note`
861
+ # can also be provided.
862
+ # @param update_mask [Google::Protobuf::FieldMask | Hash]
863
+ # The fields to update.
864
+ # A hash of the same form as `Google::Protobuf::FieldMask`
865
+ # can also be provided.
866
+ # @param options [Google::Gax::CallOptions]
867
+ # Overrides the default settings for this call, e.g, timeout,
868
+ # retries, etc.
869
+ # @yield [result, operation] Access the result along with the RPC operation
870
+ # @yieldparam result [Grafeas::V1::Note]
871
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
872
+ # @return [Grafeas::V1::Note]
873
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
874
+ # @example
875
+ # require "grafeas"
876
+ #
877
+ # grafeas_client = Grafeas.new(version: :v1)
878
+ # formatted_name = Grafeas::V1::GrafeasClient.note_path("[PROJECT]", "[NOTE]")
879
+ #
880
+ # # TODO: Initialize `note`:
881
+ # note = {}
882
+ # response = grafeas_client.update_note(formatted_name, note)
883
+
884
+ def update_note \
885
+ name,
886
+ note,
887
+ update_mask: nil,
888
+ options: nil,
889
+ &block
890
+ req = {
891
+ name: name,
892
+ note: note,
893
+ update_mask: update_mask
894
+ }.delete_if { |_, v| v.nil? }
895
+ req = Google::Gax::to_proto(req, Grafeas::V1::UpdateNoteRequest)
896
+ @update_note.call(req, options, &block)
897
+ end
898
+
899
+ # Lists occurrences referencing the specified note. Provider projects can use
900
+ # this method to get all occurrences across consumer projects referencing the
901
+ # specified note.
902
+ #
903
+ # @param name [String]
904
+ # The name of the note to list occurrences for in the form of
905
+ # `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
906
+ # @param filter [String]
907
+ # The filter expression.
908
+ # @param page_size [Integer]
909
+ # The maximum number of resources contained in the underlying API
910
+ # response. If page streaming is performed per-resource, this
911
+ # parameter does not affect the return value. If page streaming is
912
+ # performed per-page, this determines the maximum number of
913
+ # resources in a page.
914
+ # @param options [Google::Gax::CallOptions]
915
+ # Overrides the default settings for this call, e.g, timeout,
916
+ # retries, etc.
917
+ # @yield [result, operation] Access the result along with the RPC operation
918
+ # @yieldparam result [Google::Gax::PagedEnumerable<Grafeas::V1::Occurrence>]
919
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
920
+ # @return [Google::Gax::PagedEnumerable<Grafeas::V1::Occurrence>]
921
+ # An enumerable of Grafeas::V1::Occurrence instances.
922
+ # See Google::Gax::PagedEnumerable documentation for other
923
+ # operations such as per-page iteration or access to the response
924
+ # object.
925
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
926
+ # @example
927
+ # require "grafeas"
928
+ #
929
+ # grafeas_client = Grafeas.new(version: :v1)
930
+ # formatted_name = Grafeas::V1::GrafeasClient.note_path("[PROJECT]", "[NOTE]")
931
+ #
932
+ # # Iterate over all results.
933
+ # grafeas_client.list_note_occurrences(formatted_name).each do |element|
934
+ # # Process element.
935
+ # end
936
+ #
937
+ # # Or iterate over results one page at a time.
938
+ # grafeas_client.list_note_occurrences(formatted_name).each_page do |page|
939
+ # # Process each page at a time.
940
+ # page.each do |element|
941
+ # # Process element.
942
+ # end
943
+ # end
944
+
945
+ def list_note_occurrences \
946
+ name,
947
+ filter: nil,
948
+ page_size: nil,
949
+ options: nil,
950
+ &block
951
+ req = {
952
+ name: name,
953
+ filter: filter,
954
+ page_size: page_size
955
+ }.delete_if { |_, v| v.nil? }
956
+ req = Google::Gax::to_proto(req, Grafeas::V1::ListNoteOccurrencesRequest)
957
+ @list_note_occurrences.call(req, options, &block)
958
+ end
959
+ end
960
+ end
961
+ end