google-apis-containeranalysis_v1beta1 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: 9df9b4e867eb18bff3dee8b12f24b034c43db942f612529c86efca3480b6780f
4
+ data.tar.gz: ab009327de3e084eef710da3b80716407ee9e0cd41f97533338a83e08853f310
5
+ SHA512:
6
+ metadata.gz: 59a00798f42dd2aaa5e9d4bd18ab56463d6b5e42effa96eb6792979ccf29a3294d97ccd9eabf7c3cd8f2364034b216a97d89b8179d950521dc4acd1463cba1f3
7
+ data.tar.gz: 42109af13555494dfef92ed9cc1a040844f22f87f5e79ed6adb1b4f6a5534430497d1087818664be4aed2857d8184dd81f0c635de2099bf6f8004985d740f811
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-containeranalysis_v1beta1
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/containeranalysis_v1beta1/*.rb
9
+ lib/google/apis/containeranalysis_v1beta1.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-containeranalysis_v1beta1
2
+
3
+ ### v0.1.0 (2021-01-07)
4
+
5
+ * Regenerated using generator version 0.1.1
6
+ * Regenerated from discovery document revision 20201112
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 V1beta1 of the Container Analysis API
2
+
3
+ This is a simple client library for version V1beta1 of the Container Analysis 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/containeranalysis.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-containeranalysis_v1beta1', '~> 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-containeranalysis_v1beta1
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/containeranalysis_v1beta1"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::ContaineranalysisV1beta1::ContainerAnalysisService.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 Containeranalysis service in particular.)
67
+
68
+ For reference information on specific calls in the Container Analysis API, see the {Google::Apis::ContaineranalysisV1beta1::ContainerAnalysisService 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-containeranalysis_v1beta1`, 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/container-analysis/api/reference/rest/) 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/containeranalysis_v1beta1"
@@ -0,0 +1,37 @@
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/containeranalysis_v1beta1/service.rb'
16
+ require 'google/apis/containeranalysis_v1beta1/classes.rb'
17
+ require 'google/apis/containeranalysis_v1beta1/representations.rb'
18
+ require 'google/apis/containeranalysis_v1beta1/gem_version.rb'
19
+
20
+ module Google
21
+ module Apis
22
+ # Container Analysis API
23
+ #
24
+ # An implementation of the Grafeas API, which stores, and enables querying and
25
+ # retrieval of critical metadata about all of your software artifacts.
26
+ #
27
+ # @see https://cloud.google.com/container-analysis/api/reference/rest/
28
+ module ContaineranalysisV1beta1
29
+ # Version of the Container Analysis API this client connects to.
30
+ # This is NOT the gem version.
31
+ VERSION = 'V1beta1'
32
+
33
+ # View and manage your data across Google Cloud Platform services
34
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,3142 @@
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 ContaineranalysisV1beta1
24
+
25
+ # An alias to a repo revision.
26
+ class AliasContext
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # The alias kind.
30
+ # Corresponds to the JSON property `kind`
31
+ # @return [String]
32
+ attr_accessor :kind
33
+
34
+ # The alias name.
35
+ # Corresponds to the JSON property `name`
36
+ # @return [String]
37
+ attr_accessor :name
38
+
39
+ def initialize(**args)
40
+ update!(**args)
41
+ end
42
+
43
+ # Update properties of this object
44
+ def update!(**args)
45
+ @kind = args[:kind] if args.key?(:kind)
46
+ @name = args[:name] if args.key?(:name)
47
+ end
48
+ end
49
+
50
+ # Artifact describes a build product.
51
+ class Artifact
52
+ include Google::Apis::Core::Hashable
53
+
54
+ # Hash or checksum value of a binary, or Docker Registry 2.0 digest of a
55
+ # container.
56
+ # Corresponds to the JSON property `checksum`
57
+ # @return [String]
58
+ attr_accessor :checksum
59
+
60
+ # Artifact ID, if any; for container images, this will be a URL by digest like `
61
+ # gcr.io/projectID/imagename@sha256:123456`.
62
+ # Corresponds to the JSON property `id`
63
+ # @return [String]
64
+ attr_accessor :id
65
+
66
+ # Related artifact names. This may be the path to a binary or jar file, or in
67
+ # the case of a container build, the name used to push the container image to
68
+ # Google Container Registry, as presented to `docker push`. Note that a single
69
+ # Artifact ID can have multiple names, for example if two tags are applied to
70
+ # one image.
71
+ # Corresponds to the JSON property `names`
72
+ # @return [Array<String>]
73
+ attr_accessor :names
74
+
75
+ def initialize(**args)
76
+ update!(**args)
77
+ end
78
+
79
+ # Update properties of this object
80
+ def update!(**args)
81
+ @checksum = args[:checksum] if args.key?(:checksum)
82
+ @id = args[:id] if args.key?(:id)
83
+ @names = args[:names] if args.key?(:names)
84
+ end
85
+ end
86
+
87
+ # Defines a hash object for use in Materials and Products.
88
+ class ArtifactHashes
89
+ include Google::Apis::Core::Hashable
90
+
91
+ #
92
+ # Corresponds to the JSON property `sha256`
93
+ # @return [String]
94
+ attr_accessor :sha256
95
+
96
+ def initialize(**args)
97
+ update!(**args)
98
+ end
99
+
100
+ # Update properties of this object
101
+ def update!(**args)
102
+ @sha256 = args[:sha256] if args.key?(:sha256)
103
+ end
104
+ end
105
+
106
+ # Defines an object to declare an in-toto artifact rule
107
+ class ArtifactRule
108
+ include Google::Apis::Core::Hashable
109
+
110
+ #
111
+ # Corresponds to the JSON property `artifactRule`
112
+ # @return [Array<String>]
113
+ attr_accessor :artifact_rule
114
+
115
+ def initialize(**args)
116
+ update!(**args)
117
+ end
118
+
119
+ # Update properties of this object
120
+ def update!(**args)
121
+ @artifact_rule = args[:artifact_rule] if args.key?(:artifact_rule)
122
+ end
123
+ end
124
+
125
+ # Occurrence that represents a single "attestation". The authenticity of an
126
+ # attestation can be verified using the attached signature. If the verifier
127
+ # trusts the public key of the signer, then verifying the signature is
128
+ # sufficient to establish trust. In this circumstance, the authority to which
129
+ # this attestation is attached is primarily useful for look-up (how to find this
130
+ # attestation if you already know the authority and artifact to be verified) and
131
+ # intent (which authority was this attestation intended to sign for).
132
+ class Attestation
133
+ include Google::Apis::Core::Hashable
134
+
135
+ # An attestation wrapper that uses the Grafeas `Signature` message. This
136
+ # attestation must define the `serialized_payload` that the `signatures` verify
137
+ # and any metadata necessary to interpret that plaintext. The signatures should
138
+ # always be over the `serialized_payload` bytestring.
139
+ # Corresponds to the JSON property `genericSignedAttestation`
140
+ # @return [Google::Apis::ContaineranalysisV1beta1::GenericSignedAttestation]
141
+ attr_accessor :generic_signed_attestation
142
+
143
+ # An attestation wrapper with a PGP-compatible signature. This message only
144
+ # supports `ATTACHED` signatures, where the payload that is signed is included
145
+ # alongside the signature itself in the same file.
146
+ # Corresponds to the JSON property `pgpSignedAttestation`
147
+ # @return [Google::Apis::ContaineranalysisV1beta1::PgpSignedAttestation]
148
+ attr_accessor :pgp_signed_attestation
149
+
150
+ def initialize(**args)
151
+ update!(**args)
152
+ end
153
+
154
+ # Update properties of this object
155
+ def update!(**args)
156
+ @generic_signed_attestation = args[:generic_signed_attestation] if args.key?(:generic_signed_attestation)
157
+ @pgp_signed_attestation = args[:pgp_signed_attestation] if args.key?(:pgp_signed_attestation)
158
+ end
159
+ end
160
+
161
+ # Note kind that represents a logical attestation "role" or "authority". For
162
+ # example, an organization might have one `Authority` for "QA" and one for "
163
+ # build". This note is intended to act strictly as a grouping mechanism for the
164
+ # attached occurrences (Attestations). This grouping mechanism also provides a
165
+ # security boundary, since IAM ACLs gate the ability for a principle to attach
166
+ # an occurrence to a given note. It also provides a single point of lookup to
167
+ # find all attached attestation occurrences, even if they don't all live in the
168
+ # same project.
169
+ class Authority
170
+ include Google::Apis::Core::Hashable
171
+
172
+ # This submessage provides human-readable hints about the purpose of the
173
+ # authority. Because the name of a note acts as its resource reference, it is
174
+ # important to disambiguate the canonical name of the Note (which might be a
175
+ # UUID for security purposes) from "readable" names more suitable for debug
176
+ # output. Note that these hints should not be used to look up authorities in
177
+ # security sensitive contexts, such as when looking up attestations to verify.
178
+ # Corresponds to the JSON property `hint`
179
+ # @return [Google::Apis::ContaineranalysisV1beta1::Hint]
180
+ attr_accessor :hint
181
+
182
+ def initialize(**args)
183
+ update!(**args)
184
+ end
185
+
186
+ # Update properties of this object
187
+ def update!(**args)
188
+ @hint = args[:hint] if args.key?(:hint)
189
+ end
190
+ end
191
+
192
+ # Basis describes the base image portion (Note) of the DockerImage relationship.
193
+ # Linked occurrences are derived from this or an equivalent image via: FROM Or
194
+ # an equivalent reference, e.g. a tag of the resource_url.
195
+ class Basis
196
+ include Google::Apis::Core::Hashable
197
+
198
+ # A set of properties that uniquely identify a given Docker image.
199
+ # Corresponds to the JSON property `fingerprint`
200
+ # @return [Google::Apis::ContaineranalysisV1beta1::Fingerprint]
201
+ attr_accessor :fingerprint
202
+
203
+ # Required. Immutable. The resource_url for the resource representing the basis
204
+ # of associated occurrence images.
205
+ # Corresponds to the JSON property `resourceUrl`
206
+ # @return [String]
207
+ attr_accessor :resource_url
208
+
209
+ def initialize(**args)
210
+ update!(**args)
211
+ end
212
+
213
+ # Update properties of this object
214
+ def update!(**args)
215
+ @fingerprint = args[:fingerprint] if args.key?(:fingerprint)
216
+ @resource_url = args[:resource_url] if args.key?(:resource_url)
217
+ end
218
+ end
219
+
220
+ # Request to create notes in batch.
221
+ class BatchCreateNotesRequest
222
+ include Google::Apis::Core::Hashable
223
+
224
+ # Required. The notes to create, the key is expected to be the note ID. Max
225
+ # allowed length is 1000.
226
+ # Corresponds to the JSON property `notes`
227
+ # @return [Hash<String,Google::Apis::ContaineranalysisV1beta1::Note>]
228
+ attr_accessor :notes
229
+
230
+ def initialize(**args)
231
+ update!(**args)
232
+ end
233
+
234
+ # Update properties of this object
235
+ def update!(**args)
236
+ @notes = args[:notes] if args.key?(:notes)
237
+ end
238
+ end
239
+
240
+ # Response for creating notes in batch.
241
+ class BatchCreateNotesResponse
242
+ include Google::Apis::Core::Hashable
243
+
244
+ # The notes that were created.
245
+ # Corresponds to the JSON property `notes`
246
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Note>]
247
+ attr_accessor :notes
248
+
249
+ def initialize(**args)
250
+ update!(**args)
251
+ end
252
+
253
+ # Update properties of this object
254
+ def update!(**args)
255
+ @notes = args[:notes] if args.key?(:notes)
256
+ end
257
+ end
258
+
259
+ # Request to create occurrences in batch.
260
+ class BatchCreateOccurrencesRequest
261
+ include Google::Apis::Core::Hashable
262
+
263
+ # Required. The occurrences to create. Max allowed length is 1000.
264
+ # Corresponds to the JSON property `occurrences`
265
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Occurrence>]
266
+ attr_accessor :occurrences
267
+
268
+ def initialize(**args)
269
+ update!(**args)
270
+ end
271
+
272
+ # Update properties of this object
273
+ def update!(**args)
274
+ @occurrences = args[:occurrences] if args.key?(:occurrences)
275
+ end
276
+ end
277
+
278
+ # Response for creating occurrences in batch.
279
+ class BatchCreateOccurrencesResponse
280
+ include Google::Apis::Core::Hashable
281
+
282
+ # The occurrences that were created.
283
+ # Corresponds to the JSON property `occurrences`
284
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Occurrence>]
285
+ attr_accessor :occurrences
286
+
287
+ def initialize(**args)
288
+ update!(**args)
289
+ end
290
+
291
+ # Update properties of this object
292
+ def update!(**args)
293
+ @occurrences = args[:occurrences] if args.key?(:occurrences)
294
+ end
295
+ end
296
+
297
+ # Associates `members` with a `role`.
298
+ class Binding
299
+ include Google::Apis::Core::Hashable
300
+
301
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
302
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
303
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
304
+ # "Summary size limit" description: "Determines if a summary is less than 100
305
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
306
+ # Requestor is owner" description: "Determines if requestor is the document
307
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
308
+ # Logic): title: "Public documents" description: "Determine whether the document
309
+ # should be publicly visible" expression: "document.type != 'private' &&
310
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
311
+ # string" description: "Create a notification string with a timestamp."
312
+ # expression: "'New message received at ' + string(document.create_time)" The
313
+ # exact variables and functions that may be referenced within an expression are
314
+ # determined by the service that evaluates it. See the service documentation for
315
+ # additional information.
316
+ # Corresponds to the JSON property `condition`
317
+ # @return [Google::Apis::ContaineranalysisV1beta1::Expr]
318
+ attr_accessor :condition
319
+
320
+ # Specifies the identities requesting access for a Cloud Platform resource. `
321
+ # members` can have the following values: * `allUsers`: A special identifier
322
+ # that represents anyone who is on the internet; with or without a Google
323
+ # account. * `allAuthenticatedUsers`: A special identifier that represents
324
+ # anyone who is authenticated with a Google account or a service account. * `
325
+ # user:`emailid``: An email address that represents a specific Google account.
326
+ # For example, `alice@example.com` . * `serviceAccount:`emailid``: An email
327
+ # address that represents a service account. For example, `my-other-app@appspot.
328
+ # gserviceaccount.com`. * `group:`emailid``: An email address that represents a
329
+ # Google group. For example, `admins@example.com`. * `deleted:user:`emailid`?uid=
330
+ # `uniqueid``: An email address (plus unique identifier) representing a user
331
+ # that has been recently deleted. For example, `alice@example.com?uid=
332
+ # 123456789012345678901`. If the user is recovered, this value reverts to `user:`
333
+ # emailid`` and the recovered user retains the role in the binding. * `deleted:
334
+ # serviceAccount:`emailid`?uid=`uniqueid``: An email address (plus unique
335
+ # identifier) representing a service account that has been recently deleted. For
336
+ # example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
337
+ # If the service account is undeleted, this value reverts to `serviceAccount:`
338
+ # emailid`` and the undeleted service account retains the role in the binding. *
339
+ # `deleted:group:`emailid`?uid=`uniqueid``: An email address (plus unique
340
+ # identifier) representing a Google group that has been recently deleted. For
341
+ # example, `admins@example.com?uid=123456789012345678901`. If the group is
342
+ # recovered, this value reverts to `group:`emailid`` and the recovered group
343
+ # retains the role in the binding. * `domain:`domain``: The G Suite domain (
344
+ # primary) that represents all the users of that domain. For example, `google.
345
+ # com` or `example.com`.
346
+ # Corresponds to the JSON property `members`
347
+ # @return [Array<String>]
348
+ attr_accessor :members
349
+
350
+ # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`
351
+ # , or `roles/owner`.
352
+ # Corresponds to the JSON property `role`
353
+ # @return [String]
354
+ attr_accessor :role
355
+
356
+ def initialize(**args)
357
+ update!(**args)
358
+ end
359
+
360
+ # Update properties of this object
361
+ def update!(**args)
362
+ @condition = args[:condition] if args.key?(:condition)
363
+ @members = args[:members] if args.key?(:members)
364
+ @role = args[:role] if args.key?(:role)
365
+ end
366
+ end
367
+
368
+ # Note holding the version of the provider's builder and the signature of the
369
+ # provenance message in the build details occurrence.
370
+ class Build
371
+ include Google::Apis::Core::Hashable
372
+
373
+ # Required. Immutable. Version of the builder which produced this build.
374
+ # Corresponds to the JSON property `builderVersion`
375
+ # @return [String]
376
+ attr_accessor :builder_version
377
+
378
+ # Message encapsulating the signature of the verified build.
379
+ # Corresponds to the JSON property `signature`
380
+ # @return [Google::Apis::ContaineranalysisV1beta1::BuildSignature]
381
+ attr_accessor :signature
382
+
383
+ def initialize(**args)
384
+ update!(**args)
385
+ end
386
+
387
+ # Update properties of this object
388
+ def update!(**args)
389
+ @builder_version = args[:builder_version] if args.key?(:builder_version)
390
+ @signature = args[:signature] if args.key?(:signature)
391
+ end
392
+ end
393
+
394
+ # Provenance of a build. Contains all information needed to verify the full
395
+ # details about the build from source to completion.
396
+ class BuildProvenance
397
+ include Google::Apis::Core::Hashable
398
+
399
+ # Special options applied to this build. This is a catch-all field where build
400
+ # providers can enter any desired additional details.
401
+ # Corresponds to the JSON property `buildOptions`
402
+ # @return [Hash<String,String>]
403
+ attr_accessor :build_options
404
+
405
+ # Version string of the builder at the time this build was executed.
406
+ # Corresponds to the JSON property `builderVersion`
407
+ # @return [String]
408
+ attr_accessor :builder_version
409
+
410
+ # Output of the build.
411
+ # Corresponds to the JSON property `builtArtifacts`
412
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Artifact>]
413
+ attr_accessor :built_artifacts
414
+
415
+ # Commands requested by the build.
416
+ # Corresponds to the JSON property `commands`
417
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Command>]
418
+ attr_accessor :commands
419
+
420
+ # Time at which the build was created.
421
+ # Corresponds to the JSON property `createTime`
422
+ # @return [String]
423
+ attr_accessor :create_time
424
+
425
+ # E-mail address of the user who initiated this build. Note that this was the
426
+ # user's e-mail address at the time the build was initiated; this address may
427
+ # not represent the same end-user for all time.
428
+ # Corresponds to the JSON property `creator`
429
+ # @return [String]
430
+ attr_accessor :creator
431
+
432
+ # Time at which execution of the build was finished.
433
+ # Corresponds to the JSON property `endTime`
434
+ # @return [String]
435
+ attr_accessor :end_time
436
+
437
+ # Required. Unique identifier of the build.
438
+ # Corresponds to the JSON property `id`
439
+ # @return [String]
440
+ attr_accessor :id
441
+
442
+ # URI where any logs for this provenance were written.
443
+ # Corresponds to the JSON property `logsUri`
444
+ # @return [String]
445
+ attr_accessor :logs_uri
446
+
447
+ # ID of the project.
448
+ # Corresponds to the JSON property `projectId`
449
+ # @return [String]
450
+ attr_accessor :project_id
451
+
452
+ # Source describes the location of the source used for the build.
453
+ # Corresponds to the JSON property `sourceProvenance`
454
+ # @return [Google::Apis::ContaineranalysisV1beta1::Source]
455
+ attr_accessor :source_provenance
456
+
457
+ # Time at which execution of the build was started.
458
+ # Corresponds to the JSON property `startTime`
459
+ # @return [String]
460
+ attr_accessor :start_time
461
+
462
+ # Trigger identifier if the build was triggered automatically; empty if not.
463
+ # Corresponds to the JSON property `triggerId`
464
+ # @return [String]
465
+ attr_accessor :trigger_id
466
+
467
+ def initialize(**args)
468
+ update!(**args)
469
+ end
470
+
471
+ # Update properties of this object
472
+ def update!(**args)
473
+ @build_options = args[:build_options] if args.key?(:build_options)
474
+ @builder_version = args[:builder_version] if args.key?(:builder_version)
475
+ @built_artifacts = args[:built_artifacts] if args.key?(:built_artifacts)
476
+ @commands = args[:commands] if args.key?(:commands)
477
+ @create_time = args[:create_time] if args.key?(:create_time)
478
+ @creator = args[:creator] if args.key?(:creator)
479
+ @end_time = args[:end_time] if args.key?(:end_time)
480
+ @id = args[:id] if args.key?(:id)
481
+ @logs_uri = args[:logs_uri] if args.key?(:logs_uri)
482
+ @project_id = args[:project_id] if args.key?(:project_id)
483
+ @source_provenance = args[:source_provenance] if args.key?(:source_provenance)
484
+ @start_time = args[:start_time] if args.key?(:start_time)
485
+ @trigger_id = args[:trigger_id] if args.key?(:trigger_id)
486
+ end
487
+ end
488
+
489
+ # Message encapsulating the signature of the verified build.
490
+ class BuildSignature
491
+ include Google::Apis::Core::Hashable
492
+
493
+ # An ID for the key used to sign. This could be either an ID for the key stored
494
+ # in `public_key` (such as the ID or fingerprint for a PGP key, or the CN for a
495
+ # cert), or a reference to an external key (such as a reference to a key in
496
+ # Cloud Key Management Service).
497
+ # Corresponds to the JSON property `keyId`
498
+ # @return [String]
499
+ attr_accessor :key_id
500
+
501
+ # The type of the key, either stored in `public_key` or referenced in `key_id`.
502
+ # Corresponds to the JSON property `keyType`
503
+ # @return [String]
504
+ attr_accessor :key_type
505
+
506
+ # Public key of the builder which can be used to verify that the related
507
+ # findings are valid and unchanged. If `key_type` is empty, this defaults to PEM
508
+ # encoded public keys. This field may be empty if `key_id` references an
509
+ # external key. For Cloud Build based signatures, this is a PEM encoded public
510
+ # key. To verify the Cloud Build signature, place the contents of this field
511
+ # into a file (public.pem). The signature field is base64-decoded into its
512
+ # binary representation in signature.bin, and the provenance bytes from `
513
+ # BuildDetails` are base64-decoded into a binary representation in signed.bin.
514
+ # OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -
515
+ # signature signature.bin signed.bin`
516
+ # Corresponds to the JSON property `publicKey`
517
+ # @return [String]
518
+ attr_accessor :public_key
519
+
520
+ # Required. Signature of the related `BuildProvenance`. In JSON, this is base-64
521
+ # encoded.
522
+ # Corresponds to the JSON property `signature`
523
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
524
+ # @return [String]
525
+ attr_accessor :signature
526
+
527
+ def initialize(**args)
528
+ update!(**args)
529
+ end
530
+
531
+ # Update properties of this object
532
+ def update!(**args)
533
+ @key_id = args[:key_id] if args.key?(:key_id)
534
+ @key_type = args[:key_type] if args.key?(:key_type)
535
+ @public_key = args[:public_key] if args.key?(:public_key)
536
+ @signature = args[:signature] if args.key?(:signature)
537
+ end
538
+ end
539
+
540
+ # Defines an object for the byproducts field in in-toto links. The suggested
541
+ # fields are "stderr", "stdout", and "return-value".
542
+ class ByProducts
543
+ include Google::Apis::Core::Hashable
544
+
545
+ #
546
+ # Corresponds to the JSON property `customValues`
547
+ # @return [Hash<String,String>]
548
+ attr_accessor :custom_values
549
+
550
+ def initialize(**args)
551
+ update!(**args)
552
+ end
553
+
554
+ # Update properties of this object
555
+ def update!(**args)
556
+ @custom_values = args[:custom_values] if args.key?(:custom_values)
557
+ end
558
+ end
559
+
560
+ # Common Vulnerability Scoring System version 3. For details, see https://www.
561
+ # first.org/cvss/specification-document
562
+ class CvsSv3
563
+ include Google::Apis::Core::Hashable
564
+
565
+ #
566
+ # Corresponds to the JSON property `attackComplexity`
567
+ # @return [String]
568
+ attr_accessor :attack_complexity
569
+
570
+ # Base Metrics Represents the intrinsic characteristics of a vulnerability that
571
+ # are constant over time and across user environments.
572
+ # Corresponds to the JSON property `attackVector`
573
+ # @return [String]
574
+ attr_accessor :attack_vector
575
+
576
+ #
577
+ # Corresponds to the JSON property `availabilityImpact`
578
+ # @return [String]
579
+ attr_accessor :availability_impact
580
+
581
+ # The base score is a function of the base metric scores.
582
+ # Corresponds to the JSON property `baseScore`
583
+ # @return [Float]
584
+ attr_accessor :base_score
585
+
586
+ #
587
+ # Corresponds to the JSON property `confidentialityImpact`
588
+ # @return [String]
589
+ attr_accessor :confidentiality_impact
590
+
591
+ #
592
+ # Corresponds to the JSON property `exploitabilityScore`
593
+ # @return [Float]
594
+ attr_accessor :exploitability_score
595
+
596
+ #
597
+ # Corresponds to the JSON property `impactScore`
598
+ # @return [Float]
599
+ attr_accessor :impact_score
600
+
601
+ #
602
+ # Corresponds to the JSON property `integrityImpact`
603
+ # @return [String]
604
+ attr_accessor :integrity_impact
605
+
606
+ #
607
+ # Corresponds to the JSON property `privilegesRequired`
608
+ # @return [String]
609
+ attr_accessor :privileges_required
610
+
611
+ #
612
+ # Corresponds to the JSON property `scope`
613
+ # @return [String]
614
+ attr_accessor :scope
615
+
616
+ #
617
+ # Corresponds to the JSON property `userInteraction`
618
+ # @return [String]
619
+ attr_accessor :user_interaction
620
+
621
+ def initialize(**args)
622
+ update!(**args)
623
+ end
624
+
625
+ # Update properties of this object
626
+ def update!(**args)
627
+ @attack_complexity = args[:attack_complexity] if args.key?(:attack_complexity)
628
+ @attack_vector = args[:attack_vector] if args.key?(:attack_vector)
629
+ @availability_impact = args[:availability_impact] if args.key?(:availability_impact)
630
+ @base_score = args[:base_score] if args.key?(:base_score)
631
+ @confidentiality_impact = args[:confidentiality_impact] if args.key?(:confidentiality_impact)
632
+ @exploitability_score = args[:exploitability_score] if args.key?(:exploitability_score)
633
+ @impact_score = args[:impact_score] if args.key?(:impact_score)
634
+ @integrity_impact = args[:integrity_impact] if args.key?(:integrity_impact)
635
+ @privileges_required = args[:privileges_required] if args.key?(:privileges_required)
636
+ @scope = args[:scope] if args.key?(:scope)
637
+ @user_interaction = args[:user_interaction] if args.key?(:user_interaction)
638
+ end
639
+ end
640
+
641
+ # A CloudRepoSourceContext denotes a particular revision in a Google Cloud
642
+ # Source Repo.
643
+ class CloudRepoSourceContext
644
+ include Google::Apis::Core::Hashable
645
+
646
+ # An alias to a repo revision.
647
+ # Corresponds to the JSON property `aliasContext`
648
+ # @return [Google::Apis::ContaineranalysisV1beta1::AliasContext]
649
+ attr_accessor :alias_context
650
+
651
+ # A unique identifier for a Cloud Repo.
652
+ # Corresponds to the JSON property `repoId`
653
+ # @return [Google::Apis::ContaineranalysisV1beta1::RepoId]
654
+ attr_accessor :repo_id
655
+
656
+ # A revision ID.
657
+ # Corresponds to the JSON property `revisionId`
658
+ # @return [String]
659
+ attr_accessor :revision_id
660
+
661
+ def initialize(**args)
662
+ update!(**args)
663
+ end
664
+
665
+ # Update properties of this object
666
+ def update!(**args)
667
+ @alias_context = args[:alias_context] if args.key?(:alias_context)
668
+ @repo_id = args[:repo_id] if args.key?(:repo_id)
669
+ @revision_id = args[:revision_id] if args.key?(:revision_id)
670
+ end
671
+ end
672
+
673
+ # Command describes a step performed as part of the build pipeline.
674
+ class Command
675
+ include Google::Apis::Core::Hashable
676
+
677
+ # Command-line arguments used when executing this command.
678
+ # Corresponds to the JSON property `args`
679
+ # @return [Array<String>]
680
+ attr_accessor :args
681
+
682
+ # Working directory (relative to project source root) used when running this
683
+ # command.
684
+ # Corresponds to the JSON property `dir`
685
+ # @return [String]
686
+ attr_accessor :dir
687
+
688
+ # Environment variables set before running this command.
689
+ # Corresponds to the JSON property `env`
690
+ # @return [Array<String>]
691
+ attr_accessor :env
692
+
693
+ # Optional unique identifier for this command, used in wait_for to reference
694
+ # this command as a dependency.
695
+ # Corresponds to the JSON property `id`
696
+ # @return [String]
697
+ attr_accessor :id
698
+
699
+ # Required. Name of the command, as presented on the command line, or if the
700
+ # command is packaged as a Docker container, as presented to `docker pull`.
701
+ # Corresponds to the JSON property `name`
702
+ # @return [String]
703
+ attr_accessor :name
704
+
705
+ # The ID(s) of the command(s) that this command depends on.
706
+ # Corresponds to the JSON property `waitFor`
707
+ # @return [Array<String>]
708
+ attr_accessor :wait_for
709
+
710
+ def initialize(**args)
711
+ update!(**args)
712
+ end
713
+
714
+ # Update properties of this object
715
+ def update!(**args)
716
+ @args = args[:args] if args.key?(:args)
717
+ @dir = args[:dir] if args.key?(:dir)
718
+ @env = args[:env] if args.key?(:env)
719
+ @id = args[:id] if args.key?(:id)
720
+ @name = args[:name] if args.key?(:name)
721
+ @wait_for = args[:wait_for] if args.key?(:wait_for)
722
+ end
723
+ end
724
+
725
+ # An artifact that can be deployed in some runtime.
726
+ class Deployable
727
+ include Google::Apis::Core::Hashable
728
+
729
+ # Required. Resource URI for the artifact being deployed.
730
+ # Corresponds to the JSON property `resourceUri`
731
+ # @return [Array<String>]
732
+ attr_accessor :resource_uri
733
+
734
+ def initialize(**args)
735
+ update!(**args)
736
+ end
737
+
738
+ # Update properties of this object
739
+ def update!(**args)
740
+ @resource_uri = args[:resource_uri] if args.key?(:resource_uri)
741
+ end
742
+ end
743
+
744
+ # The period during which some deployable was active in a runtime.
745
+ class Deployment
746
+ include Google::Apis::Core::Hashable
747
+
748
+ # Address of the runtime element hosting this deployment.
749
+ # Corresponds to the JSON property `address`
750
+ # @return [String]
751
+ attr_accessor :address
752
+
753
+ # Configuration used to create this deployment.
754
+ # Corresponds to the JSON property `config`
755
+ # @return [String]
756
+ attr_accessor :config
757
+
758
+ # Required. Beginning of the lifetime of this deployment.
759
+ # Corresponds to the JSON property `deployTime`
760
+ # @return [String]
761
+ attr_accessor :deploy_time
762
+
763
+ # Platform hosting this deployment.
764
+ # Corresponds to the JSON property `platform`
765
+ # @return [String]
766
+ attr_accessor :platform
767
+
768
+ # Output only. Resource URI for the artifact being deployed taken from the
769
+ # deployable field with the same name.
770
+ # Corresponds to the JSON property `resourceUri`
771
+ # @return [Array<String>]
772
+ attr_accessor :resource_uri
773
+
774
+ # End of the lifetime of this deployment.
775
+ # Corresponds to the JSON property `undeployTime`
776
+ # @return [String]
777
+ attr_accessor :undeploy_time
778
+
779
+ # Identity of the user that triggered this deployment.
780
+ # Corresponds to the JSON property `userEmail`
781
+ # @return [String]
782
+ attr_accessor :user_email
783
+
784
+ def initialize(**args)
785
+ update!(**args)
786
+ end
787
+
788
+ # Update properties of this object
789
+ def update!(**args)
790
+ @address = args[:address] if args.key?(:address)
791
+ @config = args[:config] if args.key?(:config)
792
+ @deploy_time = args[:deploy_time] if args.key?(:deploy_time)
793
+ @platform = args[:platform] if args.key?(:platform)
794
+ @resource_uri = args[:resource_uri] if args.key?(:resource_uri)
795
+ @undeploy_time = args[:undeploy_time] if args.key?(:undeploy_time)
796
+ @user_email = args[:user_email] if args.key?(:user_email)
797
+ end
798
+ end
799
+
800
+ # Derived describes the derived image portion (Occurrence) of the DockerImage
801
+ # relationship. This image would be produced from a Dockerfile with FROM .
802
+ class Derived
803
+ include Google::Apis::Core::Hashable
804
+
805
+ # Output only. This contains the base image URL for the derived image occurrence.
806
+ # Corresponds to the JSON property `baseResourceUrl`
807
+ # @return [String]
808
+ attr_accessor :base_resource_url
809
+
810
+ # Output only. The number of layers by which this image differs from the
811
+ # associated image basis.
812
+ # Corresponds to the JSON property `distance`
813
+ # @return [Fixnum]
814
+ attr_accessor :distance
815
+
816
+ # A set of properties that uniquely identify a given Docker image.
817
+ # Corresponds to the JSON property `fingerprint`
818
+ # @return [Google::Apis::ContaineranalysisV1beta1::Fingerprint]
819
+ attr_accessor :fingerprint
820
+
821
+ # This contains layer-specific metadata, if populated it has length "distance"
822
+ # and is ordered with [distance] being the layer immediately following the base
823
+ # image and [1] being the final layer.
824
+ # Corresponds to the JSON property `layerInfo`
825
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Layer>]
826
+ attr_accessor :layer_info
827
+
828
+ def initialize(**args)
829
+ update!(**args)
830
+ end
831
+
832
+ # Update properties of this object
833
+ def update!(**args)
834
+ @base_resource_url = args[:base_resource_url] if args.key?(:base_resource_url)
835
+ @distance = args[:distance] if args.key?(:distance)
836
+ @fingerprint = args[:fingerprint] if args.key?(:fingerprint)
837
+ @layer_info = args[:layer_info] if args.key?(:layer_info)
838
+ end
839
+ end
840
+
841
+ # Identifies all appearances of this vulnerability in the package for a specific
842
+ # distro/location. For example: glibc in cpe:/o:debian:debian_linux:8 for
843
+ # versions 2.1 - 2.2
844
+ class Detail
845
+ include Google::Apis::Core::Hashable
846
+
847
+ # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in
848
+ # which the vulnerability manifests. Examples include distro or storage location
849
+ # for vulnerable jar.
850
+ # Corresponds to the JSON property `cpeUri`
851
+ # @return [String]
852
+ attr_accessor :cpe_uri
853
+
854
+ # A vendor-specific description of this note.
855
+ # Corresponds to the JSON property `description`
856
+ # @return [String]
857
+ attr_accessor :description
858
+
859
+ # The location of the vulnerability.
860
+ # Corresponds to the JSON property `fixedLocation`
861
+ # @return [Google::Apis::ContaineranalysisV1beta1::VulnerabilityLocation]
862
+ attr_accessor :fixed_location
863
+
864
+ # Whether this detail is obsolete. Occurrences are expected not to point to
865
+ # obsolete details.
866
+ # Corresponds to the JSON property `isObsolete`
867
+ # @return [Boolean]
868
+ attr_accessor :is_obsolete
869
+ alias_method :is_obsolete?, :is_obsolete
870
+
871
+ # Version contains structured information about the version of a package.
872
+ # Corresponds to the JSON property `maxAffectedVersion`
873
+ # @return [Google::Apis::ContaineranalysisV1beta1::Version]
874
+ attr_accessor :max_affected_version
875
+
876
+ # Version contains structured information about the version of a package.
877
+ # Corresponds to the JSON property `minAffectedVersion`
878
+ # @return [Google::Apis::ContaineranalysisV1beta1::Version]
879
+ attr_accessor :min_affected_version
880
+
881
+ # Required. The name of the package where the vulnerability was found.
882
+ # Corresponds to the JSON property `package`
883
+ # @return [String]
884
+ attr_accessor :package
885
+
886
+ # The type of package; whether native or non native(ruby gems, node.js packages
887
+ # etc).
888
+ # Corresponds to the JSON property `packageType`
889
+ # @return [String]
890
+ attr_accessor :package_type
891
+
892
+ # The severity (eg: distro assigned severity) for this vulnerability.
893
+ # Corresponds to the JSON property `severityName`
894
+ # @return [String]
895
+ attr_accessor :severity_name
896
+
897
+ # The time this information was last changed at the source. This is an upstream
898
+ # timestamp from the underlying information source - e.g. Ubuntu security
899
+ # tracker.
900
+ # Corresponds to the JSON property `sourceUpdateTime`
901
+ # @return [String]
902
+ attr_accessor :source_update_time
903
+
904
+ def initialize(**args)
905
+ update!(**args)
906
+ end
907
+
908
+ # Update properties of this object
909
+ def update!(**args)
910
+ @cpe_uri = args[:cpe_uri] if args.key?(:cpe_uri)
911
+ @description = args[:description] if args.key?(:description)
912
+ @fixed_location = args[:fixed_location] if args.key?(:fixed_location)
913
+ @is_obsolete = args[:is_obsolete] if args.key?(:is_obsolete)
914
+ @max_affected_version = args[:max_affected_version] if args.key?(:max_affected_version)
915
+ @min_affected_version = args[:min_affected_version] if args.key?(:min_affected_version)
916
+ @package = args[:package] if args.key?(:package)
917
+ @package_type = args[:package_type] if args.key?(:package_type)
918
+ @severity_name = args[:severity_name] if args.key?(:severity_name)
919
+ @source_update_time = args[:source_update_time] if args.key?(:source_update_time)
920
+ end
921
+ end
922
+
923
+ # Details of an attestation occurrence.
924
+ class Details
925
+ include Google::Apis::Core::Hashable
926
+
927
+ # Occurrence that represents a single "attestation". The authenticity of an
928
+ # attestation can be verified using the attached signature. If the verifier
929
+ # trusts the public key of the signer, then verifying the signature is
930
+ # sufficient to establish trust. In this circumstance, the authority to which
931
+ # this attestation is attached is primarily useful for look-up (how to find this
932
+ # attestation if you already know the authority and artifact to be verified) and
933
+ # intent (which authority was this attestation intended to sign for).
934
+ # Corresponds to the JSON property `attestation`
935
+ # @return [Google::Apis::ContaineranalysisV1beta1::Attestation]
936
+ attr_accessor :attestation
937
+
938
+ def initialize(**args)
939
+ update!(**args)
940
+ end
941
+
942
+ # Update properties of this object
943
+ def update!(**args)
944
+ @attestation = args[:attestation] if args.key?(:attestation)
945
+ end
946
+ end
947
+
948
+ # Provides information about the analysis status of a discovered resource.
949
+ class Discovered
950
+ include Google::Apis::Core::Hashable
951
+
952
+ # The status of discovery for the resource.
953
+ # Corresponds to the JSON property `analysisStatus`
954
+ # @return [String]
955
+ attr_accessor :analysis_status
956
+
957
+ # The `Status` type defines a logical error model that is suitable for different
958
+ # programming environments, including REST APIs and RPC APIs. It is used by [
959
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
960
+ # data: error code, error message, and error details. You can find out more
961
+ # about this error model and how to work with it in the [API Design Guide](https:
962
+ # //cloud.google.com/apis/design/errors).
963
+ # Corresponds to the JSON property `analysisStatusError`
964
+ # @return [Google::Apis::ContaineranalysisV1beta1::Status]
965
+ attr_accessor :analysis_status_error
966
+
967
+ # Whether the resource is continuously analyzed.
968
+ # Corresponds to the JSON property `continuousAnalysis`
969
+ # @return [String]
970
+ attr_accessor :continuous_analysis
971
+
972
+ # The last time continuous analysis was done for this resource. Deprecated, do
973
+ # not use.
974
+ # Corresponds to the JSON property `lastAnalysisTime`
975
+ # @return [String]
976
+ attr_accessor :last_analysis_time
977
+
978
+ def initialize(**args)
979
+ update!(**args)
980
+ end
981
+
982
+ # Update properties of this object
983
+ def update!(**args)
984
+ @analysis_status = args[:analysis_status] if args.key?(:analysis_status)
985
+ @analysis_status_error = args[:analysis_status_error] if args.key?(:analysis_status_error)
986
+ @continuous_analysis = args[:continuous_analysis] if args.key?(:continuous_analysis)
987
+ @last_analysis_time = args[:last_analysis_time] if args.key?(:last_analysis_time)
988
+ end
989
+ end
990
+
991
+ # A note that indicates a type of analysis a provider would perform. This note
992
+ # exists in a provider's project. A `Discovery` occurrence is created in a
993
+ # consumer's project at the start of analysis.
994
+ class Discovery
995
+ include Google::Apis::Core::Hashable
996
+
997
+ # Required. Immutable. The kind of analysis that is handled by this discovery.
998
+ # Corresponds to the JSON property `analysisKind`
999
+ # @return [String]
1000
+ attr_accessor :analysis_kind
1001
+
1002
+ def initialize(**args)
1003
+ update!(**args)
1004
+ end
1005
+
1006
+ # Update properties of this object
1007
+ def update!(**args)
1008
+ @analysis_kind = args[:analysis_kind] if args.key?(:analysis_kind)
1009
+ end
1010
+ end
1011
+
1012
+ # This represents a particular channel of distribution for a given package. E.g.,
1013
+ # Debian's jessie-backports dpkg mirror.
1014
+ class Distribution
1015
+ include Google::Apis::Core::Hashable
1016
+
1017
+ # The CPU architecture for which packages in this distribution channel were
1018
+ # built.
1019
+ # Corresponds to the JSON property `architecture`
1020
+ # @return [String]
1021
+ attr_accessor :architecture
1022
+
1023
+ # Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/)
1024
+ # denoting the package manager version distributing a package.
1025
+ # Corresponds to the JSON property `cpeUri`
1026
+ # @return [String]
1027
+ attr_accessor :cpe_uri
1028
+
1029
+ # The distribution channel-specific description of this package.
1030
+ # Corresponds to the JSON property `description`
1031
+ # @return [String]
1032
+ attr_accessor :description
1033
+
1034
+ # Version contains structured information about the version of a package.
1035
+ # Corresponds to the JSON property `latestVersion`
1036
+ # @return [Google::Apis::ContaineranalysisV1beta1::Version]
1037
+ attr_accessor :latest_version
1038
+
1039
+ # A freeform string denoting the maintainer of this package.
1040
+ # Corresponds to the JSON property `maintainer`
1041
+ # @return [String]
1042
+ attr_accessor :maintainer
1043
+
1044
+ # The distribution channel-specific homepage for this package.
1045
+ # Corresponds to the JSON property `url`
1046
+ # @return [String]
1047
+ attr_accessor :url
1048
+
1049
+ def initialize(**args)
1050
+ update!(**args)
1051
+ end
1052
+
1053
+ # Update properties of this object
1054
+ def update!(**args)
1055
+ @architecture = args[:architecture] if args.key?(:architecture)
1056
+ @cpe_uri = args[:cpe_uri] if args.key?(:cpe_uri)
1057
+ @description = args[:description] if args.key?(:description)
1058
+ @latest_version = args[:latest_version] if args.key?(:latest_version)
1059
+ @maintainer = args[:maintainer] if args.key?(:maintainer)
1060
+ @url = args[:url] if args.key?(:url)
1061
+ end
1062
+ end
1063
+
1064
+ # A generic empty message that you can re-use to avoid defining duplicated empty
1065
+ # messages in your APIs. A typical example is to use it as the request or the
1066
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
1067
+ # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
1068
+ # `Empty` is empty JSON object ````.
1069
+ class Empty
1070
+ include Google::Apis::Core::Hashable
1071
+
1072
+ def initialize(**args)
1073
+ update!(**args)
1074
+ end
1075
+
1076
+ # Update properties of this object
1077
+ def update!(**args)
1078
+ end
1079
+ end
1080
+
1081
+ # Defines an object for the environment field in in-toto links. The suggested
1082
+ # fields are "variables", "filesystem", and "workdir".
1083
+ class Environment
1084
+ include Google::Apis::Core::Hashable
1085
+
1086
+ #
1087
+ # Corresponds to the JSON property `customValues`
1088
+ # @return [Hash<String,String>]
1089
+ attr_accessor :custom_values
1090
+
1091
+ def initialize(**args)
1092
+ update!(**args)
1093
+ end
1094
+
1095
+ # Update properties of this object
1096
+ def update!(**args)
1097
+ @custom_values = args[:custom_values] if args.key?(:custom_values)
1098
+ end
1099
+ end
1100
+
1101
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
1102
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
1103
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
1104
+ # "Summary size limit" description: "Determines if a summary is less than 100
1105
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
1106
+ # Requestor is owner" description: "Determines if requestor is the document
1107
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
1108
+ # Logic): title: "Public documents" description: "Determine whether the document
1109
+ # should be publicly visible" expression: "document.type != 'private' &&
1110
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
1111
+ # string" description: "Create a notification string with a timestamp."
1112
+ # expression: "'New message received at ' + string(document.create_time)" The
1113
+ # exact variables and functions that may be referenced within an expression are
1114
+ # determined by the service that evaluates it. See the service documentation for
1115
+ # additional information.
1116
+ class Expr
1117
+ include Google::Apis::Core::Hashable
1118
+
1119
+ # Optional. Description of the expression. This is a longer text which describes
1120
+ # the expression, e.g. when hovered over it in a UI.
1121
+ # Corresponds to the JSON property `description`
1122
+ # @return [String]
1123
+ attr_accessor :description
1124
+
1125
+ # Textual representation of an expression in Common Expression Language syntax.
1126
+ # Corresponds to the JSON property `expression`
1127
+ # @return [String]
1128
+ attr_accessor :expression
1129
+
1130
+ # Optional. String indicating the location of the expression for error reporting,
1131
+ # e.g. a file name and a position in the file.
1132
+ # Corresponds to the JSON property `location`
1133
+ # @return [String]
1134
+ attr_accessor :location
1135
+
1136
+ # Optional. Title for the expression, i.e. a short string describing its purpose.
1137
+ # This can be used e.g. in UIs which allow to enter the expression.
1138
+ # Corresponds to the JSON property `title`
1139
+ # @return [String]
1140
+ attr_accessor :title
1141
+
1142
+ def initialize(**args)
1143
+ update!(**args)
1144
+ end
1145
+
1146
+ # Update properties of this object
1147
+ def update!(**args)
1148
+ @description = args[:description] if args.key?(:description)
1149
+ @expression = args[:expression] if args.key?(:expression)
1150
+ @location = args[:location] if args.key?(:location)
1151
+ @title = args[:title] if args.key?(:title)
1152
+ end
1153
+ end
1154
+
1155
+ # Container message for hashes of byte content of files, used in source messages
1156
+ # to verify integrity of source input to the build.
1157
+ class FileHashes
1158
+ include Google::Apis::Core::Hashable
1159
+
1160
+ # Required. Collection of file hashes.
1161
+ # Corresponds to the JSON property `fileHash`
1162
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::HashProp>]
1163
+ attr_accessor :file_hash
1164
+
1165
+ def initialize(**args)
1166
+ update!(**args)
1167
+ end
1168
+
1169
+ # Update properties of this object
1170
+ def update!(**args)
1171
+ @file_hash = args[:file_hash] if args.key?(:file_hash)
1172
+ end
1173
+ end
1174
+
1175
+ # A set of properties that uniquely identify a given Docker image.
1176
+ class Fingerprint
1177
+ include Google::Apis::Core::Hashable
1178
+
1179
+ # Required. The layer ID of the final layer in the Docker image's v1
1180
+ # representation.
1181
+ # Corresponds to the JSON property `v1Name`
1182
+ # @return [String]
1183
+ attr_accessor :v1_name
1184
+
1185
+ # Required. The ordered list of v2 blobs that represent a given image.
1186
+ # Corresponds to the JSON property `v2Blob`
1187
+ # @return [Array<String>]
1188
+ attr_accessor :v2_blob
1189
+
1190
+ # Output only. The name of the image's v2 blobs computed via: [bottom] :=
1191
+ # v2_blobbottom := sha256(v2_blob[N] + " " + v2_name[N+1]) Only the name of the
1192
+ # final blob is kept.
1193
+ # Corresponds to the JSON property `v2Name`
1194
+ # @return [String]
1195
+ attr_accessor :v2_name
1196
+
1197
+ def initialize(**args)
1198
+ update!(**args)
1199
+ end
1200
+
1201
+ # Update properties of this object
1202
+ def update!(**args)
1203
+ @v1_name = args[:v1_name] if args.key?(:v1_name)
1204
+ @v2_blob = args[:v2_blob] if args.key?(:v2_blob)
1205
+ @v2_name = args[:v2_name] if args.key?(:v2_name)
1206
+ end
1207
+ end
1208
+
1209
+ # Per resource and severity counts of fixable and total vulnerabilities.
1210
+ class FixableTotalByDigest
1211
+ include Google::Apis::Core::Hashable
1212
+
1213
+ # The number of fixable vulnerabilities associated with this resource.
1214
+ # Corresponds to the JSON property `fixableCount`
1215
+ # @return [Fixnum]
1216
+ attr_accessor :fixable_count
1217
+
1218
+ # An entity that can have metadata. For example, a Docker image.
1219
+ # Corresponds to the JSON property `resource`
1220
+ # @return [Google::Apis::ContaineranalysisV1beta1::Resource]
1221
+ attr_accessor :resource
1222
+
1223
+ # The severity for this count. SEVERITY_UNSPECIFIED indicates total across all
1224
+ # severities.
1225
+ # Corresponds to the JSON property `severity`
1226
+ # @return [String]
1227
+ attr_accessor :severity
1228
+
1229
+ # The total number of vulnerabilities associated with this resource.
1230
+ # Corresponds to the JSON property `totalCount`
1231
+ # @return [Fixnum]
1232
+ attr_accessor :total_count
1233
+
1234
+ def initialize(**args)
1235
+ update!(**args)
1236
+ end
1237
+
1238
+ # Update properties of this object
1239
+ def update!(**args)
1240
+ @fixable_count = args[:fixable_count] if args.key?(:fixable_count)
1241
+ @resource = args[:resource] if args.key?(:resource)
1242
+ @severity = args[:severity] if args.key?(:severity)
1243
+ @total_count = args[:total_count] if args.key?(:total_count)
1244
+ end
1245
+ end
1246
+
1247
+ # An attestation wrapper that uses the Grafeas `Signature` message. This
1248
+ # attestation must define the `serialized_payload` that the `signatures` verify
1249
+ # and any metadata necessary to interpret that plaintext. The signatures should
1250
+ # always be over the `serialized_payload` bytestring.
1251
+ class GenericSignedAttestation
1252
+ include Google::Apis::Core::Hashable
1253
+
1254
+ # Type (for example schema) of the attestation payload that was signed. The
1255
+ # verifier must ensure that the provided type is one that the verifier supports,
1256
+ # and that the attestation payload is a valid instantiation of that type (for
1257
+ # example by validating a JSON schema).
1258
+ # Corresponds to the JSON property `contentType`
1259
+ # @return [String]
1260
+ attr_accessor :content_type
1261
+
1262
+ # The serialized payload that is verified by one or more `signatures`. The
1263
+ # encoding and semantic meaning of this payload must match what is set in `
1264
+ # content_type`.
1265
+ # Corresponds to the JSON property `serializedPayload`
1266
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1267
+ # @return [String]
1268
+ attr_accessor :serialized_payload
1269
+
1270
+ # One or more signatures over `serialized_payload`. Verifier implementations
1271
+ # should consider this attestation message verified if at least one `signature`
1272
+ # verifies `serialized_payload`. See `Signature` in common.proto for more
1273
+ # details on signature structure and verification.
1274
+ # Corresponds to the JSON property `signatures`
1275
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Signature>]
1276
+ attr_accessor :signatures
1277
+
1278
+ def initialize(**args)
1279
+ update!(**args)
1280
+ end
1281
+
1282
+ # Update properties of this object
1283
+ def update!(**args)
1284
+ @content_type = args[:content_type] if args.key?(:content_type)
1285
+ @serialized_payload = args[:serialized_payload] if args.key?(:serialized_payload)
1286
+ @signatures = args[:signatures] if args.key?(:signatures)
1287
+ end
1288
+ end
1289
+
1290
+ # A SourceContext referring to a Gerrit project.
1291
+ class GerritSourceContext
1292
+ include Google::Apis::Core::Hashable
1293
+
1294
+ # An alias to a repo revision.
1295
+ # Corresponds to the JSON property `aliasContext`
1296
+ # @return [Google::Apis::ContaineranalysisV1beta1::AliasContext]
1297
+ attr_accessor :alias_context
1298
+
1299
+ # The full project name within the host. Projects may be nested, so "project/
1300
+ # subproject" is a valid project name. The "repo name" is the hostURI/project.
1301
+ # Corresponds to the JSON property `gerritProject`
1302
+ # @return [String]
1303
+ attr_accessor :gerrit_project
1304
+
1305
+ # The URI of a running Gerrit instance.
1306
+ # Corresponds to the JSON property `hostUri`
1307
+ # @return [String]
1308
+ attr_accessor :host_uri
1309
+
1310
+ # A revision (commit) ID.
1311
+ # Corresponds to the JSON property `revisionId`
1312
+ # @return [String]
1313
+ attr_accessor :revision_id
1314
+
1315
+ def initialize(**args)
1316
+ update!(**args)
1317
+ end
1318
+
1319
+ # Update properties of this object
1320
+ def update!(**args)
1321
+ @alias_context = args[:alias_context] if args.key?(:alias_context)
1322
+ @gerrit_project = args[:gerrit_project] if args.key?(:gerrit_project)
1323
+ @host_uri = args[:host_uri] if args.key?(:host_uri)
1324
+ @revision_id = args[:revision_id] if args.key?(:revision_id)
1325
+ end
1326
+ end
1327
+
1328
+ # Request message for `GetIamPolicy` method.
1329
+ class GetIamPolicyRequest
1330
+ include Google::Apis::Core::Hashable
1331
+
1332
+ # Encapsulates settings provided to GetIamPolicy.
1333
+ # Corresponds to the JSON property `options`
1334
+ # @return [Google::Apis::ContaineranalysisV1beta1::GetPolicyOptions]
1335
+ attr_accessor :options
1336
+
1337
+ def initialize(**args)
1338
+ update!(**args)
1339
+ end
1340
+
1341
+ # Update properties of this object
1342
+ def update!(**args)
1343
+ @options = args[:options] if args.key?(:options)
1344
+ end
1345
+ end
1346
+
1347
+ # Encapsulates settings provided to GetIamPolicy.
1348
+ class GetPolicyOptions
1349
+ include Google::Apis::Core::Hashable
1350
+
1351
+ # Optional. The policy format version to be returned. Valid values are 0, 1, and
1352
+ # 3. Requests specifying an invalid value will be rejected. Requests for
1353
+ # policies with any conditional bindings must specify version 3. Policies
1354
+ # without any conditional bindings may specify any valid value or leave the
1355
+ # field unset. To learn which resources support conditions in their IAM policies,
1356
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
1357
+ # resource-policies).
1358
+ # Corresponds to the JSON property `requestedPolicyVersion`
1359
+ # @return [Fixnum]
1360
+ attr_accessor :requested_policy_version
1361
+
1362
+ def initialize(**args)
1363
+ update!(**args)
1364
+ end
1365
+
1366
+ # Update properties of this object
1367
+ def update!(**args)
1368
+ @requested_policy_version = args[:requested_policy_version] if args.key?(:requested_policy_version)
1369
+ end
1370
+ end
1371
+
1372
+ # A GitSourceContext denotes a particular revision in a third party Git
1373
+ # repository (e.g., GitHub).
1374
+ class GitSourceContext
1375
+ include Google::Apis::Core::Hashable
1376
+
1377
+ # Git commit hash.
1378
+ # Corresponds to the JSON property `revisionId`
1379
+ # @return [String]
1380
+ attr_accessor :revision_id
1381
+
1382
+ # Git repository URL.
1383
+ # Corresponds to the JSON property `url`
1384
+ # @return [String]
1385
+ attr_accessor :url
1386
+
1387
+ def initialize(**args)
1388
+ update!(**args)
1389
+ end
1390
+
1391
+ # Update properties of this object
1392
+ def update!(**args)
1393
+ @revision_id = args[:revision_id] if args.key?(:revision_id)
1394
+ @url = args[:url] if args.key?(:url)
1395
+ end
1396
+ end
1397
+
1398
+ # Metadata for all operations used and required for all operations that created
1399
+ # by Container Analysis Providers
1400
+ class GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata
1401
+ include Google::Apis::Core::Hashable
1402
+
1403
+ # Output only. The time this operation was created.
1404
+ # Corresponds to the JSON property `createTime`
1405
+ # @return [String]
1406
+ attr_accessor :create_time
1407
+
1408
+ # Output only. The time that this operation was marked completed or failed.
1409
+ # Corresponds to the JSON property `endTime`
1410
+ # @return [String]
1411
+ attr_accessor :end_time
1412
+
1413
+ def initialize(**args)
1414
+ update!(**args)
1415
+ end
1416
+
1417
+ # Update properties of this object
1418
+ def update!(**args)
1419
+ @create_time = args[:create_time] if args.key?(:create_time)
1420
+ @end_time = args[:end_time] if args.key?(:end_time)
1421
+ end
1422
+ end
1423
+
1424
+ # Details of a build occurrence.
1425
+ class GrafeasV1beta1BuildDetails
1426
+ include Google::Apis::Core::Hashable
1427
+
1428
+ # Provenance of a build. Contains all information needed to verify the full
1429
+ # details about the build from source to completion.
1430
+ # Corresponds to the JSON property `provenance`
1431
+ # @return [Google::Apis::ContaineranalysisV1beta1::BuildProvenance]
1432
+ attr_accessor :provenance
1433
+
1434
+ # Serialized JSON representation of the provenance, used in generating the build
1435
+ # signature in the corresponding build note. After verifying the signature, `
1436
+ # provenance_bytes` can be unmarshalled and compared to the provenance to
1437
+ # confirm that it is unchanged. A base64-encoded string representation of the
1438
+ # provenance bytes is used for the signature in order to interoperate with
1439
+ # openssl which expects this format for signature verification. The serialized
1440
+ # form is captured both to avoid ambiguity in how the provenance is marshalled
1441
+ # to json as well to prevent incompatibilities with future changes.
1442
+ # Corresponds to the JSON property `provenanceBytes`
1443
+ # @return [String]
1444
+ attr_accessor :provenance_bytes
1445
+
1446
+ def initialize(**args)
1447
+ update!(**args)
1448
+ end
1449
+
1450
+ # Update properties of this object
1451
+ def update!(**args)
1452
+ @provenance = args[:provenance] if args.key?(:provenance)
1453
+ @provenance_bytes = args[:provenance_bytes] if args.key?(:provenance_bytes)
1454
+ end
1455
+ end
1456
+
1457
+ # Details of a deployment occurrence.
1458
+ class GrafeasV1beta1DeploymentDetails
1459
+ include Google::Apis::Core::Hashable
1460
+
1461
+ # The period during which some deployable was active in a runtime.
1462
+ # Corresponds to the JSON property `deployment`
1463
+ # @return [Google::Apis::ContaineranalysisV1beta1::Deployment]
1464
+ attr_accessor :deployment
1465
+
1466
+ def initialize(**args)
1467
+ update!(**args)
1468
+ end
1469
+
1470
+ # Update properties of this object
1471
+ def update!(**args)
1472
+ @deployment = args[:deployment] if args.key?(:deployment)
1473
+ end
1474
+ end
1475
+
1476
+ # Details of a discovery occurrence.
1477
+ class GrafeasV1beta1DiscoveryDetails
1478
+ include Google::Apis::Core::Hashable
1479
+
1480
+ # Provides information about the analysis status of a discovered resource.
1481
+ # Corresponds to the JSON property `discovered`
1482
+ # @return [Google::Apis::ContaineranalysisV1beta1::Discovered]
1483
+ attr_accessor :discovered
1484
+
1485
+ def initialize(**args)
1486
+ update!(**args)
1487
+ end
1488
+
1489
+ # Update properties of this object
1490
+ def update!(**args)
1491
+ @discovered = args[:discovered] if args.key?(:discovered)
1492
+ end
1493
+ end
1494
+
1495
+ # Details of an image occurrence.
1496
+ class GrafeasV1beta1ImageDetails
1497
+ include Google::Apis::Core::Hashable
1498
+
1499
+ # Derived describes the derived image portion (Occurrence) of the DockerImage
1500
+ # relationship. This image would be produced from a Dockerfile with FROM .
1501
+ # Corresponds to the JSON property `derivedImage`
1502
+ # @return [Google::Apis::ContaineranalysisV1beta1::Derived]
1503
+ attr_accessor :derived_image
1504
+
1505
+ def initialize(**args)
1506
+ update!(**args)
1507
+ end
1508
+
1509
+ # Update properties of this object
1510
+ def update!(**args)
1511
+ @derived_image = args[:derived_image] if args.key?(:derived_image)
1512
+ end
1513
+ end
1514
+
1515
+ #
1516
+ class GrafeasV1beta1IntotoArtifact
1517
+ include Google::Apis::Core::Hashable
1518
+
1519
+ # Defines a hash object for use in Materials and Products.
1520
+ # Corresponds to the JSON property `hashes`
1521
+ # @return [Google::Apis::ContaineranalysisV1beta1::ArtifactHashes]
1522
+ attr_accessor :hashes
1523
+
1524
+ #
1525
+ # Corresponds to the JSON property `resourceUri`
1526
+ # @return [String]
1527
+ attr_accessor :resource_uri
1528
+
1529
+ def initialize(**args)
1530
+ update!(**args)
1531
+ end
1532
+
1533
+ # Update properties of this object
1534
+ def update!(**args)
1535
+ @hashes = args[:hashes] if args.key?(:hashes)
1536
+ @resource_uri = args[:resource_uri] if args.key?(:resource_uri)
1537
+ end
1538
+ end
1539
+
1540
+ # This corresponds to a signed in-toto link - it is made up of one or more
1541
+ # signatures and the in-toto link itself. This is used for occurrences of a
1542
+ # Grafeas in-toto note.
1543
+ class GrafeasV1beta1IntotoDetails
1544
+ include Google::Apis::Core::Hashable
1545
+
1546
+ #
1547
+ # Corresponds to the JSON property `signatures`
1548
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::GrafeasV1beta1IntotoSignature>]
1549
+ attr_accessor :signatures
1550
+
1551
+ # This corresponds to an in-toto link.
1552
+ # Corresponds to the JSON property `signed`
1553
+ # @return [Google::Apis::ContaineranalysisV1beta1::Link]
1554
+ attr_accessor :signed
1555
+
1556
+ def initialize(**args)
1557
+ update!(**args)
1558
+ end
1559
+
1560
+ # Update properties of this object
1561
+ def update!(**args)
1562
+ @signatures = args[:signatures] if args.key?(:signatures)
1563
+ @signed = args[:signed] if args.key?(:signed)
1564
+ end
1565
+ end
1566
+
1567
+ # A signature object consists of the KeyID used and the signature itself.
1568
+ class GrafeasV1beta1IntotoSignature
1569
+ include Google::Apis::Core::Hashable
1570
+
1571
+ #
1572
+ # Corresponds to the JSON property `keyid`
1573
+ # @return [String]
1574
+ attr_accessor :keyid
1575
+
1576
+ #
1577
+ # Corresponds to the JSON property `sig`
1578
+ # @return [String]
1579
+ attr_accessor :sig
1580
+
1581
+ def initialize(**args)
1582
+ update!(**args)
1583
+ end
1584
+
1585
+ # Update properties of this object
1586
+ def update!(**args)
1587
+ @keyid = args[:keyid] if args.key?(:keyid)
1588
+ @sig = args[:sig] if args.key?(:sig)
1589
+ end
1590
+ end
1591
+
1592
+ # Details of a package occurrence.
1593
+ class GrafeasV1beta1PackageDetails
1594
+ include Google::Apis::Core::Hashable
1595
+
1596
+ # This represents how a particular software package may be installed on a system.
1597
+ # Corresponds to the JSON property `installation`
1598
+ # @return [Google::Apis::ContaineranalysisV1beta1::Installation]
1599
+ attr_accessor :installation
1600
+
1601
+ def initialize(**args)
1602
+ update!(**args)
1603
+ end
1604
+
1605
+ # Update properties of this object
1606
+ def update!(**args)
1607
+ @installation = args[:installation] if args.key?(:installation)
1608
+ end
1609
+ end
1610
+
1611
+ # Details of a vulnerability Occurrence.
1612
+ class GrafeasV1beta1VulnerabilityDetails
1613
+ include Google::Apis::Core::Hashable
1614
+
1615
+ # Output only. The CVSS score of this vulnerability. CVSS score is on a scale of
1616
+ # 0-10 where 0 indicates low severity and 10 indicates high severity.
1617
+ # Corresponds to the JSON property `cvssScore`
1618
+ # @return [Float]
1619
+ attr_accessor :cvss_score
1620
+
1621
+ # The distro assigned severity for this vulnerability when it is available, and
1622
+ # note provider assigned severity when distro has not yet assigned a severity
1623
+ # for this vulnerability.
1624
+ # Corresponds to the JSON property `effectiveSeverity`
1625
+ # @return [String]
1626
+ attr_accessor :effective_severity
1627
+
1628
+ # Output only. A detailed description of this vulnerability.
1629
+ # Corresponds to the JSON property `longDescription`
1630
+ # @return [String]
1631
+ attr_accessor :long_description
1632
+
1633
+ # Required. The set of affected locations and their fixes (if available) within
1634
+ # the associated resource.
1635
+ # Corresponds to the JSON property `packageIssue`
1636
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::PackageIssue>]
1637
+ attr_accessor :package_issue
1638
+
1639
+ # Output only. URLs related to this vulnerability.
1640
+ # Corresponds to the JSON property `relatedUrls`
1641
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::RelatedUrl>]
1642
+ attr_accessor :related_urls
1643
+
1644
+ # Output only. The note provider assigned Severity of the vulnerability.
1645
+ # Corresponds to the JSON property `severity`
1646
+ # @return [String]
1647
+ attr_accessor :severity
1648
+
1649
+ # Output only. A one sentence description of this vulnerability.
1650
+ # Corresponds to the JSON property `shortDescription`
1651
+ # @return [String]
1652
+ attr_accessor :short_description
1653
+
1654
+ # The type of package; whether native or non native(ruby gems, node.js packages
1655
+ # etc)
1656
+ # Corresponds to the JSON property `type`
1657
+ # @return [String]
1658
+ attr_accessor :type
1659
+
1660
+ def initialize(**args)
1661
+ update!(**args)
1662
+ end
1663
+
1664
+ # Update properties of this object
1665
+ def update!(**args)
1666
+ @cvss_score = args[:cvss_score] if args.key?(:cvss_score)
1667
+ @effective_severity = args[:effective_severity] if args.key?(:effective_severity)
1668
+ @long_description = args[:long_description] if args.key?(:long_description)
1669
+ @package_issue = args[:package_issue] if args.key?(:package_issue)
1670
+ @related_urls = args[:related_urls] if args.key?(:related_urls)
1671
+ @severity = args[:severity] if args.key?(:severity)
1672
+ @short_description = args[:short_description] if args.key?(:short_description)
1673
+ @type = args[:type] if args.key?(:type)
1674
+ end
1675
+ end
1676
+
1677
+ # Container message for hash values.
1678
+ class HashProp
1679
+ include Google::Apis::Core::Hashable
1680
+
1681
+ # Required. The type of hash that was performed.
1682
+ # Corresponds to the JSON property `type`
1683
+ # @return [String]
1684
+ attr_accessor :type
1685
+
1686
+ # Required. The hash value.
1687
+ # Corresponds to the JSON property `value`
1688
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1689
+ # @return [String]
1690
+ attr_accessor :value
1691
+
1692
+ def initialize(**args)
1693
+ update!(**args)
1694
+ end
1695
+
1696
+ # Update properties of this object
1697
+ def update!(**args)
1698
+ @type = args[:type] if args.key?(:type)
1699
+ @value = args[:value] if args.key?(:value)
1700
+ end
1701
+ end
1702
+
1703
+ # This submessage provides human-readable hints about the purpose of the
1704
+ # authority. Because the name of a note acts as its resource reference, it is
1705
+ # important to disambiguate the canonical name of the Note (which might be a
1706
+ # UUID for security purposes) from "readable" names more suitable for debug
1707
+ # output. Note that these hints should not be used to look up authorities in
1708
+ # security sensitive contexts, such as when looking up attestations to verify.
1709
+ class Hint
1710
+ include Google::Apis::Core::Hashable
1711
+
1712
+ # Required. The human readable name of this attestation authority, for example "
1713
+ # qa".
1714
+ # Corresponds to the JSON property `humanReadableName`
1715
+ # @return [String]
1716
+ attr_accessor :human_readable_name
1717
+
1718
+ def initialize(**args)
1719
+ update!(**args)
1720
+ end
1721
+
1722
+ # Update properties of this object
1723
+ def update!(**args)
1724
+ @human_readable_name = args[:human_readable_name] if args.key?(:human_readable_name)
1725
+ end
1726
+ end
1727
+
1728
+ # This contains the fields corresponding to the definition of a software supply
1729
+ # chain step in an in-toto layout. This information goes into a Grafeas note.
1730
+ class InToto
1731
+ include Google::Apis::Core::Hashable
1732
+
1733
+ # This field contains the expected command used to perform the step.
1734
+ # Corresponds to the JSON property `expectedCommand`
1735
+ # @return [Array<String>]
1736
+ attr_accessor :expected_command
1737
+
1738
+ # The following fields contain in-toto artifact rules identifying the artifacts
1739
+ # that enter this supply chain step, and exit the supply chain step, i.e.
1740
+ # materials and products of the step.
1741
+ # Corresponds to the JSON property `expectedMaterials`
1742
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::ArtifactRule>]
1743
+ attr_accessor :expected_materials
1744
+
1745
+ #
1746
+ # Corresponds to the JSON property `expectedProducts`
1747
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::ArtifactRule>]
1748
+ attr_accessor :expected_products
1749
+
1750
+ # This field contains the public keys that can be used to verify the signatures
1751
+ # on the step metadata.
1752
+ # Corresponds to the JSON property `signingKeys`
1753
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::SigningKey>]
1754
+ attr_accessor :signing_keys
1755
+
1756
+ # This field identifies the name of the step in the supply chain.
1757
+ # Corresponds to the JSON property `stepName`
1758
+ # @return [String]
1759
+ attr_accessor :step_name
1760
+
1761
+ # This field contains a value that indicates the minimum number of keys that
1762
+ # need to be used to sign the step's in-toto link.
1763
+ # Corresponds to the JSON property `threshold`
1764
+ # @return [Fixnum]
1765
+ attr_accessor :threshold
1766
+
1767
+ def initialize(**args)
1768
+ update!(**args)
1769
+ end
1770
+
1771
+ # Update properties of this object
1772
+ def update!(**args)
1773
+ @expected_command = args[:expected_command] if args.key?(:expected_command)
1774
+ @expected_materials = args[:expected_materials] if args.key?(:expected_materials)
1775
+ @expected_products = args[:expected_products] if args.key?(:expected_products)
1776
+ @signing_keys = args[:signing_keys] if args.key?(:signing_keys)
1777
+ @step_name = args[:step_name] if args.key?(:step_name)
1778
+ @threshold = args[:threshold] if args.key?(:threshold)
1779
+ end
1780
+ end
1781
+
1782
+ # This represents how a particular software package may be installed on a system.
1783
+ class Installation
1784
+ include Google::Apis::Core::Hashable
1785
+
1786
+ # Required. All of the places within the filesystem versions of this package
1787
+ # have been found.
1788
+ # Corresponds to the JSON property `location`
1789
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Location>]
1790
+ attr_accessor :location
1791
+
1792
+ # Output only. The name of the installed package.
1793
+ # Corresponds to the JSON property `name`
1794
+ # @return [String]
1795
+ attr_accessor :name
1796
+
1797
+ def initialize(**args)
1798
+ update!(**args)
1799
+ end
1800
+
1801
+ # Update properties of this object
1802
+ def update!(**args)
1803
+ @location = args[:location] if args.key?(:location)
1804
+ @name = args[:name] if args.key?(:name)
1805
+ end
1806
+ end
1807
+
1808
+ #
1809
+ class KnowledgeBase
1810
+ include Google::Apis::Core::Hashable
1811
+
1812
+ # The KB name (generally of the form KB[0-9]+ i.e. KB123456).
1813
+ # Corresponds to the JSON property `name`
1814
+ # @return [String]
1815
+ attr_accessor :name
1816
+
1817
+ # A link to the KB in the Windows update catalog - https://www.catalog.update.
1818
+ # microsoft.com/
1819
+ # Corresponds to the JSON property `url`
1820
+ # @return [String]
1821
+ attr_accessor :url
1822
+
1823
+ def initialize(**args)
1824
+ update!(**args)
1825
+ end
1826
+
1827
+ # Update properties of this object
1828
+ def update!(**args)
1829
+ @name = args[:name] if args.key?(:name)
1830
+ @url = args[:url] if args.key?(:url)
1831
+ end
1832
+ end
1833
+
1834
+ # Layer holds metadata specific to a layer of a Docker image.
1835
+ class Layer
1836
+ include Google::Apis::Core::Hashable
1837
+
1838
+ # The recovered arguments to the Dockerfile directive.
1839
+ # Corresponds to the JSON property `arguments`
1840
+ # @return [String]
1841
+ attr_accessor :arguments
1842
+
1843
+ # Required. The recovered Dockerfile directive used to construct this layer.
1844
+ # Corresponds to the JSON property `directive`
1845
+ # @return [String]
1846
+ attr_accessor :directive
1847
+
1848
+ def initialize(**args)
1849
+ update!(**args)
1850
+ end
1851
+
1852
+ # Update properties of this object
1853
+ def update!(**args)
1854
+ @arguments = args[:arguments] if args.key?(:arguments)
1855
+ @directive = args[:directive] if args.key?(:directive)
1856
+ end
1857
+ end
1858
+
1859
+ # This corresponds to an in-toto link.
1860
+ class Link
1861
+ include Google::Apis::Core::Hashable
1862
+
1863
+ # Defines an object for the byproducts field in in-toto links. The suggested
1864
+ # fields are "stderr", "stdout", and "return-value".
1865
+ # Corresponds to the JSON property `byproducts`
1866
+ # @return [Google::Apis::ContaineranalysisV1beta1::ByProducts]
1867
+ attr_accessor :byproducts
1868
+
1869
+ # This field contains the full command executed for the step. This can also be
1870
+ # empty if links are generated for operations that aren't directly mapped to a
1871
+ # specific command. Each term in the command is an independent string in the
1872
+ # list. An example of a command in the in-toto metadata field is: "command": ["
1873
+ # git", "clone", "https://github.com/in-toto/demo-project.git"]
1874
+ # Corresponds to the JSON property `command`
1875
+ # @return [Array<String>]
1876
+ attr_accessor :command
1877
+
1878
+ # Defines an object for the environment field in in-toto links. The suggested
1879
+ # fields are "variables", "filesystem", and "workdir".
1880
+ # Corresponds to the JSON property `environment`
1881
+ # @return [Google::Apis::ContaineranalysisV1beta1::Environment]
1882
+ attr_accessor :environment
1883
+
1884
+ # Materials are the supply chain artifacts that go into the step and are used
1885
+ # for the operation performed. The key of the map is the path of the artifact
1886
+ # and the structure contains the recorded hash information. An example is: "
1887
+ # materials": [ ` "resource_uri": "foo/bar", "hashes": ` "sha256": "ebebf...", :
1888
+ # ` ` ]
1889
+ # Corresponds to the JSON property `materials`
1890
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::GrafeasV1beta1IntotoArtifact>]
1891
+ attr_accessor :materials
1892
+
1893
+ # Products are the supply chain artifacts generated as a result of the step. The
1894
+ # structure is identical to that of materials.
1895
+ # Corresponds to the JSON property `products`
1896
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::GrafeasV1beta1IntotoArtifact>]
1897
+ attr_accessor :products
1898
+
1899
+ def initialize(**args)
1900
+ update!(**args)
1901
+ end
1902
+
1903
+ # Update properties of this object
1904
+ def update!(**args)
1905
+ @byproducts = args[:byproducts] if args.key?(:byproducts)
1906
+ @command = args[:command] if args.key?(:command)
1907
+ @environment = args[:environment] if args.key?(:environment)
1908
+ @materials = args[:materials] if args.key?(:materials)
1909
+ @products = args[:products] if args.key?(:products)
1910
+ end
1911
+ end
1912
+
1913
+ # Response for listing occurrences for a note.
1914
+ class ListNoteOccurrencesResponse
1915
+ include Google::Apis::Core::Hashable
1916
+
1917
+ # Token to provide to skip to a particular spot in the list.
1918
+ # Corresponds to the JSON property `nextPageToken`
1919
+ # @return [String]
1920
+ attr_accessor :next_page_token
1921
+
1922
+ # The occurrences attached to the specified note.
1923
+ # Corresponds to the JSON property `occurrences`
1924
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Occurrence>]
1925
+ attr_accessor :occurrences
1926
+
1927
+ def initialize(**args)
1928
+ update!(**args)
1929
+ end
1930
+
1931
+ # Update properties of this object
1932
+ def update!(**args)
1933
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1934
+ @occurrences = args[:occurrences] if args.key?(:occurrences)
1935
+ end
1936
+ end
1937
+
1938
+ # Response for listing notes.
1939
+ class ListNotesResponse
1940
+ include Google::Apis::Core::Hashable
1941
+
1942
+ # The next pagination token in the list response. It should be used as `
1943
+ # page_token` for the following request. An empty value means no more results.
1944
+ # Corresponds to the JSON property `nextPageToken`
1945
+ # @return [String]
1946
+ attr_accessor :next_page_token
1947
+
1948
+ # The notes requested.
1949
+ # Corresponds to the JSON property `notes`
1950
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Note>]
1951
+ attr_accessor :notes
1952
+
1953
+ def initialize(**args)
1954
+ update!(**args)
1955
+ end
1956
+
1957
+ # Update properties of this object
1958
+ def update!(**args)
1959
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1960
+ @notes = args[:notes] if args.key?(:notes)
1961
+ end
1962
+ end
1963
+
1964
+ # Response for listing occurrences.
1965
+ class ListOccurrencesResponse
1966
+ include Google::Apis::Core::Hashable
1967
+
1968
+ # The next pagination token in the list response. It should be used as `
1969
+ # page_token` for the following request. An empty value means no more results.
1970
+ # Corresponds to the JSON property `nextPageToken`
1971
+ # @return [String]
1972
+ attr_accessor :next_page_token
1973
+
1974
+ # The occurrences requested.
1975
+ # Corresponds to the JSON property `occurrences`
1976
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Occurrence>]
1977
+ attr_accessor :occurrences
1978
+
1979
+ def initialize(**args)
1980
+ update!(**args)
1981
+ end
1982
+
1983
+ # Update properties of this object
1984
+ def update!(**args)
1985
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1986
+ @occurrences = args[:occurrences] if args.key?(:occurrences)
1987
+ end
1988
+ end
1989
+
1990
+ # Response for listing scan configurations.
1991
+ class ListScanConfigsResponse
1992
+ include Google::Apis::Core::Hashable
1993
+
1994
+ # The next pagination token in the list response. It should be used as `
1995
+ # page_token` for the following request. An empty value means no more results.
1996
+ # Corresponds to the JSON property `nextPageToken`
1997
+ # @return [String]
1998
+ attr_accessor :next_page_token
1999
+
2000
+ # The scan configurations requested.
2001
+ # Corresponds to the JSON property `scanConfigs`
2002
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::ScanConfig>]
2003
+ attr_accessor :scan_configs
2004
+
2005
+ def initialize(**args)
2006
+ update!(**args)
2007
+ end
2008
+
2009
+ # Update properties of this object
2010
+ def update!(**args)
2011
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
2012
+ @scan_configs = args[:scan_configs] if args.key?(:scan_configs)
2013
+ end
2014
+ end
2015
+
2016
+ # An occurrence of a particular package installation found within a system's
2017
+ # filesystem. E.g., glibc was found in `/var/lib/dpkg/status`.
2018
+ class Location
2019
+ include Google::Apis::Core::Hashable
2020
+
2021
+ # Required. The CPE URI in [CPE format](https://cpe.mitre.org/specification/)
2022
+ # denoting the package manager version distributing a package.
2023
+ # Corresponds to the JSON property `cpeUri`
2024
+ # @return [String]
2025
+ attr_accessor :cpe_uri
2026
+
2027
+ # The path from which we gathered that this package/version is installed.
2028
+ # Corresponds to the JSON property `path`
2029
+ # @return [String]
2030
+ attr_accessor :path
2031
+
2032
+ # Version contains structured information about the version of a package.
2033
+ # Corresponds to the JSON property `version`
2034
+ # @return [Google::Apis::ContaineranalysisV1beta1::Version]
2035
+ attr_accessor :version
2036
+
2037
+ def initialize(**args)
2038
+ update!(**args)
2039
+ end
2040
+
2041
+ # Update properties of this object
2042
+ def update!(**args)
2043
+ @cpe_uri = args[:cpe_uri] if args.key?(:cpe_uri)
2044
+ @path = args[:path] if args.key?(:path)
2045
+ @version = args[:version] if args.key?(:version)
2046
+ end
2047
+ end
2048
+
2049
+ # A type of analysis that can be done for a resource.
2050
+ class Note
2051
+ include Google::Apis::Core::Hashable
2052
+
2053
+ # Note kind that represents a logical attestation "role" or "authority". For
2054
+ # example, an organization might have one `Authority` for "QA" and one for "
2055
+ # build". This note is intended to act strictly as a grouping mechanism for the
2056
+ # attached occurrences (Attestations). This grouping mechanism also provides a
2057
+ # security boundary, since IAM ACLs gate the ability for a principle to attach
2058
+ # an occurrence to a given note. It also provides a single point of lookup to
2059
+ # find all attached attestation occurrences, even if they don't all live in the
2060
+ # same project.
2061
+ # Corresponds to the JSON property `attestationAuthority`
2062
+ # @return [Google::Apis::ContaineranalysisV1beta1::Authority]
2063
+ attr_accessor :attestation_authority
2064
+
2065
+ # Basis describes the base image portion (Note) of the DockerImage relationship.
2066
+ # Linked occurrences are derived from this or an equivalent image via: FROM Or
2067
+ # an equivalent reference, e.g. a tag of the resource_url.
2068
+ # Corresponds to the JSON property `baseImage`
2069
+ # @return [Google::Apis::ContaineranalysisV1beta1::Basis]
2070
+ attr_accessor :base_image
2071
+
2072
+ # Note holding the version of the provider's builder and the signature of the
2073
+ # provenance message in the build details occurrence.
2074
+ # Corresponds to the JSON property `build`
2075
+ # @return [Google::Apis::ContaineranalysisV1beta1::Build]
2076
+ attr_accessor :build
2077
+
2078
+ # Output only. The time this note was created. This field can be used as a
2079
+ # filter in list requests.
2080
+ # Corresponds to the JSON property `createTime`
2081
+ # @return [String]
2082
+ attr_accessor :create_time
2083
+
2084
+ # An artifact that can be deployed in some runtime.
2085
+ # Corresponds to the JSON property `deployable`
2086
+ # @return [Google::Apis::ContaineranalysisV1beta1::Deployable]
2087
+ attr_accessor :deployable
2088
+
2089
+ # A note that indicates a type of analysis a provider would perform. This note
2090
+ # exists in a provider's project. A `Discovery` occurrence is created in a
2091
+ # consumer's project at the start of analysis.
2092
+ # Corresponds to the JSON property `discovery`
2093
+ # @return [Google::Apis::ContaineranalysisV1beta1::Discovery]
2094
+ attr_accessor :discovery
2095
+
2096
+ # Time of expiration for this note. Empty if note does not expire.
2097
+ # Corresponds to the JSON property `expirationTime`
2098
+ # @return [String]
2099
+ attr_accessor :expiration_time
2100
+
2101
+ # This contains the fields corresponding to the definition of a software supply
2102
+ # chain step in an in-toto layout. This information goes into a Grafeas note.
2103
+ # Corresponds to the JSON property `intoto`
2104
+ # @return [Google::Apis::ContaineranalysisV1beta1::InToto]
2105
+ attr_accessor :intoto
2106
+
2107
+ # Output only. The type of analysis. This field can be used as a filter in list
2108
+ # requests.
2109
+ # Corresponds to the JSON property `kind`
2110
+ # @return [String]
2111
+ attr_accessor :kind
2112
+
2113
+ # A detailed description of this note.
2114
+ # Corresponds to the JSON property `longDescription`
2115
+ # @return [String]
2116
+ attr_accessor :long_description
2117
+
2118
+ # Output only. The name of the note in the form of `projects/[PROVIDER_ID]/notes/
2119
+ # [NOTE_ID]`.
2120
+ # Corresponds to the JSON property `name`
2121
+ # @return [String]
2122
+ attr_accessor :name
2123
+
2124
+ # This represents a particular package that is distributed over various channels.
2125
+ # E.g., glibc (aka libc6) is distributed by many, at various versions.
2126
+ # Corresponds to the JSON property `package`
2127
+ # @return [Google::Apis::ContaineranalysisV1beta1::Package]
2128
+ attr_accessor :package
2129
+
2130
+ # Other notes related to this note.
2131
+ # Corresponds to the JSON property `relatedNoteNames`
2132
+ # @return [Array<String>]
2133
+ attr_accessor :related_note_names
2134
+
2135
+ # URLs associated with this note.
2136
+ # Corresponds to the JSON property `relatedUrl`
2137
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::RelatedUrl>]
2138
+ attr_accessor :related_url
2139
+
2140
+ # A one sentence description of this note.
2141
+ # Corresponds to the JSON property `shortDescription`
2142
+ # @return [String]
2143
+ attr_accessor :short_description
2144
+
2145
+ # Output only. The time this note was last updated. This field can be used as a
2146
+ # filter in list requests.
2147
+ # Corresponds to the JSON property `updateTime`
2148
+ # @return [String]
2149
+ attr_accessor :update_time
2150
+
2151
+ # Vulnerability provides metadata about a security vulnerability in a Note.
2152
+ # Corresponds to the JSON property `vulnerability`
2153
+ # @return [Google::Apis::ContaineranalysisV1beta1::Vulnerability]
2154
+ attr_accessor :vulnerability
2155
+
2156
+ def initialize(**args)
2157
+ update!(**args)
2158
+ end
2159
+
2160
+ # Update properties of this object
2161
+ def update!(**args)
2162
+ @attestation_authority = args[:attestation_authority] if args.key?(:attestation_authority)
2163
+ @base_image = args[:base_image] if args.key?(:base_image)
2164
+ @build = args[:build] if args.key?(:build)
2165
+ @create_time = args[:create_time] if args.key?(:create_time)
2166
+ @deployable = args[:deployable] if args.key?(:deployable)
2167
+ @discovery = args[:discovery] if args.key?(:discovery)
2168
+ @expiration_time = args[:expiration_time] if args.key?(:expiration_time)
2169
+ @intoto = args[:intoto] if args.key?(:intoto)
2170
+ @kind = args[:kind] if args.key?(:kind)
2171
+ @long_description = args[:long_description] if args.key?(:long_description)
2172
+ @name = args[:name] if args.key?(:name)
2173
+ @package = args[:package] if args.key?(:package)
2174
+ @related_note_names = args[:related_note_names] if args.key?(:related_note_names)
2175
+ @related_url = args[:related_url] if args.key?(:related_url)
2176
+ @short_description = args[:short_description] if args.key?(:short_description)
2177
+ @update_time = args[:update_time] if args.key?(:update_time)
2178
+ @vulnerability = args[:vulnerability] if args.key?(:vulnerability)
2179
+ end
2180
+ end
2181
+
2182
+ # An instance of an analysis type that has been found on a resource.
2183
+ class Occurrence
2184
+ include Google::Apis::Core::Hashable
2185
+
2186
+ # Details of an attestation occurrence.
2187
+ # Corresponds to the JSON property `attestation`
2188
+ # @return [Google::Apis::ContaineranalysisV1beta1::Details]
2189
+ attr_accessor :attestation
2190
+
2191
+ # Details of a build occurrence.
2192
+ # Corresponds to the JSON property `build`
2193
+ # @return [Google::Apis::ContaineranalysisV1beta1::GrafeasV1beta1BuildDetails]
2194
+ attr_accessor :build
2195
+
2196
+ # Output only. The time this occurrence was created.
2197
+ # Corresponds to the JSON property `createTime`
2198
+ # @return [String]
2199
+ attr_accessor :create_time
2200
+
2201
+ # Details of a deployment occurrence.
2202
+ # Corresponds to the JSON property `deployment`
2203
+ # @return [Google::Apis::ContaineranalysisV1beta1::GrafeasV1beta1DeploymentDetails]
2204
+ attr_accessor :deployment
2205
+
2206
+ # Details of an image occurrence.
2207
+ # Corresponds to the JSON property `derivedImage`
2208
+ # @return [Google::Apis::ContaineranalysisV1beta1::GrafeasV1beta1ImageDetails]
2209
+ attr_accessor :derived_image
2210
+
2211
+ # Details of a discovery occurrence.
2212
+ # Corresponds to the JSON property `discovered`
2213
+ # @return [Google::Apis::ContaineranalysisV1beta1::GrafeasV1beta1DiscoveryDetails]
2214
+ attr_accessor :discovered
2215
+
2216
+ # Details of a package occurrence.
2217
+ # Corresponds to the JSON property `installation`
2218
+ # @return [Google::Apis::ContaineranalysisV1beta1::GrafeasV1beta1PackageDetails]
2219
+ attr_accessor :installation
2220
+
2221
+ # This corresponds to a signed in-toto link - it is made up of one or more
2222
+ # signatures and the in-toto link itself. This is used for occurrences of a
2223
+ # Grafeas in-toto note.
2224
+ # Corresponds to the JSON property `intoto`
2225
+ # @return [Google::Apis::ContaineranalysisV1beta1::GrafeasV1beta1IntotoDetails]
2226
+ attr_accessor :intoto
2227
+
2228
+ # Output only. This explicitly denotes which of the occurrence details are
2229
+ # specified. This field can be used as a filter in list requests.
2230
+ # Corresponds to the JSON property `kind`
2231
+ # @return [String]
2232
+ attr_accessor :kind
2233
+
2234
+ # Output only. The name of the occurrence in the form of `projects/[PROJECT_ID]/
2235
+ # occurrences/[OCCURRENCE_ID]`.
2236
+ # Corresponds to the JSON property `name`
2237
+ # @return [String]
2238
+ attr_accessor :name
2239
+
2240
+ # Required. Immutable. The analysis note associated with this occurrence, in the
2241
+ # form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be used as a
2242
+ # filter in list requests.
2243
+ # Corresponds to the JSON property `noteName`
2244
+ # @return [String]
2245
+ attr_accessor :note_name
2246
+
2247
+ # A description of actions that can be taken to remedy the note.
2248
+ # Corresponds to the JSON property `remediation`
2249
+ # @return [String]
2250
+ attr_accessor :remediation
2251
+
2252
+ # An entity that can have metadata. For example, a Docker image.
2253
+ # Corresponds to the JSON property `resource`
2254
+ # @return [Google::Apis::ContaineranalysisV1beta1::Resource]
2255
+ attr_accessor :resource
2256
+
2257
+ # Output only. The time this occurrence was last updated.
2258
+ # Corresponds to the JSON property `updateTime`
2259
+ # @return [String]
2260
+ attr_accessor :update_time
2261
+
2262
+ # Details of a vulnerability Occurrence.
2263
+ # Corresponds to the JSON property `vulnerability`
2264
+ # @return [Google::Apis::ContaineranalysisV1beta1::GrafeasV1beta1VulnerabilityDetails]
2265
+ attr_accessor :vulnerability
2266
+
2267
+ def initialize(**args)
2268
+ update!(**args)
2269
+ end
2270
+
2271
+ # Update properties of this object
2272
+ def update!(**args)
2273
+ @attestation = args[:attestation] if args.key?(:attestation)
2274
+ @build = args[:build] if args.key?(:build)
2275
+ @create_time = args[:create_time] if args.key?(:create_time)
2276
+ @deployment = args[:deployment] if args.key?(:deployment)
2277
+ @derived_image = args[:derived_image] if args.key?(:derived_image)
2278
+ @discovered = args[:discovered] if args.key?(:discovered)
2279
+ @installation = args[:installation] if args.key?(:installation)
2280
+ @intoto = args[:intoto] if args.key?(:intoto)
2281
+ @kind = args[:kind] if args.key?(:kind)
2282
+ @name = args[:name] if args.key?(:name)
2283
+ @note_name = args[:note_name] if args.key?(:note_name)
2284
+ @remediation = args[:remediation] if args.key?(:remediation)
2285
+ @resource = args[:resource] if args.key?(:resource)
2286
+ @update_time = args[:update_time] if args.key?(:update_time)
2287
+ @vulnerability = args[:vulnerability] if args.key?(:vulnerability)
2288
+ end
2289
+ end
2290
+
2291
+ # This represents a particular package that is distributed over various channels.
2292
+ # E.g., glibc (aka libc6) is distributed by many, at various versions.
2293
+ class Package
2294
+ include Google::Apis::Core::Hashable
2295
+
2296
+ # The various channels by which a package is distributed.
2297
+ # Corresponds to the JSON property `distribution`
2298
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Distribution>]
2299
+ attr_accessor :distribution
2300
+
2301
+ # Required. Immutable. The name of the package.
2302
+ # Corresponds to the JSON property `name`
2303
+ # @return [String]
2304
+ attr_accessor :name
2305
+
2306
+ def initialize(**args)
2307
+ update!(**args)
2308
+ end
2309
+
2310
+ # Update properties of this object
2311
+ def update!(**args)
2312
+ @distribution = args[:distribution] if args.key?(:distribution)
2313
+ @name = args[:name] if args.key?(:name)
2314
+ end
2315
+ end
2316
+
2317
+ # This message wraps a location affected by a vulnerability and its associated
2318
+ # fix (if one is available).
2319
+ class PackageIssue
2320
+ include Google::Apis::Core::Hashable
2321
+
2322
+ # The location of the vulnerability.
2323
+ # Corresponds to the JSON property `affectedLocation`
2324
+ # @return [Google::Apis::ContaineranalysisV1beta1::VulnerabilityLocation]
2325
+ attr_accessor :affected_location
2326
+
2327
+ # The location of the vulnerability.
2328
+ # Corresponds to the JSON property `fixedLocation`
2329
+ # @return [Google::Apis::ContaineranalysisV1beta1::VulnerabilityLocation]
2330
+ attr_accessor :fixed_location
2331
+
2332
+ # Deprecated, use Details.effective_severity instead The severity (e.g., distro
2333
+ # assigned severity) for this vulnerability.
2334
+ # Corresponds to the JSON property `severityName`
2335
+ # @return [String]
2336
+ attr_accessor :severity_name
2337
+
2338
+ def initialize(**args)
2339
+ update!(**args)
2340
+ end
2341
+
2342
+ # Update properties of this object
2343
+ def update!(**args)
2344
+ @affected_location = args[:affected_location] if args.key?(:affected_location)
2345
+ @fixed_location = args[:fixed_location] if args.key?(:fixed_location)
2346
+ @severity_name = args[:severity_name] if args.key?(:severity_name)
2347
+ end
2348
+ end
2349
+
2350
+ # An attestation wrapper with a PGP-compatible signature. This message only
2351
+ # supports `ATTACHED` signatures, where the payload that is signed is included
2352
+ # alongside the signature itself in the same file.
2353
+ class PgpSignedAttestation
2354
+ include Google::Apis::Core::Hashable
2355
+
2356
+ # Type (for example schema) of the attestation payload that was signed. The
2357
+ # verifier must ensure that the provided type is one that the verifier supports,
2358
+ # and that the attestation payload is a valid instantiation of that type (for
2359
+ # example by validating a JSON schema).
2360
+ # Corresponds to the JSON property `contentType`
2361
+ # @return [String]
2362
+ attr_accessor :content_type
2363
+
2364
+ # The cryptographic fingerprint of the key used to generate the signature, as
2365
+ # output by, e.g. `gpg --list-keys`. This should be the version 4, full 160-bit
2366
+ # fingerprint, expressed as a 40 character hexidecimal string. See https://tools.
2367
+ # ietf.org/html/rfc4880#section-12.2 for details. Implementations may choose to
2368
+ # acknowledge "LONG", "SHORT", or other abbreviated key IDs, but only the full
2369
+ # fingerprint is guaranteed to work. In gpg, the full fingerprint can be
2370
+ # retrieved from the `fpr` field returned when calling --list-keys with --with-
2371
+ # colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs
2372
+ # \ --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:...... fpr::::
2373
+ # :::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is `
2374
+ # 24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.
2375
+ # Corresponds to the JSON property `pgpKeyId`
2376
+ # @return [String]
2377
+ attr_accessor :pgp_key_id
2378
+
2379
+ # Required. The raw content of the signature, as output by GNU Privacy Guard (
2380
+ # GPG) or equivalent. Since this message only supports attached signatures, the
2381
+ # payload that was signed must be attached. While the signature format supported
2382
+ # is dependent on the verification implementation, currently only ASCII-armored (
2383
+ # `--armor` to gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg)
2384
+ # are supported. Concretely, `gpg --sign --armor --output=signature.gpg payload.
2385
+ # json` will create the signature content expected in this field in `signature.
2386
+ # gpg` for the `payload.json` attestation payload.
2387
+ # Corresponds to the JSON property `signature`
2388
+ # @return [String]
2389
+ attr_accessor :signature
2390
+
2391
+ def initialize(**args)
2392
+ update!(**args)
2393
+ end
2394
+
2395
+ # Update properties of this object
2396
+ def update!(**args)
2397
+ @content_type = args[:content_type] if args.key?(:content_type)
2398
+ @pgp_key_id = args[:pgp_key_id] if args.key?(:pgp_key_id)
2399
+ @signature = args[:signature] if args.key?(:signature)
2400
+ end
2401
+ end
2402
+
2403
+ # An Identity and Access Management (IAM) policy, which specifies access
2404
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
2405
+ # A `binding` binds one or more `members` to a single `role`. Members can be
2406
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
2407
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
2408
+ # role or a user-created custom role. For some types of Google Cloud resources,
2409
+ # a `binding` can also specify a `condition`, which is a logical expression that
2410
+ # allows access to a resource only if the expression evaluates to `true`. A
2411
+ # condition can add constraints based on attributes of the request, the resource,
2412
+ # or both. To learn which resources support conditions in their IAM policies,
2413
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
2414
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
2415
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
2416
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
2417
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
2418
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
2419
+ # title": "expirable access", "description": "Does not grant access after Sep
2420
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
2421
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
2422
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
2423
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
2424
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
2425
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
2426
+ # description: Does not grant access after Sep 2020 expression: request.time <
2427
+ # timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= - version: 3 For a
2428
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
2429
+ # google.com/iam/docs/).
2430
+ class Policy
2431
+ include Google::Apis::Core::Hashable
2432
+
2433
+ # Associates a list of `members` to a `role`. Optionally, may specify a `
2434
+ # condition` that determines how and when the `bindings` are applied. Each of
2435
+ # the `bindings` must contain at least one member.
2436
+ # Corresponds to the JSON property `bindings`
2437
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Binding>]
2438
+ attr_accessor :bindings
2439
+
2440
+ # `etag` is used for optimistic concurrency control as a way to help prevent
2441
+ # simultaneous updates of a policy from overwriting each other. It is strongly
2442
+ # suggested that systems make use of the `etag` in the read-modify-write cycle
2443
+ # to perform policy updates in order to avoid race conditions: An `etag` is
2444
+ # returned in the response to `getIamPolicy`, and systems are expected to put
2445
+ # that etag in the request to `setIamPolicy` to ensure that their change will be
2446
+ # applied to the same version of the policy. **Important:** If you use IAM
2447
+ # Conditions, you must include the `etag` field whenever you call `setIamPolicy`.
2448
+ # If you omit this field, then IAM allows you to overwrite a version `3` policy
2449
+ # with a version `1` policy, and all of the conditions in the version `3` policy
2450
+ # are lost.
2451
+ # Corresponds to the JSON property `etag`
2452
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
2453
+ # @return [String]
2454
+ attr_accessor :etag
2455
+
2456
+ # Specifies the format of the policy. Valid values are `0`, `1`, and `3`.
2457
+ # Requests that specify an invalid value are rejected. Any operation that
2458
+ # affects conditional role bindings must specify version `3`. This requirement
2459
+ # applies to the following operations: * Getting a policy that includes a
2460
+ # conditional role binding * Adding a conditional role binding to a policy *
2461
+ # Changing a conditional role binding in a policy * Removing any role binding,
2462
+ # with or without a condition, from a policy that includes conditions **
2463
+ # Important:** If you use IAM Conditions, you must include the `etag` field
2464
+ # whenever you call `setIamPolicy`. If you omit this field, then IAM allows you
2465
+ # to overwrite a version `3` policy with a version `1` policy, and all of the
2466
+ # conditions in the version `3` policy are lost. If a policy does not include
2467
+ # any conditions, operations on that policy may specify any valid version or
2468
+ # leave the field unset. To learn which resources support conditions in their
2469
+ # IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/
2470
+ # conditions/resource-policies).
2471
+ # Corresponds to the JSON property `version`
2472
+ # @return [Fixnum]
2473
+ attr_accessor :version
2474
+
2475
+ def initialize(**args)
2476
+ update!(**args)
2477
+ end
2478
+
2479
+ # Update properties of this object
2480
+ def update!(**args)
2481
+ @bindings = args[:bindings] if args.key?(:bindings)
2482
+ @etag = args[:etag] if args.key?(:etag)
2483
+ @version = args[:version] if args.key?(:version)
2484
+ end
2485
+ end
2486
+
2487
+ # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31)
2488
+ # and a repo name within that project.
2489
+ class ProjectRepoId
2490
+ include Google::Apis::Core::Hashable
2491
+
2492
+ # The ID of the project.
2493
+ # Corresponds to the JSON property `projectId`
2494
+ # @return [String]
2495
+ attr_accessor :project_id
2496
+
2497
+ # The name of the repo. Leave empty for the default repo.
2498
+ # Corresponds to the JSON property `repoName`
2499
+ # @return [String]
2500
+ attr_accessor :repo_name
2501
+
2502
+ def initialize(**args)
2503
+ update!(**args)
2504
+ end
2505
+
2506
+ # Update properties of this object
2507
+ def update!(**args)
2508
+ @project_id = args[:project_id] if args.key?(:project_id)
2509
+ @repo_name = args[:repo_name] if args.key?(:repo_name)
2510
+ end
2511
+ end
2512
+
2513
+ # Metadata for any related URL information.
2514
+ class RelatedUrl
2515
+ include Google::Apis::Core::Hashable
2516
+
2517
+ # Label to describe usage of the URL.
2518
+ # Corresponds to the JSON property `label`
2519
+ # @return [String]
2520
+ attr_accessor :label
2521
+
2522
+ # Specific URL associated with the resource.
2523
+ # Corresponds to the JSON property `url`
2524
+ # @return [String]
2525
+ attr_accessor :url
2526
+
2527
+ def initialize(**args)
2528
+ update!(**args)
2529
+ end
2530
+
2531
+ # Update properties of this object
2532
+ def update!(**args)
2533
+ @label = args[:label] if args.key?(:label)
2534
+ @url = args[:url] if args.key?(:url)
2535
+ end
2536
+ end
2537
+
2538
+ # A unique identifier for a Cloud Repo.
2539
+ class RepoId
2540
+ include Google::Apis::Core::Hashable
2541
+
2542
+ # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31)
2543
+ # and a repo name within that project.
2544
+ # Corresponds to the JSON property `projectRepoId`
2545
+ # @return [Google::Apis::ContaineranalysisV1beta1::ProjectRepoId]
2546
+ attr_accessor :project_repo_id
2547
+
2548
+ # A server-assigned, globally unique identifier.
2549
+ # Corresponds to the JSON property `uid`
2550
+ # @return [String]
2551
+ attr_accessor :uid
2552
+
2553
+ def initialize(**args)
2554
+ update!(**args)
2555
+ end
2556
+
2557
+ # Update properties of this object
2558
+ def update!(**args)
2559
+ @project_repo_id = args[:project_repo_id] if args.key?(:project_repo_id)
2560
+ @uid = args[:uid] if args.key?(:uid)
2561
+ end
2562
+ end
2563
+
2564
+ # An entity that can have metadata. For example, a Docker image.
2565
+ class Resource
2566
+ include Google::Apis::Core::Hashable
2567
+
2568
+ # Container message for hash values.
2569
+ # Corresponds to the JSON property `contentHash`
2570
+ # @return [Google::Apis::ContaineranalysisV1beta1::HashProp]
2571
+ attr_accessor :content_hash
2572
+
2573
+ # Deprecated, do not use. Use uri instead. The name of the resource. For example,
2574
+ # the name of a Docker image - "Debian".
2575
+ # Corresponds to the JSON property `name`
2576
+ # @return [String]
2577
+ attr_accessor :name
2578
+
2579
+ # Required. The unique URI of the resource. For example, `https://gcr.io/project/
2580
+ # image@sha256:foo` for a Docker image.
2581
+ # Corresponds to the JSON property `uri`
2582
+ # @return [String]
2583
+ attr_accessor :uri
2584
+
2585
+ def initialize(**args)
2586
+ update!(**args)
2587
+ end
2588
+
2589
+ # Update properties of this object
2590
+ def update!(**args)
2591
+ @content_hash = args[:content_hash] if args.key?(:content_hash)
2592
+ @name = args[:name] if args.key?(:name)
2593
+ @uri = args[:uri] if args.key?(:uri)
2594
+ end
2595
+ end
2596
+
2597
+ # A scan configuration specifies whether Cloud components in a project have a
2598
+ # particular type of analysis being run. For example, it can configure whether
2599
+ # vulnerability scanning is being done on Docker images or not.
2600
+ class ScanConfig
2601
+ include Google::Apis::Core::Hashable
2602
+
2603
+ # Output only. The time this scan config was created.
2604
+ # Corresponds to the JSON property `createTime`
2605
+ # @return [String]
2606
+ attr_accessor :create_time
2607
+
2608
+ # Output only. A human-readable description of what the scan configuration does.
2609
+ # Corresponds to the JSON property `description`
2610
+ # @return [String]
2611
+ attr_accessor :description
2612
+
2613
+ # Whether the scan is enabled.
2614
+ # Corresponds to the JSON property `enabled`
2615
+ # @return [Boolean]
2616
+ attr_accessor :enabled
2617
+ alias_method :enabled?, :enabled
2618
+
2619
+ # Output only. The name of the scan configuration in the form of `projects/[
2620
+ # PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`.
2621
+ # Corresponds to the JSON property `name`
2622
+ # @return [String]
2623
+ attr_accessor :name
2624
+
2625
+ # Output only. The time this scan config was last updated.
2626
+ # Corresponds to the JSON property `updateTime`
2627
+ # @return [String]
2628
+ attr_accessor :update_time
2629
+
2630
+ def initialize(**args)
2631
+ update!(**args)
2632
+ end
2633
+
2634
+ # Update properties of this object
2635
+ def update!(**args)
2636
+ @create_time = args[:create_time] if args.key?(:create_time)
2637
+ @description = args[:description] if args.key?(:description)
2638
+ @enabled = args[:enabled] if args.key?(:enabled)
2639
+ @name = args[:name] if args.key?(:name)
2640
+ @update_time = args[:update_time] if args.key?(:update_time)
2641
+ end
2642
+ end
2643
+
2644
+ # Request message for `SetIamPolicy` method.
2645
+ class SetIamPolicyRequest
2646
+ include Google::Apis::Core::Hashable
2647
+
2648
+ # An Identity and Access Management (IAM) policy, which specifies access
2649
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
2650
+ # A `binding` binds one or more `members` to a single `role`. Members can be
2651
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
2652
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
2653
+ # role or a user-created custom role. For some types of Google Cloud resources,
2654
+ # a `binding` can also specify a `condition`, which is a logical expression that
2655
+ # allows access to a resource only if the expression evaluates to `true`. A
2656
+ # condition can add constraints based on attributes of the request, the resource,
2657
+ # or both. To learn which resources support conditions in their IAM policies,
2658
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
2659
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
2660
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
2661
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
2662
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
2663
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
2664
+ # title": "expirable access", "description": "Does not grant access after Sep
2665
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
2666
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
2667
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
2668
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
2669
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
2670
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
2671
+ # description: Does not grant access after Sep 2020 expression: request.time <
2672
+ # timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= - version: 3 For a
2673
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
2674
+ # google.com/iam/docs/).
2675
+ # Corresponds to the JSON property `policy`
2676
+ # @return [Google::Apis::ContaineranalysisV1beta1::Policy]
2677
+ attr_accessor :policy
2678
+
2679
+ def initialize(**args)
2680
+ update!(**args)
2681
+ end
2682
+
2683
+ # Update properties of this object
2684
+ def update!(**args)
2685
+ @policy = args[:policy] if args.key?(:policy)
2686
+ end
2687
+ end
2688
+
2689
+ # Verifiers (e.g. Kritis implementations) MUST verify signatures with respect to
2690
+ # the trust anchors defined in policy (e.g. a Kritis policy). Typically this
2691
+ # means that the verifier has been configured with a map from `public_key_id` to
2692
+ # public key material (and any required parameters, e.g. signing algorithm). In
2693
+ # particular, verification implementations MUST NOT treat the signature `
2694
+ # public_key_id` as anything more than a key lookup hint. The `public_key_id`
2695
+ # DOES NOT validate or authenticate a public key; it only provides a mechanism
2696
+ # for quickly selecting a public key ALREADY CONFIGURED on the verifier through
2697
+ # a trusted channel. Verification implementations MUST reject signatures in any
2698
+ # of the following circumstances: * The `public_key_id` is not recognized by the
2699
+ # verifier. * The public key that `public_key_id` refers to does not verify the
2700
+ # signature with respect to the payload. The `signature` contents SHOULD NOT be "
2701
+ # attached" (where the payload is included with the serialized `signature` bytes)
2702
+ # . Verifiers MUST ignore any "attached" payload and only verify signatures with
2703
+ # respect to explicitly provided payload (e.g. a `payload` field on the proto
2704
+ # message that holds this Signature, or the canonical serialization of the proto
2705
+ # message that holds this signature).
2706
+ class Signature
2707
+ include Google::Apis::Core::Hashable
2708
+
2709
+ # The identifier for the public key that verifies this signature. * The `
2710
+ # public_key_id` is required. * The `public_key_id` SHOULD be an RFC3986
2711
+ # conformant URI. * When possible, the `public_key_id` SHOULD be an immutable
2712
+ # reference, such as a cryptographic digest. Examples of valid `public_key_id`s:
2713
+ # OpenPGP V4 public key fingerprint: * "openpgp4fpr:
2714
+ # 74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA" See https://www.iana.org/assignments/
2715
+ # uri-schemes/prov/openpgp4fpr for more details on this scheme. RFC6920 digest-
2716
+ # named SubjectPublicKeyInfo (digest of the DER serialization): * "ni:///sha-256;
2717
+ # cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU" * "nih:///sha-256;
2718
+ # 703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5"
2719
+ # Corresponds to the JSON property `publicKeyId`
2720
+ # @return [String]
2721
+ attr_accessor :public_key_id
2722
+
2723
+ # The content of the signature, an opaque bytestring. The payload that this
2724
+ # signature verifies MUST be unambiguously provided with the Signature during
2725
+ # verification. A wrapper message might provide the payload explicitly.
2726
+ # Alternatively, a message might have a canonical serialization that can always
2727
+ # be unambiguously computed to derive the payload.
2728
+ # Corresponds to the JSON property `signature`
2729
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
2730
+ # @return [String]
2731
+ attr_accessor :signature
2732
+
2733
+ def initialize(**args)
2734
+ update!(**args)
2735
+ end
2736
+
2737
+ # Update properties of this object
2738
+ def update!(**args)
2739
+ @public_key_id = args[:public_key_id] if args.key?(:public_key_id)
2740
+ @signature = args[:signature] if args.key?(:signature)
2741
+ end
2742
+ end
2743
+
2744
+ # This defines the format used to record keys used in the software supply chain.
2745
+ # An in-toto link is attested using one or more keys defined in the in-toto
2746
+ # layout. An example of this is: ` "key_id": "
2747
+ # 776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...", "key_type": "
2748
+ # rsa", "public_key_value": "-----BEGIN PUBLIC KEY-----\nMIIBojANBgkqhkiG9w0B..."
2749
+ # , "key_scheme": "rsassa-pss-sha256" ` The format for in-toto's key definition
2750
+ # can be found in section 4.2 of the in-toto specification.
2751
+ class SigningKey
2752
+ include Google::Apis::Core::Hashable
2753
+
2754
+ # key_id is an identifier for the signing key.
2755
+ # Corresponds to the JSON property `keyId`
2756
+ # @return [String]
2757
+ attr_accessor :key_id
2758
+
2759
+ # This field contains the corresponding signature scheme. Eg: "rsassa-pss-sha256"
2760
+ # .
2761
+ # Corresponds to the JSON property `keyScheme`
2762
+ # @return [String]
2763
+ attr_accessor :key_scheme
2764
+
2765
+ # This field identifies the specific signing method. Eg: "rsa", "ed25519", and "
2766
+ # ecdsa".
2767
+ # Corresponds to the JSON property `keyType`
2768
+ # @return [String]
2769
+ attr_accessor :key_type
2770
+
2771
+ # This field contains the actual public key.
2772
+ # Corresponds to the JSON property `publicKeyValue`
2773
+ # @return [String]
2774
+ attr_accessor :public_key_value
2775
+
2776
+ def initialize(**args)
2777
+ update!(**args)
2778
+ end
2779
+
2780
+ # Update properties of this object
2781
+ def update!(**args)
2782
+ @key_id = args[:key_id] if args.key?(:key_id)
2783
+ @key_scheme = args[:key_scheme] if args.key?(:key_scheme)
2784
+ @key_type = args[:key_type] if args.key?(:key_type)
2785
+ @public_key_value = args[:public_key_value] if args.key?(:public_key_value)
2786
+ end
2787
+ end
2788
+
2789
+ # Source describes the location of the source used for the build.
2790
+ class Source
2791
+ include Google::Apis::Core::Hashable
2792
+
2793
+ # If provided, some of the source code used for the build may be found in these
2794
+ # locations, in the case where the source repository had multiple remotes or
2795
+ # submodules. This list will not include the context specified in the context
2796
+ # field.
2797
+ # Corresponds to the JSON property `additionalContexts`
2798
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::SourceContext>]
2799
+ attr_accessor :additional_contexts
2800
+
2801
+ # If provided, the input binary artifacts for the build came from this location.
2802
+ # Corresponds to the JSON property `artifactStorageSourceUri`
2803
+ # @return [String]
2804
+ attr_accessor :artifact_storage_source_uri
2805
+
2806
+ # A SourceContext is a reference to a tree of files. A SourceContext together
2807
+ # with a path point to a unique revision of a single file or directory.
2808
+ # Corresponds to the JSON property `context`
2809
+ # @return [Google::Apis::ContaineranalysisV1beta1::SourceContext]
2810
+ attr_accessor :context
2811
+
2812
+ # Hash(es) of the build source, which can be used to verify that the original
2813
+ # source integrity was maintained in the build. The keys to this map are file
2814
+ # paths used as build source and the values contain the hash values for those
2815
+ # files. If the build source came in a single package such as a gzipped tarfile (
2816
+ # .tar.gz), the FileHash will be for the single path to that file.
2817
+ # Corresponds to the JSON property `fileHashes`
2818
+ # @return [Hash<String,Google::Apis::ContaineranalysisV1beta1::FileHashes>]
2819
+ attr_accessor :file_hashes
2820
+
2821
+ def initialize(**args)
2822
+ update!(**args)
2823
+ end
2824
+
2825
+ # Update properties of this object
2826
+ def update!(**args)
2827
+ @additional_contexts = args[:additional_contexts] if args.key?(:additional_contexts)
2828
+ @artifact_storage_source_uri = args[:artifact_storage_source_uri] if args.key?(:artifact_storage_source_uri)
2829
+ @context = args[:context] if args.key?(:context)
2830
+ @file_hashes = args[:file_hashes] if args.key?(:file_hashes)
2831
+ end
2832
+ end
2833
+
2834
+ # A SourceContext is a reference to a tree of files. A SourceContext together
2835
+ # with a path point to a unique revision of a single file or directory.
2836
+ class SourceContext
2837
+ include Google::Apis::Core::Hashable
2838
+
2839
+ # A CloudRepoSourceContext denotes a particular revision in a Google Cloud
2840
+ # Source Repo.
2841
+ # Corresponds to the JSON property `cloudRepo`
2842
+ # @return [Google::Apis::ContaineranalysisV1beta1::CloudRepoSourceContext]
2843
+ attr_accessor :cloud_repo
2844
+
2845
+ # A SourceContext referring to a Gerrit project.
2846
+ # Corresponds to the JSON property `gerrit`
2847
+ # @return [Google::Apis::ContaineranalysisV1beta1::GerritSourceContext]
2848
+ attr_accessor :gerrit
2849
+
2850
+ # A GitSourceContext denotes a particular revision in a third party Git
2851
+ # repository (e.g., GitHub).
2852
+ # Corresponds to the JSON property `git`
2853
+ # @return [Google::Apis::ContaineranalysisV1beta1::GitSourceContext]
2854
+ attr_accessor :git
2855
+
2856
+ # Labels with user defined metadata.
2857
+ # Corresponds to the JSON property `labels`
2858
+ # @return [Hash<String,String>]
2859
+ attr_accessor :labels
2860
+
2861
+ def initialize(**args)
2862
+ update!(**args)
2863
+ end
2864
+
2865
+ # Update properties of this object
2866
+ def update!(**args)
2867
+ @cloud_repo = args[:cloud_repo] if args.key?(:cloud_repo)
2868
+ @gerrit = args[:gerrit] if args.key?(:gerrit)
2869
+ @git = args[:git] if args.key?(:git)
2870
+ @labels = args[:labels] if args.key?(:labels)
2871
+ end
2872
+ end
2873
+
2874
+ # The `Status` type defines a logical error model that is suitable for different
2875
+ # programming environments, including REST APIs and RPC APIs. It is used by [
2876
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
2877
+ # data: error code, error message, and error details. You can find out more
2878
+ # about this error model and how to work with it in the [API Design Guide](https:
2879
+ # //cloud.google.com/apis/design/errors).
2880
+ class Status
2881
+ include Google::Apis::Core::Hashable
2882
+
2883
+ # The status code, which should be an enum value of google.rpc.Code.
2884
+ # Corresponds to the JSON property `code`
2885
+ # @return [Fixnum]
2886
+ attr_accessor :code
2887
+
2888
+ # A list of messages that carry the error details. There is a common set of
2889
+ # message types for APIs to use.
2890
+ # Corresponds to the JSON property `details`
2891
+ # @return [Array<Hash<String,Object>>]
2892
+ attr_accessor :details
2893
+
2894
+ # A developer-facing error message, which should be in English. Any user-facing
2895
+ # error message should be localized and sent in the google.rpc.Status.details
2896
+ # field, or localized by the client.
2897
+ # Corresponds to the JSON property `message`
2898
+ # @return [String]
2899
+ attr_accessor :message
2900
+
2901
+ def initialize(**args)
2902
+ update!(**args)
2903
+ end
2904
+
2905
+ # Update properties of this object
2906
+ def update!(**args)
2907
+ @code = args[:code] if args.key?(:code)
2908
+ @details = args[:details] if args.key?(:details)
2909
+ @message = args[:message] if args.key?(:message)
2910
+ end
2911
+ end
2912
+
2913
+ # Request message for `TestIamPermissions` method.
2914
+ class TestIamPermissionsRequest
2915
+ include Google::Apis::Core::Hashable
2916
+
2917
+ # The set of permissions to check for the `resource`. Permissions with wildcards
2918
+ # (such as '*' or 'storage.*') are not allowed. For more information see [IAM
2919
+ # Overview](https://cloud.google.com/iam/docs/overview#permissions).
2920
+ # Corresponds to the JSON property `permissions`
2921
+ # @return [Array<String>]
2922
+ attr_accessor :permissions
2923
+
2924
+ def initialize(**args)
2925
+ update!(**args)
2926
+ end
2927
+
2928
+ # Update properties of this object
2929
+ def update!(**args)
2930
+ @permissions = args[:permissions] if args.key?(:permissions)
2931
+ end
2932
+ end
2933
+
2934
+ # Response message for `TestIamPermissions` method.
2935
+ class TestIamPermissionsResponse
2936
+ include Google::Apis::Core::Hashable
2937
+
2938
+ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
2939
+ # Corresponds to the JSON property `permissions`
2940
+ # @return [Array<String>]
2941
+ attr_accessor :permissions
2942
+
2943
+ def initialize(**args)
2944
+ update!(**args)
2945
+ end
2946
+
2947
+ # Update properties of this object
2948
+ def update!(**args)
2949
+ @permissions = args[:permissions] if args.key?(:permissions)
2950
+ end
2951
+ end
2952
+
2953
+ # Version contains structured information about the version of a package.
2954
+ class Version
2955
+ include Google::Apis::Core::Hashable
2956
+
2957
+ # Used to correct mistakes in the version numbering scheme.
2958
+ # Corresponds to the JSON property `epoch`
2959
+ # @return [Fixnum]
2960
+ attr_accessor :epoch
2961
+
2962
+ # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
2963
+ # Corresponds to the JSON property `kind`
2964
+ # @return [String]
2965
+ attr_accessor :kind
2966
+
2967
+ # Required only when version kind is NORMAL. The main part of the version name.
2968
+ # Corresponds to the JSON property `name`
2969
+ # @return [String]
2970
+ attr_accessor :name
2971
+
2972
+ # The iteration of the package build from the above version.
2973
+ # Corresponds to the JSON property `revision`
2974
+ # @return [String]
2975
+ attr_accessor :revision
2976
+
2977
+ def initialize(**args)
2978
+ update!(**args)
2979
+ end
2980
+
2981
+ # Update properties of this object
2982
+ def update!(**args)
2983
+ @epoch = args[:epoch] if args.key?(:epoch)
2984
+ @kind = args[:kind] if args.key?(:kind)
2985
+ @name = args[:name] if args.key?(:name)
2986
+ @revision = args[:revision] if args.key?(:revision)
2987
+ end
2988
+ end
2989
+
2990
+ # Vulnerability provides metadata about a security vulnerability in a Note.
2991
+ class Vulnerability
2992
+ include Google::Apis::Core::Hashable
2993
+
2994
+ # The CVSS score for this vulnerability.
2995
+ # Corresponds to the JSON property `cvssScore`
2996
+ # @return [Float]
2997
+ attr_accessor :cvss_score
2998
+
2999
+ # Common Vulnerability Scoring System version 3. For details, see https://www.
3000
+ # first.org/cvss/specification-document
3001
+ # Corresponds to the JSON property `cvssV3`
3002
+ # @return [Google::Apis::ContaineranalysisV1beta1::CvsSv3]
3003
+ attr_accessor :cvss_v3
3004
+
3005
+ # All information about the package to specifically identify this vulnerability.
3006
+ # One entry per (version range and cpe_uri) the package vulnerability has
3007
+ # manifested in.
3008
+ # Corresponds to the JSON property `details`
3009
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::Detail>]
3010
+ attr_accessor :details
3011
+
3012
+ # Note provider assigned impact of the vulnerability.
3013
+ # Corresponds to the JSON property `severity`
3014
+ # @return [String]
3015
+ attr_accessor :severity
3016
+
3017
+ # The time this information was last changed at the source. This is an upstream
3018
+ # timestamp from the underlying information source - e.g. Ubuntu security
3019
+ # tracker.
3020
+ # Corresponds to the JSON property `sourceUpdateTime`
3021
+ # @return [String]
3022
+ attr_accessor :source_update_time
3023
+
3024
+ # Windows details get their own format because the information format and model
3025
+ # don't match a normal detail. Specifically Windows updates are done as patches,
3026
+ # thus Windows vulnerabilities really are a missing package, rather than a
3027
+ # package being at an incorrect version.
3028
+ # Corresponds to the JSON property `windowsDetails`
3029
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::WindowsDetail>]
3030
+ attr_accessor :windows_details
3031
+
3032
+ def initialize(**args)
3033
+ update!(**args)
3034
+ end
3035
+
3036
+ # Update properties of this object
3037
+ def update!(**args)
3038
+ @cvss_score = args[:cvss_score] if args.key?(:cvss_score)
3039
+ @cvss_v3 = args[:cvss_v3] if args.key?(:cvss_v3)
3040
+ @details = args[:details] if args.key?(:details)
3041
+ @severity = args[:severity] if args.key?(:severity)
3042
+ @source_update_time = args[:source_update_time] if args.key?(:source_update_time)
3043
+ @windows_details = args[:windows_details] if args.key?(:windows_details)
3044
+ end
3045
+ end
3046
+
3047
+ # The location of the vulnerability.
3048
+ class VulnerabilityLocation
3049
+ include Google::Apis::Core::Hashable
3050
+
3051
+ # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/)
3052
+ # format. Examples include distro or storage location for vulnerable jar.
3053
+ # Corresponds to the JSON property `cpeUri`
3054
+ # @return [String]
3055
+ attr_accessor :cpe_uri
3056
+
3057
+ # Required. The package being described.
3058
+ # Corresponds to the JSON property `package`
3059
+ # @return [String]
3060
+ attr_accessor :package
3061
+
3062
+ # Version contains structured information about the version of a package.
3063
+ # Corresponds to the JSON property `version`
3064
+ # @return [Google::Apis::ContaineranalysisV1beta1::Version]
3065
+ attr_accessor :version
3066
+
3067
+ def initialize(**args)
3068
+ update!(**args)
3069
+ end
3070
+
3071
+ # Update properties of this object
3072
+ def update!(**args)
3073
+ @cpe_uri = args[:cpe_uri] if args.key?(:cpe_uri)
3074
+ @package = args[:package] if args.key?(:package)
3075
+ @version = args[:version] if args.key?(:version)
3076
+ end
3077
+ end
3078
+
3079
+ # A summary of how many vulnerability occurrences there are per resource and
3080
+ # severity type.
3081
+ class VulnerabilityOccurrencesSummary
3082
+ include Google::Apis::Core::Hashable
3083
+
3084
+ # A listing by resource of the number of fixable and total vulnerabilities.
3085
+ # Corresponds to the JSON property `counts`
3086
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::FixableTotalByDigest>]
3087
+ attr_accessor :counts
3088
+
3089
+ def initialize(**args)
3090
+ update!(**args)
3091
+ end
3092
+
3093
+ # Update properties of this object
3094
+ def update!(**args)
3095
+ @counts = args[:counts] if args.key?(:counts)
3096
+ end
3097
+ end
3098
+
3099
+ #
3100
+ class WindowsDetail
3101
+ include Google::Apis::Core::Hashable
3102
+
3103
+ # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in
3104
+ # which the vulnerability manifests. Examples include distro or storage location
3105
+ # for vulnerable jar.
3106
+ # Corresponds to the JSON property `cpeUri`
3107
+ # @return [String]
3108
+ attr_accessor :cpe_uri
3109
+
3110
+ # The description of the vulnerability.
3111
+ # Corresponds to the JSON property `description`
3112
+ # @return [String]
3113
+ attr_accessor :description
3114
+
3115
+ # Required. The names of the KBs which have hotfixes to mitigate this
3116
+ # vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs)
3117
+ # that mitigate a given vulnerability. Currently any listed kb's presence is
3118
+ # considered a fix.
3119
+ # Corresponds to the JSON property `fixingKbs`
3120
+ # @return [Array<Google::Apis::ContaineranalysisV1beta1::KnowledgeBase>]
3121
+ attr_accessor :fixing_kbs
3122
+
3123
+ # Required. The name of the vulnerability.
3124
+ # Corresponds to the JSON property `name`
3125
+ # @return [String]
3126
+ attr_accessor :name
3127
+
3128
+ def initialize(**args)
3129
+ update!(**args)
3130
+ end
3131
+
3132
+ # Update properties of this object
3133
+ def update!(**args)
3134
+ @cpe_uri = args[:cpe_uri] if args.key?(:cpe_uri)
3135
+ @description = args[:description] if args.key?(:description)
3136
+ @fixing_kbs = args[:fixing_kbs] if args.key?(:fixing_kbs)
3137
+ @name = args[:name] if args.key?(:name)
3138
+ end
3139
+ end
3140
+ end
3141
+ end
3142
+ end