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